示例#1
0
    def _register_parent_task(self, parents):
        """Register parent task class(es) to task. Uses
        RatatoskHandler to register class to _parent_cls placeholder.
        If the task cannot be found, falls back on the default class.

        It is also possible to supply more tasks than there are
        default parent tasks. In case the extra parent task cannot be
        found, the default fallback task in this case is a NullJobTask
        that always passes.

        :param parents: list of python classes represented as strings in option parent_task

        """
        default_parents = self.get_param_default("parent_task")
        if not isinstance(default_parents, tuple):
            default_parents = [default_parents]
        if len(parents) != len(default_parents):
            logger.warn(
                "length of parent list ({}) differs from length of default_parents list ({}); this may result in unpredicted behaviour"
                .format(len(parents), len(default_parents)))
        if len(parents) > len(default_parents):
            len_diff = len(parents) - len(default_parents)
            default_parents = list(default_parents) + [
                "ratatosk.job.NullJobTask" for i in range(0, len_diff)
            ]
        for p, d in izip(parents, default_parents):
            h = RatatoskHandler(label="_parent_cls", mod=p, load_type="class")
            register_attr(self, h, default_handler=d)
示例#2
0
 def test_register_handler(self):
     backend.__handlers__ = {}
     target_handler = RatatoskHandler(
         label="target_generator_handler",
         mod="test.test_handler.local_target_generator")
     self.assertEqual(backend.__handlers__, {})
     register(target_handler)
     self.assertEqual(
         fullclassname(backend.__handlers__['target_generator_handler']),
         "test.test_handler.local_target_generator")
示例#3
0
 def test_register_task_handler(self):
     obj = MergeSamFiles()
     obj._handlers = {}
     target_handler = RatatoskHandler(
         label="target_generator_handler",
         mod="test.test_handler.local_target_generator")
     self.assertEqual(obj._handlers, {})
     register_task_handler(obj, target_handler)
     self.assertEqual(
         fullclassname(obj._handlers['target_generator_handler']),
         "test.test_handler.local_target_generator")
示例#4
0
 def requires(self):
     cls = self.parent()[0]
     sources = []
     cnf = get_config()
     if self.target_generator_handler and "target_generator_handler" not in self._handlers.keys():
         tgf = RatatoskHandler(label="target_generator_handler", mod=self.target_generator_handler)
         register_task_handler(self, tgf)
     if not "target_generator_handler" in self._handlers.keys():
         logging.warn("MergeSamFiles requires a target generator handler; no defaults are as of yet implemented")
         return []
     sources = list(set(self._handlers["target_generator_handler"](self)))
     return [cls(target=src) for src in sources]    
示例#5
0
 def test_bwasampe(self):
     from ratatosk.handler import register, RatatoskHandler
     key = "target_generator_handler"
     h = RatatoskHandler(label=key,
                         mod="test.site_functions.target_generator")
     register(h)
     luigi.run(_luigi_args([
         '--target',
         read1.replace("1.fastq.gz", ".sam"), '--config-file', localconf,
         '--use-long-names'
     ]),
               main_task_cls=ratatosk.lib.align.bwa.Sampe)
示例#6
0
 def requires(self):
     if self.target_generator_handler:
         cls = self.parent()[0]
         sources = []
         if "target_generator_handler" not in self._handlers.keys():
             tgf = RatatoskHandler(label="target_generator_handler",
                                   mod=self.target_generator_handler)
             register_task_handler(self, tgf)
         sources = self._handlers["target_generator_handler"](self)
         return [cls(target=src) for src in sources]
     else:
         return [
             cls(target=source)
             for cls, source in izip(self.parent(), self.source())
         ]
示例#7
0
 def test_ratatosk_handler(self):
     h = RatatoskHandler(label="labeldef", mod="Mod")
     self.assertEqual(h.mod(), "Mod")
     self.assertEqual(h.label(), "labeldef")
     self.assertIsInstance(h, RatatoskHandler)
示例#8
0
 def test_ratatosk_handler(self):
     h = RatatoskHandler(label="labeldef", mod="Mod")
     self.assertEqual(h.mod(), "Mod")
     self.assertEqual(h.label(), "labeldef")
     self.assertIsInstance(h, RatatoskHandler)
示例#9
0
 def test_iterate_targets(self):
     obj = MergeSamFiles()
     target_handler = RatatoskHandler(
         label="target_generator_handler",
         mod="test.test_handler.local_target_generator")
     register(target_handler)