Exemplo n.º 1
0
    def validateField_in_section(self, field_name, new_field_value):
        """
        field validation for a step that acts as a section to another step
        """
        # logger.debug("at validateField_in_section field_name=%s; new_field_value=%s" %(field_name, new_field_value))

        if field_name == ReferenceFieldNames.REFERENCE:
            if new_field_value and new_field_value not in [ref.short_name for ref in self.prepopulatedFields[ReferenceFieldNames.REFERENCES]]:
                self.prepopulatedFields[ReferenceFieldNames.REFERENCE_MISSING] = True
                self.validationErrors[field_name] = "Reference Library not found: %s" % new_field_value
            else:
                self.prepopulatedFields[ReferenceFieldNames.REFERENCE_MISSING] = False
                self.validationErrors.pop(field_name, None)

        # if the plan has been sequenced, do not enforce the target bed file to be selected

        if self.prepopulatedFields[ReferenceFieldNames.PLAN_STATUS] != "run":
            if field_name == ReferenceFieldNames.TARGET_BED_FILE:
                reference = self.savedFields[ReferenceFieldNames.REFERENCE]
                targetRegionBedFile = new_field_value

                runType = self.prepopulatedFields[ReferenceFieldNames.RUN_TYPE] if self.prepopulatedFields[ReferenceFieldNames.RUN_TYPE] else ""
                applicationGroupName = self.prepopulatedFields[ReferenceFieldNames.APPLICATION_GROUP_NAME]
                logger.debug(" validateField_in_section reference=%s; targetBed=%s; runType=%s; applicationGroupName=%s" % (reference, new_field_value, runType, applicationGroupName))

                errors = []
                errors = validate_targetRegionBedFile_for_runType(targetRegionBedFile, runType, reference, "", applicationGroupName, "Target Regions BED File")
                if errors:
                    self.validationErrors[field_name] = ''.join(errors)
                else:
                    self.validationErrors.pop(field_name, None)
Exemplo n.º 2
0
    def validateField_in_section(self, field_name, new_field_value):
        """
        field validation for a step that acts as a section to another step
        """
        #logger.debug("at validateField_in_section field_name=%s; new_field_value=%s" %(field_name, new_field_value))
        
        if field_name == ReferenceFieldNames.REFERENCE:
            if new_field_value in [ref.short_name for ref in self.prepopulatedFields[ReferenceFieldNames.REFERENCES]]:
                self.prepopulatedFields[ReferenceFieldNames.REFERENCE_MISSING] = False

        #if the plan has been sequenced, do not enforce the target bed file to be selected
        
        if self.prepopulatedFields[ReferenceFieldNames.PLAN_STATUS] != "run":
            if field_name == ReferenceFieldNames.TARGET_BED_FILE:
                reference = self.savedFields[ReferenceFieldNames.REFERENCE]
                targetRegionBedFile = new_field_value
 
                runType = self.prepopulatedFields[ReferenceFieldNames.RUN_TYPE] if self.prepopulatedFields[ReferenceFieldNames.RUN_TYPE] else ""
                applicationGroupName = self.prepopulatedFields[ReferenceFieldNames.APPLICATION_GROUP_NAME]
                logger.debug(" validateField_in_section reference=%s; targetBed=%s; runType=%s; applicationGroupName=%s" %(reference, new_field_value, runType, applicationGroupName))                   

                errors = []
                errors = validate_targetRegionBedFile_for_runType(targetRegionBedFile, runType, reference, "", applicationGroupName, "Target Regions BED File") 
                if errors:
                    self.validationErrors[field_name] = ''.join(errors)
                else:
                    self.validationErrors.pop(field_name, None) 
Exemplo n.º 3
0
    def validateField(self, field_name, new_field_value):
        self.validationErrors.pop(field_name, None)
        errors = None

        if field_name == SavePlanFieldNames.CHIP_BARCODE_LABEL:
            errors = validate_chipBarcode(new_field_value)

        if errors:
            self.validationErrors[field_name] = '\n'.join(errors)

        if field_name == SavePlanFieldNames.BARCODE_SAMPLE_TUBE_LABEL:
            errors = validate_sample_tube_label(new_field_value)

        if errors:
            self.validationErrors[field_name] = '\n'.join(errors)

        # if the plan has been sequenced, do not enforce the target bed file to be selected
        planStatus = self.getDefaultSectionPrepopulatedFieldDict().get("planStatus", "")

        if field_name == SavePlanFieldNames.SAMPLES_TABLE:
            sample_table_list = json.loads(new_field_value)
            samples_errors = []

            applProduct = self.savedObjects[SavePlanFieldNames.APPL_PRODUCT]
            # applProduct object is not saved yet
            if applProduct:
                isTargetRegionSelectionRequired = applProduct.isTargetRegionBEDFileSelectionRequiredForRefSelection
            else:
                isTargetRegionSelectionRequired = False

            applicationGroupName = self.prepopulatedFields[SavePlanFieldNames.APPLICATION_GROUP_NAME]
            for row in sample_table_list:
                sample_name = row.get(SavePlanFieldNames.SAMPLE_NAME, '').strip()
                if sample_name:
                    sample_nucleotideType = row.get(SavePlanFieldNames.BARCODE_SAMPLE_NUCLEOTIDE_TYPE, "")

                    sampleReference = row.get(SavePlanFieldNames.BARCODE_SAMPLE_REFERENCE, "")
                    sampleTargetRegionBedFile = row.get(SavePlanFieldNames.BARCODE_SAMPLE_TARGET_REGION_BED_FILE, "")

                    runType = self.prepopulatedFields[SavePlanFieldNames.RUN_TYPE]

                    logger.debug("barcode_by_sample_step_data.validateField()() runType=%s; sample_nucleotideType=%s; sampleReference=%s; sampleTargetRegionBedFile=%s" % (runType, sample_nucleotideType, sampleReference, sampleTargetRegionBedFile))

                    errors = []
                    # if the plan has been sequenced, do not enforce the target bed file to be selected
                    if planStatus != "run":
                        errors = validate_targetRegionBedFile_for_runType(sampleTargetRegionBedFile, runType, sampleReference, sample_nucleotideType, applicationGroupName, "Target Regions BED File for " + sample_name)

                    if errors:
                        samples_errors.append('\n'.join(errors))

                if samples_errors:
                    logger.debug("barcode_by_sample_step_data.validateField()() samples_errors=%s" % (samples_errors))
                    self.validationErrors[field_name] = '\n'.join(samples_errors)
Exemplo n.º 4
0
    def validateField(self, field_name, new_field_value):
        self.validationErrors.pop(field_name, None)
        errors = None

        if field_name == SavePlanFieldNames.CHIP_BARCODE_LABEL:
            errors = validate_chipBarcode(new_field_value)

        if errors:
            self.validationErrors[field_name] = '\n'.join(errors)

        if field_name == SavePlanFieldNames.BARCODE_SAMPLE_TUBE_LABEL:
            errors = validate_sample_tube_label(new_field_value)

        if errors:
            self.validationErrors[field_name] = '\n'.join(errors)

        # if the plan has been sequenced, do not enforce the target bed file to be selected
        planStatus = self.getDefaultSectionPrepopulatedFieldDict().get("planStatus", "")

        if field_name == SavePlanFieldNames.SAMPLES_TABLE:
            sample_table_list = json.loads(new_field_value)
            samples_errors = []

            applProduct = self.savedObjects[SavePlanFieldNames.APPL_PRODUCT]
            # applProduct object is not saved yet
            if applProduct:
                isTargetRegionSelectionRequired = applProduct.isTargetRegionBEDFileSelectionRequiredForRefSelection
            else:
                isTargetRegionSelectionRequired = False

            applicationGroupName = self.prepopulatedFields[SavePlanFieldNames.APPLICATION_GROUP_NAME]
            for row in sample_table_list:
                sample_name = row.get(SavePlanFieldNames.SAMPLE_NAME, '').strip()
                if sample_name:
                    sample_nucleotideType = row.get(SavePlanFieldNames.BARCODE_SAMPLE_NUCLEOTIDE_TYPE, "")

                    sampleReference = row.get(SavePlanFieldNames.BARCODE_SAMPLE_REFERENCE, "")
                    sampleTargetRegionBedFile = row.get(SavePlanFieldNames.BARCODE_SAMPLE_TARGET_REGION_BED_FILE, "")

                    runType = self.prepopulatedFields[SavePlanFieldNames.RUN_TYPE]

                    logger.debug("barcode_by_sample_step_data.validateField()() runType=%s; sample_nucleotideType=%s; sampleReference=%s; sampleTargetRegionBedFile=%s" % (runType, sample_nucleotideType, sampleReference, sampleTargetRegionBedFile))

                    errors = []
                    # if the plan has been sequenced, do not enforce the target bed file to be selected
                    if planStatus != "run":
                        errors = validate_targetRegionBedFile_for_runType(sampleTargetRegionBedFile, runType, sampleReference, sample_nucleotideType, applicationGroupName, "Target Regions BED File for " + sample_name)

                    if errors:
                        samples_errors.append('\n'.join(errors))

                if samples_errors:
                    logger.debug("barcode_by_sample_step_data.validateField()() samples_errors=%s" % (samples_errors))
                    self.validationErrors[field_name] = '\n'.join(samples_errors)
Exemplo n.º 5
0
    def validateField(self, field_name, new_field_value):
        self.validationErrors.pop(field_name, None)

        # if the plan has been sequenced, do not enforce the target bed file to be selected
        planStatus = self.getDefaultSectionPrepopulatedFieldDict().get("planStatus", "")

        if field_name == SavePlanFieldNames.PLAN_NAME:
            errors = validate_plan_name(new_field_value, 'Plan Name')
            if errors:
                self.validationErrors[field_name] = '\n'.join(errors)
        elif field_name == SavePlanFieldNames.NOTE:
            errors = validate_notes(new_field_value)
            if errors:
                self.validationErrors[field_name] = '\n'.join(errors)
        elif field_name == SavePlanFieldNames.BARCODE_SAMPLE_TUBE_LABEL:
            errors = validate_sample_tube_label(new_field_value)
            if errors:
                self.validationErrors[field_name] = '\n'.join(errors)
        elif field_name == SavePlanFieldNames.CHIP_BARCODE_LABEL:
            errors = validate_chipBarcode(new_field_value)
            if errors:
                self.validationErrors[field_name] = '\n'.join(errors)

        elif field_name in self.qcNames:
            '''
            All qc thresholds must be positive integers
            '''
            errors = validate_QC(new_field_value, field_name)
            if errors:
                self.validationErrors[field_name] = errors[0]
            else:
                self.validationErrors.pop(field_name, None)

        elif field_name == SavePlanFieldNames.SAMPLES_TABLE:
            sample_table_list = json.loads(new_field_value)

            samples_errors = []

            applProduct = self.savedObjects[SavePlanFieldNames.APPL_PRODUCT]
            # applProduct object is not saved yet
            if applProduct:
                isTargetRegionSelectionRequired = applProduct.isTargetRegionBEDFileSelectionRequiredForRefSelection
            else:
                isTargetRegionSelectionRequired = False

            applicationGroupName = self.prepopulatedFields[SavePlanFieldNames.APPLICATION_GROUP_NAME]
            for row in sample_table_list:

                sample_name = row.get(SavePlanFieldNames.SAMPLE_NAME, '').strip()
                if sample_name:
                    sample_nucleotideType = row.get(SavePlanFieldNames.BARCODE_SAMPLE_NUCLEOTIDE_TYPE, "")

                    sampleReference = row.get(SavePlanFieldNames.BARCODE_SAMPLE_REFERENCE, "")
                    sampleTargetRegionBedFile = row.get(SavePlanFieldNames.BARCODE_SAMPLE_TARGET_REGION_BED_FILE, "")

                    runType = self.prepopulatedFields[SavePlanFieldNames.RUN_TYPE]

                    errors = []
                    # if the plan has been sequenced, do not enforce the target bed file to be selected
                    isMainBEDFileValidated = "default_targetBedFile" in self.validationErrors
                    if not isMainBEDFileValidated and planStatus != "run" and (self.sh_type not in StepHelperType.TEMPLATE_TYPES):
                        errors = validate_targetRegionBedFile_for_runType(sampleTargetRegionBedFile, runType, sampleReference, sample_nucleotideType, applicationGroupName, "Target Regions BED File for " + sample_name)

                    if errors:
                        samples_errors.append('\n'.join(errors))

                if samples_errors:
                    self.validationErrors[field_name] = '\n'.join(samples_errors)
Exemplo n.º 6
0
    def validateField_in_section(self, field_name, new_field_value):
        """
        field validation for a step that acts as a section to another step
        """
        # logger.debug("at validateField_in_section field_name=%s; new_field_value=%s" %(field_name, new_field_value))

        if field_name == ReferenceFieldNames.REFERENCE:
            if new_field_value and new_field_value not in [
                    ref.short_name for ref in self.prepopulatedFields[
                        ReferenceFieldNames.REFERENCES]
            ]:
                self.prepopulatedFields[
                    ReferenceFieldNames.REFERENCE_MISSING] = True
                self.validationErrors[
                    field_name] = validation.invalid_not_found_error(
                        _("workflow.step.reference.fields.default_reference.label"
                          ),
                        new_field_value,
                    )  # Reference Library not found: %s" % new_field_value
            else:
                self.prepopulatedFields[
                    ReferenceFieldNames.REFERENCE_MISSING] = False
                self.validationErrors.pop(field_name, None)

        # if the plan has been sequenced, do not enforce the target bed file to be selected

        if self.prepopulatedFields[ReferenceFieldNames.PLAN_STATUS] != "run":
            if field_name == ReferenceFieldNames.TARGET_BED_FILE:
                reference = self.savedFields[ReferenceFieldNames.REFERENCE]
                targetRegionBedFile = new_field_value

                runType = (
                    self.prepopulatedFields[ReferenceFieldNames.RUN_TYPE]
                    if self.prepopulatedFields[ReferenceFieldNames.RUN_TYPE]
                    else "")
                applicationGroupName = self.prepopulatedFields[
                    ReferenceFieldNames.APPLICATION_GROUP_NAME]
                logger.debug(
                    " validateField_in_section reference=%s; targetBed=%s; runType=%s; applicationGroupName=%s"
                    % (reference, new_field_value, runType,
                       applicationGroupName))

                errors = []
                isSameRefInfoPerSample = self.savedFields[
                    ReferenceFieldNames.SAME_REF_INFO_PER_SAMPLE]
                if isSameRefInfoPerSample:
                    errors = validate_targetRegionBedFile_for_runType(
                        targetRegionBedFile,
                        field_label=
                        _("workflow.step.reference.fields.default_targetBedFile.label"
                          ),
                        runType=runType,
                        reference=reference,
                        nucleotideType="",
                        applicationGroupName=applicationGroupName,
                    )

                if errors:
                    self.validationErrors[field_name] = "".join(errors)
                else:
                    self.validationErrors.pop(field_name, None)