Beispiel #1
0
    def _create_algorithm_demo(self):
        cases_image = grandchallenge.cases.models.Image(
            name="test_image.mha",
            modality=ImagingModality.objects.get(modality="MR"),
            width=128,
            height=128,
            color_space="RGB",
        )
        cases_image.save()

        algorithm = Algorithm.objects.create(title="Test Algorithm",
                                             logo=get_temporary_image())
        algorithm.editors_group.user_set.add(self.users["algorithm"],
                                             self.users["demo"])
        algorithm.users_group.user_set.add(self.users["algorithmuser"])

        algorithm_image = AlgorithmImage(creator=self.users["algorithm"],
                                         algorithm=algorithm)
        container = ContentFile(base64.b64decode(b""))
        algorithm_image.image.save("test_algorithm.tar", container)
        algorithm_image.save()

        algorithms_job = grandchallenge.algorithms.models.Job(
            creator=self.users["algorithm"],
            algorithm_image=algorithm_image,
            image=cases_image,
            status=Evaluation.SUCCESS,
        )
        algorithms_job.save()
        algorithms_job.create_result(result={"cancer_score": 0.5})
    def _create_io_algorithm(self):
        algorithm = Algorithm.objects.create(
            title="Test Algorithm IO",
            logo=get_temporary_image(),
            use_flexible_inputs=True,
        )
        algorithm.editors_group.user_set.add(
            self.users["algorithm"], self.users["demo"]
        )
        algorithm.users_group.user_set.add(self.users["algorithmuser"])

        algorithm_image = AlgorithmImage(
            creator=self.users["algorithm"], algorithm=algorithm, ready=True
        )
        algorithm_image_path = (
            "tests/resources/gc_demo_algorithm/algorithm_io.tar"
        )
        if os.path.exists(algorithm_image_path):
            with open(
                os.path.join(settings.SITE_ROOT, algorithm_image_path,), "rb",
            ) as f:
                container = File(f)
                algorithm_image.image.save("algorithm_io.tar", container)

        algorithm_image.save()
Beispiel #3
0
    def _create_algorithm_demo(self):
        cases_image = grandchallenge.cases.models.Image(
            name="test_image.mha",
            modality=ImagingModality.objects.get(modality="MR"),
            width=128,
            height=128,
            color_space="RGB",
        )
        cases_image.save()

        algorithm = Algorithm.objects.create(title="Test Algorithm",
                                             logo=get_temporary_image())
        algorithm.editors_group.user_set.add(self.users["algorithm"],
                                             self.users["demo"])
        algorithm.users_group.user_set.add(self.users["algorithmuser"])
        algorithm.result_template = (
            "{% for key, value in result_dict.metrics.items() -%}"
            "{{ key }}  {{ value }}"
            "{% endfor %}")
        algorithm_image = AlgorithmImage(creator=self.users["algorithm"],
                                         algorithm=algorithm)
        if os.path.isfile(settings.DEMO_ALGORITHM_IMAGE_PATH):
            with open(settings.DEMO_ALGORITHM_IMAGE_PATH, "rb") as f:
                container = File(f)
                algorithm_image.image.save("test_algorithm.tar", container)
        else:
            container = ContentFile(base64.b64decode(b""))
            algorithm_image.image.save("test_algorithm.tar", container)

        algorithm_image.save()

        for res in [
            {
                "cancer_score": 0.5
            },
            {
                "cancer_score": 0.6
            },
            {
                "cancer_score": 0.7
            },
        ]:
            self.create_job_result(algorithm_image, cases_image, res)
Beispiel #4
0
def _create_algorithm(*, creator, inputs, outputs, suffix):
    algorithm = Algorithm.objects.create(
        title=f"Test Algorithm Evaluation {suffix}",
        logo=create_uploaded_image(),
    )
    algorithm.inputs.set(inputs)
    algorithm.outputs.set(outputs)
    algorithm.add_editor(creator)

    algorithm_image = AlgorithmImage(creator=creator, algorithm=algorithm)

    with _uploaded_container_image() as container:
        algorithm_image.image.save("algorithm_io.tar", container)
def _create_algorithm_demo(users):
    cases_image = Image(
        name="test_image.mha",
        modality=ImagingModality.objects.get(modality="MR"),
        width=128,
        height=128,
        color_space="RGB",
    )
    cases_image.save()

    algorithm = Algorithm.objects.create(title="Test Algorithm",
                                         logo=create_uploaded_image())
    algorithm.editors_group.user_set.add(users["algorithm"], users["demo"])
    algorithm.users_group.user_set.add(users["algorithmuser"])
    algorithm.result_template = (
        "{% for key, value in results.metrics.items() -%}"
        "{{ key }}  {{ value }}"
        "{% endfor %}")
    detection_interface = ComponentInterface(
        store_in_database=False,
        relative_path="detection_results.json",
        slug="detection-results",
        title="Detection Results",
        kind=ComponentInterface.Kind.ANY,
    )
    detection_interface.save()
    algorithm.outputs.add(detection_interface)
    algorithm_image = AlgorithmImage(creator=users["algorithm"],
                                     algorithm=algorithm)

    if os.path.isfile(settings.DEMO_ALGORITHM_IMAGE_PATH):
        with open(settings.DEMO_ALGORITHM_IMAGE_PATH, "rb") as f:
            container = File(f)
            algorithm_image.image.save("test_algorithm.tar", container)
            algorithm_image.image_sha256 = settings.DEMO_ALGORITHM_SHA256
    else:
        container = ContentFile(base64.b64decode(b""))
        algorithm_image.image.save("test_algorithm.tar", container)

    algorithm_image.save()

    results = [
        {
            "cancer_score": 0.5
        },
        {
            "cancer_score": 0.6
        },
        {
            "cancer_score": 0.7
        },
    ]

    detections = [
        {
            "detected points": [{
                "type": "Point",
                "start": [0, 1, 2],
                "end": [3, 4, 5]
            }]
        },
        {
            "detected points": [{
                "type": "Point",
                "start": [6, 7, 8],
                "end": [9, 10, 11]
            }]
        },
        {
            "detected points": [{
                "type": "Point",
                "start": [12, 13, 14],
                "end": [15, 16, 17]
            }]
        },
    ]
    for res, det in zip(results, detections):
        _create_job_result(users, algorithm_image, cases_image, res, det)