Exemplo n.º 1
0
def load_rt_staff_removal():
    task_class = RTStafflineRemovalTask

    if not Job.objects.filter(job_name=task_class.name).exists():
        j = Job(
            job_name=task_class.name,
            author="Deepanjan Roy",
            description=
            "Removes the staff lines usign Roach and Tatem Staffline removal algorithm.",
            input_types={
                "default": None,
                "has_default": False,
                "list_of": False,
                "pixel_types": [
                    ONEBIT,
                ],
                "name": "input"
            },
            output_types={
                "default": None,
                "has_default": False,
                "list_of": False,
                "pixel_types": [
                    ONEBIT,
                ],
                "name": "output"
            },
            settings=task_class.settings,
            enabled=True,
            category="Staff Removal",
            interactive=False)

        j.save()
Exemplo n.º 2
0
def load_dummy_job():
    name = 'rodan.jobs.devel.dummy_job'
    if not Job.objects.filter(job_name=name).exists():
        j = Job(job_name=name,
                author="Andrew Hankinson",
                description=
                "A Dummy Job for testing the Job loading and workflow system",
                input_types={
                    "default": None,
                    "has_default": False,
                    "list_of": False,
                    "pixel_types": (1, ),
                    "name": "input"
                },
                output_types={
                    "default": None,
                    "has_default": False,
                    "list_of": False,
                    "pixel_types": (1, ),
                    "name": "output"
                },
                settings=[{}],
                enabled=True,
                category="Dummy",
                interactive=False)
        j.save()
Exemplo n.º 3
0
def load_segmentation():
    task_class = SegmentationTask

    if not Job.objects.filter(job_name=task_class.name).exists():
        j = Job(
            job_name=task_class.name,
            author="Deepanjan Roy",
            description=
            "Finds the staves using Miyao Staff Finder and masks out everything else.",
            input_types={
                "default": None,
                "has_default": False,
                "list_of": False,
                "pixel_types": (ONEBIT, ),
                "name": "input"
            },
            output_types={
                "default": None,
                "has_default": False,
                "list_of": False,
                "pixel_types": (ONEBIT, ),
                "name": "output"
            },
            settings=task_class.settings,
            enabled=True,
            category="Segmentation",
            interactive=True)

        j.save()
Exemplo n.º 4
0
def load_pitch_finder():
    task_class = PitchFindingTask

    if not Job.objects.filter(job_name=task_class.name).exists():
        j = Job(
            job_name=task_class.name,
            author="Deepanjan Roy",
            description=
            "Classifies the neumes detected in the page using the classifier interface.",
            input_types={
                "default": None,
                "has_default": False,
                "list_of": False,
                "pixel_types": (GAMERA_XML, ),
                "name": "input"
            },
            output_types={
                "default": None,
                "has_default": False,
                "list_of": False,
                "pixel_types": (MEI, ),
                "name": "output"
            },
            settings=task_class.settings,
            enabled=True,
            category="Pitch Finding",
            interactive=False)

        j.save()
Exemplo n.º 5
0
def load_auto_border_removal():
    task_class = AutoBorderRemovalTask

    if not Job.objects.filter(job_name=task_class.name).exists():
        j = Job(
            job_name=task_class.name,
            author="Deepanjan Roy",
            description=
            "Automatically tries to remove the border of a page. Non-interactive.",
            input_types={
                "default": None,
                "has_default": False,
                "list_of": False,
                "pixel_types": [GREYSCALE, ONEBIT, RGB],
                "name": "input"
            },
            output_types={
                "default": None,
                "has_default": False,
                "list_of": False,
                "pixel_types": [GREYSCALE, ONEBIT, RGB],
                "name": "output"
            },
            settings=task_class.settings,
            enabled=True,
            category="Border Removal",
            interactive=False)
        j.save()
Exemplo n.º 6
0
def load_crop_border_removal():
    task_class = CropBorderRemovalTask

    if not Job.objects.filter(job_name=task_class.name).exists():
        j = Job(job_name=task_class.name,
                author="Deepanjan Roy",
                description=
                "Manual masking crop. Uses the crop interface. Interactive.",
                input_types={
                    "default": None,
                    "has_default": False,
                    "list_of": False,
                    "pixel_types": [GREYSCALE, ONEBIT, RGB],
                    "name": "input"
                },
                output_types={
                    "default": None,
                    "has_default": False,
                    "list_of": False,
                    "pixel_types": [GREYSCALE, ONEBIT, RGB],
                    "name": "output"
                },
                settings=task_class.settings,
                enabled=True,
                category="Border Removal",
                interactive=True)

        j.save()
Exemplo n.º 7
0
def load_poly_mask():
    task_class = PolyMaskTask

    if not Job.objects.filter(job_name=task_class.name).exists():
        j = Job(job_name=task_class.name,
                author="Deepanjan Roy",
                description="TO DO",
                input_types={
                    "default": None,
                    "has_default": False,
                    "list_of": False,
                    "pixel_types": (ONEBIT, ),
                    "name": "input"
                },
                output_types={
                    "default": None,
                    "has_default": False,
                    "list_of": False,
                    "pixel_types": (ONEBIT, ),
                    "name": "output"
                },
                settings=task_class.settings,
                enabled=True,
                category="Border Removal",
                interactive=True)

        j.save()
Exemplo n.º 8
0
def load_segmentation():
    task_class = PitchCorrectionTask

    if not Job.objects.filter(job_name=task_class.name).exists():
        j = Job(job_name=task_class.name,
                author="Deepanjan Roy",
                description="Interactive pitch correction using Neon.",
                input_types={
                    "default": None,
                    "has_default": False,
                    "list_of": False,
                    "pixel_types": (MEI, ),
                    "name": "input"
                },
                output_types={
                    "default": None,
                    "has_default": False,
                    "list_of": False,
                    "pixel_types": (MEI, ),
                    "name": "output"
                },
                settings=task_class.settings,
                enabled=True,
                category="Pitch Correction",
                interactive=True)

        j.save()
Exemplo n.º 9
0
def load_module():
    job = Job.objects.filter(job_name=JOB_NAME)
    if job.exists():
        return None
    else:
        j = Job(
            job_name=JOB_NAME,
            author="Andrew Hankinson",
            description=
            "Converts an image to a JPEG2000 image suitable for display in Diva",
            input_types={
                "default": None,
                "has_default": False,
                "list_of": False,
                "pixel_types": [3],
                "name": None
            },
            output_types={
                "default": None,
                "has_default": False,
                "list_of": False,
                "pixel_types": [7],
                "name": "output"
            },
            settings={},
            enabled=True,
            category="Conversion",
            interactive=False)

        j.save()
Exemplo n.º 10
0
def load_pixel_segment():
    task_class = PixelSegmentTask

    if not Job.objects.filter(job_name=task_class.name).exists():
        j = Job(job_name=task_class.name,
                author="Ryan Bannon",
                description="TO DO",
                input_types={
                    "default": None,
                    "has_default": False,
                    "list_of": False,
                    "pixel_types": (RGB, ),
                    "name": "input"
                },
                output_types={
                    "default": None,
                    "has_default": False,
                    "list_of": False,
                    "pixel_types": (RGB, ),
                    "name": "output"
                },
                settings=task_class.settings,
                enabled=True,
                category="Lyric Extraction",
                interactive=True)

        j.save()
Exemplo n.º 11
0
    def test_delete(self):
        job = Job(name="test job")
        job.save()

        retr_job = Job.objects.get(name="test job")
        retr_job.delete()

        retr_job2 = Job.objects.filter(name="test job")
        self.assertFalse(retr_job2.exists())
Exemplo n.º 12
0
def load_dummy_job():
    name = 'rodan.jobs.devel.dummy_job'
    if not Job.objects.filter(job_name=name).exists():
        j = Job(job_name=name,
                author="Andrew Hankinson",
                description="A Dummy Job for testing the Job loading and workflow system",
                input_types={"default": None, "has_default": False, "list_of": False, "pixel_types": (1,), "name": "input"},
                output_types={"default": None, "has_default": False, "list_of": False, "pixel_types": (1,), "name": "output"},
                settings=[{}],
                enabled=True,
                category="Dummy",
                interactive=False
                )
        j.save()
Exemplo n.º 13
0
def load_poly_mask():
    task_class = PolyMaskTask

    if not Job.objects.filter(job_name=task_class.name).exists():
        j = Job(job_name=task_class.name,
                author="Deepanjan Roy",
                description="TO DO",
                input_types={"default": None, "has_default": False, "list_of": False, "pixel_types": (ONEBIT,), "name": "input"},
                output_types={"default": None, "has_default": False, "list_of": False, "pixel_types": (ONEBIT,), "name": "output"},
                settings=task_class.settings,
                enabled=True,
                category="Border Removal",
                interactive=True
                )

        j.save()
Exemplo n.º 14
0
def load_segmentation():
    task_class = SegmentationTask

    if not Job.objects.filter(job_name=task_class.name).exists():
        j = Job(job_name=task_class.name,
                author="Deepanjan Roy",
                description="Finds the staves using Miyao Staff Finder and masks out everything else.",
                input_types={"default": None, "has_default": False, "list_of": False, "pixel_types": (ONEBIT,), "name": "input"},
                output_types={"default": None, "has_default": False, "list_of": False, "pixel_types": (ONEBIT,), "name": "output"},
                settings=task_class.settings,
                enabled=True,
                category="Segmentation",
                interactive=True
                )

        j.save()
Exemplo n.º 15
0
def load_rt_staff_removal():
    task_class = RTStafflineRemovalTask

    if not Job.objects.filter(job_name=task_class.name).exists():
        j = Job(job_name=task_class.name,
                author="Deepanjan Roy",
                description="Removes the staff lines usign Roach and Tatem Staffline removal algorithm.",
                input_types={"default": None, "has_default": False, "list_of": False, "pixel_types": [ONEBIT,], "name": "input"},
                output_types={"default": None, "has_default": False, "list_of": False, "pixel_types": [ONEBIT,], "name": "output"},
                settings=task_class.settings,
                enabled=True,
                category="Staff Removal",
                interactive=False
                )

        j.save()
Exemplo n.º 16
0
def load_segmentation():
    task_class = PitchCorrectionTask

    if not Job.objects.filter(job_name=task_class.name).exists():
        j = Job(job_name=task_class.name,
                author="Deepanjan Roy",
                description="Interactive pitch correction using Neon.",
                input_types={"default": None, "has_default": False, "list_of": False, "pixel_types": (MEI,), "name": "input"},
                output_types={"default": None, "has_default": False, "list_of": False, "pixel_types": (MEI,), "name": "output"},
                settings=task_class.settings,
                enabled=True,
                category="Pitch Correction",
                interactive=True
                )

        j.save()
Exemplo n.º 17
0
def load_pixel_segment():
    task_class = PixelSegmentTask

    if not Job.objects.filter(job_name=task_class.name).exists():
        j = Job(job_name=task_class.name,
                author="Ryan Bannon",
                description="TO DO",
                input_types={"default": None, "has_default": False, "list_of": False, "pixel_types": (RGB,), "name": "input"},
                output_types={"default": None, "has_default": False, "list_of": False, "pixel_types": (RGB,), "name": "output"},
                settings=task_class.settings,
                enabled=True,
                category="Lyric Extraction",
                interactive=True
                )

        j.save()
Exemplo n.º 18
0
def load_module():
    job = Job.objects.filter(job_name=JOB_NAME)
    if job.exists():
        return None
    else:
        j = Job(job_name=JOB_NAME,
                author="Andrew Hankinson",
                description="Converts an image to a JPEG2000 image suitable for display in Diva",
                input_types={"default": None, "has_default": False, "list_of": False, "pixel_types": [3], "name": None},
                output_types={"default": None, "has_default": False, "list_of": False, "pixel_types": [7], "name": "output"},
                settings={},
                enabled=True,
                category="Conversion",
                interactive=False
                )

        j.save()
Exemplo n.º 19
0
def create_jobs_from_module(gamera_module, interactive=False):
    previously_loaded_modules = list(Job.objects.values_list('job_name', 'interactive'))

    for fn in gamera_module.module.functions:
        # we only want jobs that will return a result and has a known pixel type
        if not fn.return_type:
            continue

        if "pixel_types" not in fn.return_type.__dict__.keys():
            continue

        module_task = GameraTask()
        module_task.name = str(fn)
        registry.tasks.register(module_task)

        # skip the job creation if we've already
        # stored a reference to this job in the database
        if (str(fn), interactive) in previously_loaded_modules:
            continue

        input_types = argconvert.convert_input_type(fn.self_type)
        output_types = argconvert.convert_output_type(fn.return_type)
        settings = argconvert.convert_arg_list(fn.args.list)

        j = Job(
            job_name=str(fn),
            author=fn.author,
            description=fn.escape_docstring().replace("\\n", "\n").replace('\\"', '"'),
            input_types=input_types,
            output_types=output_types,
            settings=settings,
            enabled=True,
            category=gamera_module.module.category,
            interactive=interactive
        )

        j.save()

        previously_loaded_modules += [(str(fn), interactive)]
Exemplo n.º 20
0
    def test_save(self):
        job = Job(name="test job")
        job.save()

        retr_job = Job.objects.get(name="test job")
        self.assertEqual(retr_job.name, job.name)