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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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())
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()
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()
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()
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()
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()
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()
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()
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)]
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)