def get_cmds(self, assessor, jobdir): """Method to generate the spider command for cluster job. :param assessor: pyxnat assessor object :param jobdir: jobdir where the job's output will be generated :return: command to execute the spider in the job script """ proj_label = assessor.parent().parent().parent().label() subj_label = assessor.parent().parent().label() sess_label = assessor.parent().label() nb_acq = 1 csess = XnatUtils.CachedImageSession(assessor._intf, proj_label, subj_label, sess_label) reg_verdict = '' for cassr in csess.assessors(): if XnatUtils.is_cassessor_good_type(cassr, [self.proctype]): reg_verdict = cassr if XnatUtils.has_resource(reg_verdict, 'ACQ2'): nb_acq = 2 cmd = SPIDER_FORMAT.format(spider=self.spider_path, proj=proj_label, subj=subj_label, sess=sess_label, dir=jobdir, nb_acq=nb_acq, proctype=self.proctype, mc=self.mc, camino=self.camino, scheme=self.scheme_file, suffix_proc=self.suffix_proc) return [cmd]
def has_inputs(self, csess): """Method overridden from base class. By definition: status = 0 -> NEED_INPUTS, status = 1 -> NEED_TO_RUN status = -1 -> NO_DATA qcstatus needs a value only when -1 or 0. You need to set qcstatus to a short string that explain why it's no ready to run. e.g: No NIFTI :param csess: object csess define in dax.XnatUtils (see XnatUtils in dax for information) :return: status, qcstatus """ verdict_cscans = XnatUtils.get_good_cscans(csess, self.modalities) if not verdict_cscans: LOGGER.debug('Processor_Registration_Verdict: \ cannot run at all, no VERDICT image found') return -1, 'VERDICT not found' verdict_cassrs = list() for cassr in csess.assessors(): if XnatUtils.is_cassessor_good_type(cassr, [self.proctype]): verdict_cassrs.append(cassr) if not verdict_cassrs: LOGGER.debug('Processor_Compute_ADC_Verdict: \ cannot run, no good QA Registration VERDICT found') return 0, 'Registration missing' cassr = verdict_cassrs[0] LOGGER.debug('Processor_Compute_ADC_Verdict: \ good registration assessor found: %s', cassr.info()['label']) if not XnatUtils.has_resource(cassr, 'ACQ1'): LOGGER.debug('Processor_Compute_ADC_Verdict: \ cannot run, no ACQ resource found for %s assessor', cassr.info()['label']) return 0, "Missing ACQ#" return 1, None