Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
vantage6 documentation
Light Logo Dark Logo
  • Overview
  • Introduction
  • Architecture
  • Quickstart
  • Available algorithms
  • 1. User guide
    • 1.1. User interface
    • 1.2. Python client
    • 1.3. R client
    • 1.4. API
  • 2. Node admin guide
    • 2.1. Introduction
    • 2.2. Requirements
    • 2.3. Install
    • 2.4. Use
    • 2.5. Configure
  • 3. Server admin guide
    • 3.1. Introduction
    • 3.2. Requirements
    • 3.3. Install
    • 3.4. Deploy
    • 3.5. Install optional components
    • 3.6. Use
    • 3.7. Configure
    • 3.8. Permission management
    • 3.9. Shell
  • 4. Algorithm store admin guide
    • 4.1. Introduction
    • 4.2. Store processes
    • 4.3. Requirements
    • 4.4. Install
    • 4.5. Deploy
    • 4.6. Use
    • 4.7. Permissions
    • 4.8. Configure
    • 4.9. Recommended algorithm store policies
  • 5. Algorithm Development
    • 5.1. Algorithm concepts
    • 5.2. Algorithm development step-by-step guide
    • 5.3. Algorithm code structure
    • 5.4. Production-ready algorithm guidelines
    • 5.5. Classic Tutorial
  • 6. Feature descriptions
    • 6.1. Server features
      • 6.1.1. Two-factor authentication
      • 6.1.2. Horizontal scaling
      • 6.1.3. API response structure
    • 6.2. Node features
      • 6.2.1. Whitelisting
      • 6.2.2. SSH Tunnel
      • 6.2.3. Linked docker containers
    • 6.3. Algorithm features
      • 6.3.1. Run context
      • 6.3.2. Algorithm wrappers
      • 6.3.3. Algorithm container isolation
    • 6.4. Communication between components
      • 6.4.1. SocketIO connection
      • 6.4.2. End to end encryption
      • 6.4.3. Algorithm-to-algorithm VPN comunication
      • 6.4.4. Blob Storage
  • 7. Developer community
    • 7.1. Contribute
    • 7.2. Documentation
    • 7.3. Release
  • 8. Function documentation
    • 8.1. vantage6.cli
      • 8.1.1. vantage6.cli.cli
      • 8.1.2. vantage6.cli.configuration_manager
        • vantage6.cli.configuration_manager.NodeConfiguration
        • vantage6.cli.configuration_manager.NodeConfigurationManager
        • vantage6.cli.configuration_manager.ServerConfiguration
        • vantage6.cli.configuration_manager.ServerConfigurationManager
        • vantage6.cli.configuration_manager.TestConfiguration
        • vantage6.cli.configuration_manager.TestingConfigurationManager
      • 8.1.3. vantage6.cli.configuration_wizard
        • vantage6.cli.configuration_wizard.algo_store_configuration_questionaire
        • vantage6.cli.configuration_wizard.configuration_wizard
        • vantage6.cli.configuration_wizard.node_configuration_questionaire
        • vantage6.cli.configuration_wizard.select_configuration_questionaire
        • vantage6.cli.configuration_wizard.server_configuration_questionaire
      • 8.1.4. vantage6.cli.context
        • vantage6.cli.context.get_context
        • vantage6.cli.context.select_context_class
        • vantage6.cli.context.algorithm_store
          • vantage6.cli.context.algorithm_store.AlgorithmStoreContext
        • vantage6.cli.context.base_server
          • vantage6.cli.context.base_server.BaseServerContext
        • vantage6.cli.context.node
          • vantage6.cli.context.node.NodeContext
        • vantage6.cli.context.server
          • vantage6.cli.context.server.ServerContext
      • 8.1.5. vantage6.cli.globals
        • vantage6.cli.globals.AlgoStoreGlobals
        • vantage6.cli.globals.DefaultDatasets
        • vantage6.cli.globals.ServerGlobals
        • vantage6.cli.globals.ServerType
      • 8.1.6. vantage6.cli.rabbitmq
        • vantage6.cli.rabbitmq.definitions
        • vantage6.cli.rabbitmq.queue_manager
          • vantage6.cli.rabbitmq.queue_manager.RabbitMQManager
      • 8.1.7. vantage6.cli.utils
        • vantage6.cli.utils.check_config_name_allowed
        • vantage6.cli.utils.check_if_docker_daemon_is_running
        • vantage6.cli.utils.prompt_config_name
        • vantage6.cli.utils.remove_file
    • 8.2. vantage6.client
      • 8.2.1. vantage6.client.Client
      • 8.2.2. vantage6.client.UserClient
      • 8.2.3. vantage6.client.exceptions
        • vantage6.client.exceptions.DeserializationException
      • 8.2.4. vantage6.client.filter
        • vantage6.client.filter.filter_dict_keys
        • vantage6.client.filter.filter_dicts_by_values
        • vantage6.client.filter.filter_dicts_from_results
        • vantage6.client.filter.filter_dicts_keys
        • vantage6.client.filter.filter_dicts_on_values
        • vantage6.client.filter.filter_keys_from_result
        • vantage6.client.filter.filter_keys_from_results
        • vantage6.client.filter.post_filtering
      • 8.2.5. vantage6.client.subclients
        • vantage6.client.subclients.store
          • vantage6.client.subclients.store.algorithm
            • vantage6.client.subclients.store.algorithm.AlgorithmSubClient
          • vantage6.client.subclients.store.algorithm_store
            • vantage6.client.subclients.store.algorithm_store.AlgorithmStoreSubClient
          • vantage6.client.subclients.store.policy
            • vantage6.client.subclients.store.policy.PolicySubClient
          • vantage6.client.subclients.store.review
            • vantage6.client.subclients.store.review.ReviewSubClient
          • vantage6.client.subclients.store.role
            • vantage6.client.subclients.store.role.StoreRoleSubClient
          • vantage6.client.subclients.store.rule
            • vantage6.client.subclients.store.rule.StoreRuleSubClient
          • vantage6.client.subclients.store.user
            • vantage6.client.subclients.store.user.StoreUserSubClient
        • vantage6.client.subclients.study
          • vantage6.client.subclients.study.StudySubClient
      • 8.2.6. vantage6.client.utils
        • vantage6.client.utils.LogLevel
    • 8.3. vantage6.algorithm.client
      • 8.3.1. vantage6.algorithm.client.AlgorithmClient
    • 8.4. vantage6.algorithm.tools
      • 8.4.1. vantage6.algorithm.tools.decorators
        • vantage6.algorithm.tools.decorators.algorithm_client
        • vantage6.algorithm.tools.decorators.data
        • vantage6.algorithm.tools.decorators.database_connection
        • vantage6.algorithm.tools.decorators.get_ohdsi_metadata
        • vantage6.algorithm.tools.decorators.metadata
        • vantage6.algorithm.tools.decorators.OHDSIMetaData
        • vantage6.algorithm.tools.decorators.RunMetaData
      • 8.4.2. vantage6.algorithm.tools.exceptions
        • vantage6.algorithm.tools.exceptions.AlgorithmError
        • vantage6.algorithm.tools.exceptions.AlgorithmExecutionError
        • vantage6.algorithm.tools.exceptions.AlgorithmInitializationError
        • vantage6.algorithm.tools.exceptions.AlgorithmModuleNotFoundError
        • vantage6.algorithm.tools.exceptions.AlgorithmRuntimeError
        • vantage6.algorithm.tools.exceptions.ClientError
        • vantage6.algorithm.tools.exceptions.CollectOrganizationError
        • vantage6.algorithm.tools.exceptions.CollectResultsError
        • vantage6.algorithm.tools.exceptions.ConvergenceError
        • vantage6.algorithm.tools.exceptions.DataError
        • vantage6.algorithm.tools.exceptions.DataReadError
        • vantage6.algorithm.tools.exceptions.DataTypeError
        • vantage6.algorithm.tools.exceptions.DeserializationError
        • vantage6.algorithm.tools.exceptions.DeserializationException
        • vantage6.algorithm.tools.exceptions.EnvironmentVariableError
        • vantage6.algorithm.tools.exceptions.EnvironmentVariableNotFoundError
        • vantage6.algorithm.tools.exceptions.InputError
        • vantage6.algorithm.tools.exceptions.MaxIterationsReached
        • vantage6.algorithm.tools.exceptions.MethodNotFoundError
        • vantage6.algorithm.tools.exceptions.NodePermissionException
        • vantage6.algorithm.tools.exceptions.PrivacyThresholdViolation
        • vantage6.algorithm.tools.exceptions.PrivacyViolation
        • vantage6.algorithm.tools.exceptions.SubtakCreationError
        • vantage6.algorithm.tools.exceptions.UserInputError
      • 8.4.3. vantage6.algorithm.tools.mock_client
        • vantage6.algorithm.tools.mock_client.MockAlgorithmClient
      • 8.4.4. vantage6.algorithm.tools.preprocessing
        • vantage6.algorithm.tools.preprocessing.preprocess_data
        • vantage6.algorithm.tools.preprocessing.functions
          • vantage6.algorithm.tools.preprocessing.functions.dummy_preprocess
          • vantage6.algorithm.tools.preprocessing.functions.filter_range
      • 8.4.5. vantage6.algorithm.tools.util
        • vantage6.algorithm.tools.util.check_envvar_value_positive
        • vantage6.algorithm.tools.util.error
        • vantage6.algorithm.tools.util.get_env_var
        • vantage6.algorithm.tools.util.info
        • vantage6.algorithm.tools.util.warn
      • 8.4.6. vantage6.algorithm.tools.wrap
        • vantage6.algorithm.tools.wrap.load_input
        • vantage6.algorithm.tools.wrap.wrap_algorithm
      • 8.4.7. vantage6.algorithm.tools.wrappers
        • vantage6.algorithm.tools.wrappers.get_column_names
        • vantage6.algorithm.tools.wrappers.load_csv_data
        • vantage6.algorithm.tools.wrappers.load_data
        • vantage6.algorithm.tools.wrappers.load_excel_data
        • vantage6.algorithm.tools.wrappers.load_parquet_data
        • vantage6.algorithm.tools.wrappers.load_sparql_data
        • vantage6.algorithm.tools.wrappers.load_sql_data
        • vantage6.algorithm.tools.wrappers.DatabaseType
    • 8.5. vantage6.backend.common
      • 8.5.1. vantage6.backend.common.get_server_url
      • 8.5.2. vantage6.backend.common.base
        • vantage6.backend.common.base.BaseDatabase
        • vantage6.backend.common.base.BaseDatabaseSessionManager
        • vantage6.backend.common.base.BaseModelBase
      • 8.5.3. vantage6.backend.common.globals
      • 8.5.4. vantage6.backend.common.jsonable
        • vantage6.backend.common.jsonable.jsonable
      • 8.5.5. vantage6.backend.common.metrics
        • vantage6.backend.common.metrics.start_prometheus_exporter
        • vantage6.backend.common.metrics.Metric
        • vantage6.backend.common.metrics.Metrics
      • 8.5.6. vantage6.backend.common.permission
        • vantage6.backend.common.permission.PermissionManagerBase
        • vantage6.backend.common.permission.RuleCollectionBase
        • vantage6.backend.common.permission.RuleNeed
      • 8.5.7. vantage6.backend.common.permission_models
        • vantage6.backend.common.permission_models.RoleInterface
        • vantage6.backend.common.permission_models.RuleInterface
      • 8.5.8. vantage6.backend.common.resource
        • vantage6.backend.common.resource.error_handling
          • vantage6.backend.common.resource.error_handling.handle_exceptions
          • vantage6.backend.common.resource.error_handling.BadRequestError
          • vantage6.backend.common.resource.error_handling.NotFoundError
          • vantage6.backend.common.resource.error_handling.UnauthorizedError
        • vantage6.backend.common.resource.input_schema
          • vantage6.backend.common.resource.input_schema.validate_name
          • vantage6.backend.common.resource.input_schema.RoleInputSchema
          • vantage6.backend.common.resource.input_schema.ServerRoleInputSchema
        • vantage6.backend.common.resource.pagination
          • vantage6.backend.common.resource.pagination.Page
          • vantage6.backend.common.resource.pagination.Pagination
        • vantage6.backend.common.resource.role
          • vantage6.backend.common.resource.role.apply_user_filter
          • vantage6.backend.common.resource.role.can_delete_dependents
          • vantage6.backend.common.resource.role.check_default_role
          • vantage6.backend.common.resource.role.filter_by_attribute
          • vantage6.backend.common.resource.role.get_role
          • vantage6.backend.common.resource.role.get_rule
          • vantage6.backend.common.resource.role.get_rules
          • vantage6.backend.common.resource.role.get_rules_from_ids
          • vantage6.backend.common.resource.role.update_role
          • vantage6.backend.common.resource.role.validate_request_body
          • vantage6.backend.common.resource.role.validate_user_exists
      • 8.5.9. vantage6.backend.common.session
      • 8.5.10. vantage6.backend.common.test_context
        • vantage6.backend.common.test_context.TestContext
    • 8.6. vantage6.common
      • 8.6.1. vantage6.common.base64s_to_bytes
      • 8.6.2. vantage6.common.bytes_to_base64s
      • 8.6.3. vantage6.common.debug
      • 8.6.4. vantage6.common.echo
      • 8.6.5. vantage6.common.ensure_config_dir_writable
      • 8.6.6. vantage6.common.error
      • 8.6.7. vantage6.common.generate_apikey
      • 8.6.8. vantage6.common.get_config_path
      • 8.6.9. vantage6.common.get_database_config
      • 8.6.10. vantage6.common.info
      • 8.6.11. vantage6.common.is_ip_address
      • 8.6.12. vantage6.common.logger_name
      • 8.6.13. vantage6.common.split_rabbitmq_uri
      • 8.6.14. vantage6.common.warning
      • 8.6.15. vantage6.common.ClickLogger
      • 8.6.16. vantage6.common.Singleton
      • 8.6.17. vantage6.common.WhoAmI
      • 8.6.18. vantage6.common.colors
        • vantage6.common.colors.ColorStreamHandler
      • 8.6.19. vantage6.common.configuration_manager
        • vantage6.common.configuration_manager.Configuration
        • vantage6.common.configuration_manager.ConfigurationManager
      • 8.6.20. vantage6.common.context
        • vantage6.common.context.AppContext
      • 8.6.21. vantage6.common.docker
        • vantage6.common.docker.addons
          • vantage6.common.docker.addons.check_docker_running
          • vantage6.common.docker.addons.delete_network
          • vantage6.common.docker.addons.delete_volume_if_exists
          • vantage6.common.docker.addons.get_container
          • vantage6.common.docker.addons.get_digest
          • vantage6.common.docker.addons.get_image_name_wo_tag
          • vantage6.common.docker.addons.get_network
          • vantage6.common.docker.addons.get_networks_of_container
          • vantage6.common.docker.addons.get_num_nonempty_networks
          • vantage6.common.docker.addons.get_server_config_name
          • vantage6.common.docker.addons.parse_image_name
          • vantage6.common.docker.addons.pull_image
          • vantage6.common.docker.addons.remove_container
          • vantage6.common.docker.addons.remove_container_if_exists
          • vantage6.common.docker.addons.running_in_docker
          • vantage6.common.docker.addons.stop_container
          • vantage6.common.docker.addons.ContainerKillListener
        • vantage6.common.docker.network_manager
          • vantage6.common.docker.network_manager.remove_subnet_mask
          • vantage6.common.docker.network_manager.NetworkManager
      • 8.6.22. vantage6.common.encryption
        • vantage6.common.encryption.CryptorBase
        • vantage6.common.encryption.DummyCryptor
        • vantage6.common.encryption.RSACryptor
      • 8.6.23. vantage6.common.enum
        • vantage6.common.enum.AlgorithmViewPolicies
        • vantage6.common.enum.StorePolicies
      • 8.6.24. vantage6.common.exceptions
        • vantage6.common.exceptions.AuthenticationException
      • 8.6.25. vantage6.common.globals
        • vantage6.common.globals.AuthStatus
        • vantage6.common.globals.InstanceType
        • vantage6.common.globals.NodePolicy
        • vantage6.common.globals.Ports
      • 8.6.26. vantage6.common.log
        • vantage6.common.log.get_file_logger
        • vantage6.common.log.FileMetadata
        • vantage6.common.log.OwnershipPreservingRotatingFileHandler
      • 8.6.27. vantage6.common.serialization
        • vantage6.common.serialization.serialize
      • 8.6.28. vantage6.common.task_status
        • vantage6.common.task_status.has_task_failed
        • vantage6.common.task_status.has_task_finished
        • vantage6.common.task_status.TaskStatus
      • 8.6.29. vantage6.common.utest
        • vantage6.common.utest.find_test_packages
        • vantage6.common.utest.find_tests
        • vantage6.common.utest.run
        • vantage6.common.utest.run_tests
        • vantage6.common.utest.TestResult
        • vantage6.common.utest.TestRunner
  • 9. Glossary
  • Release notes
  • Partners
Back to top
View this page

4.9. Recommended algorithm store policiesΒΆ

Setting up an algorithm store is useful to collect all algorithms that are relevant to your project. By having an algorithm store, you can choose to only make algorithms from this store available to the researchers in your project.

The algorithm store allows for the definition of several policies around algorithm review. The following policies are recommended when using the algorithm on sensitive data:

  • Each algorithm must be reviewed by at least two reviewers.

  • The reviewers must not be involved in the development of the algorithm.

  • At least one reviewer is a member of a different organization than the developer.

  • If the developer also has the store manager role, they should not be allowed to assign reviews for their own algorithms.

  • If a store manager also has the reviewer role, they may be allowed to assign themselves as a reviewer.

To ascertain that these policies are followed, they can be enforced by the algorithm store wherever possible. For instance, if an algorithm must be reviewed by at least two reviewers, an algorithm will simply not become available when just a single reviewer approves the algorithm. However, not all policies can be fully enforced from the software: if developers A and B collaborate on an algorithm, and A submits it, the algorithm store does not know that B was involved in developing the algorithm, so it will not be able to prevent assignment of B as a reviewer.

Together, the recommended policies ensure that at least three authenticated researchers (a developer and two reviewers) of at least two different institutes in your project must be involved to approve an algorithm. By involving three trusted researchers in the process, the risk of approving an inadequate algorithm is minimized.

Note

The policies above could be implemented in the algorithm store configuration file as follows:

policies:
    min_reviewers: 2
    assign_review_own_algorithm: false
    min_reviewing_organizations: 2
    # ... <other policies>
Next
5. Algorithm Development
Previous
4.8. Configure
Copyright © 2022 vantage6
Made with Sphinx and @pradyunsg's Furo