[
  {
    "selectPycoTemplate": [
      {
        "name": "selectPycoTemplate",
          "id": "selectPycoTemplate",
          "model": false,
          "displayName": "Select the new Component Detection algorithm and set as default",
          "type": "boolean",
          "isExpanderItem": true,
          "expanderSection": "selectPycoTemplate",
          "tooltip": {
            "header": "Component Detection Selection",
            "message": "Click the chevron to show/hide the Component Detection selection check box.\nSelect the check box to use the new Component Detection algorithm.\nLeave unchecked to use the legacy Component Detection algorithm."
          }
      }
    ]
  },
  {
    "experimentDetails": [
      {
        "header": "Experiment Details"
      },
      {
        "name": "storageFolder",
        "id": "storageFolder",
        "model": "",
        "displayName": "Experiment Folder",
        "type": "file",
        "required": true,
        "regex": "experimentFolderRegex",
        "errorMessage":  "The Experiment Folder field format is invalid"
      },
      {
        "name": "experimentName",
        "id": "experimentName",
        "model": "",
        "displayName": "Experiment Name",
        "type": "string",
        "required": true,
        "regex": "experimentNameRegex"
      }
    ]
  },
  {
    "instrumentMethods": [
      {
        "header": "Instrument Methods"
      },
      {
        "name": "fullScanMethod",
        "id": "blankMethod",
        "displayName": "Full Scan Method",
        "type": "string",
        "isFullScan": true,
        "instrumentMethodError": false,
        "model": "",
        "associatedSampleTypeList": [ 1, 2, 4 ],
        "tooltip": {
          "header": "Full Scan Method",
          "message": "The instrument method that the Xcalibur data system uses to generate data for detecting peaks, component-like features, and constant background ions; and to assemble precursor ion exclusion and inclusion lists. Make sure to use an AcquireX template method or that your MS instrument method meets the following criteria:",
          "list": [ "Uses the MS1 Full Scan with a single continuous scan range.", "Turns polarity switching off." ]
        },
        "errorMessage": "The Full Scan Method is not present in the specified path."
      },
      {
        "name": "msnTemplateMethod",
        "id": "mS2Method",
        "displayName": "MSn Template Method",
        "type": "string",
        "isFullScan": false,
        "instrumentMethodError": false,
        "model": "",
        "associatedSampleTypeList": [ 3 ],
        "tooltip": {
          "header": "MSn Template Method",
          "message": "The instrument method to be combined with precursor exclusion or inclusion lists that an Xcalibur analysis generated using the Full Scan Method. Make sure to use an AcquireX template method or that your MS instrument method meets the following criteria:",
          "list": [ "(If applicable) Adds the Targeted Mass filter between the MS and ddMS2 scan nodes.", "(If applicable) Adds the Targeted Mass Exclusion filter between the MS and ddMS2 scan nodes.", "Selects the AcquireX check boxes for the appropriate filters." ]
        },
        "errorMessage": "The MSn Template Method is not present in the specified path."
      }
    ]
  },
  {
    "overrideFactorParameters": {
      "name": "exclusionIntensityFactor",
      "id": "parameter1",
      "displayName": "Exclusion Override Factor (default = 3)",
      "type": "integer",
      "action": "XtopiaAction",
      "actionOrder": "Post",
      "min": 1,
      "max": 1000000000,
      "model": "3",
      "default": 3,
      "tooltip": {
        "header": "Exclusion Override Factor",
        "message": "This value will allow the MS to fragment exclusion list precursor ions if a certain threshold is met",
        "list": [ "If an exclusion list ion is defined with an intensity of 1e5 and the factor is set to 10, the ion may be fragmented if the exclusion list ion is detected with an intensity >1e6" ]
      },
      "errorMessage": "Enter a value between 1 and IE9."
    }
  },
  {
    "exclusionTimeParameter": {
      "name": "exclusionWindowSeconds",
      "id": "parameter3",
      "displayName": "Exclusion Duration (seconds)",
      "type": "float",
      "min": 0,
      "max": 6000,
      "default": 10,
      "keydown": "validateDecimal",
      "keyup": "checkExclusionTimeLimit",
      "model": "10",
      "tooltip": {
        "header": "Exclusion Duration (seconds)",
        "message": "This parameter applies to any precursor that is fragmented but not contained in an inclusion list. When the fragmented precursor is added to the exclusion list, the exclusion start and end time are applied in the following manner:",
        "list": [
          "Precursor exclusion start time = Scan time - duration value / 2",
          "Precursor exclusion end time = Scan time + duration value / 2"
        ]
      },
      "errorMessage": "Enter a value between 0 and 6000."
    }
  },
  {
    "preferredIonsParameters": {
      "name": "preferredIonsParameters",
      "id": "parameter2",
      "displayName": "Preferred Ions",
      "type": "string",
      "default": [ "[M+H]+1", "[M-H]-1" ],
      "model": [ "[M+H]+1", "[M-H]-1" ],
      "errorMessage": "Enter a value lesser than or equal to 6000"
    }
  },
  {
    "isotopesExclusionList": {
      "name": "automaticallyAddIsotopes",
      "id": "parameter4",
      "displayName": "Enable automatic adding of Isotopes",
      "type": "boolean",
      "default": false,
      "model": false,
      "tooltip": {
        "header": "Enable automatic adding of Isotopes",
        "message": "Choose this option to add the A1 and A2 isotopes to the exclusion list for non-background ions."
      }
    }
  },
  {
    "exclusionPeakWindowExtension": {
      "name": "exclusionPeakWindowExtension",
      "id": "exclusionPeakWindowExtension",
      "displayName": "Exclusion List Peak Window Extension (s) (default = 0 s)",
      "type": "integer",
      "min": 0,
      "max": 120,
      "default": 0,
      "model": 0,
      "tooltip": {
        "header": "Exclusion List Peak Window Extension",
        "message": "This value increases all of the exclusion list peak windows symmetrically, by the user-defined time in seconds.  This allows for the system to accommodate for peak drift in subsequent injections for suppression of fragmentation.",
        "list": [ "Extended Peak Start Time = Original Peak Start Time - extension value / 60", "Extended Peak End Time = Original Peak End Time + extension value / 60" ]
      }
    }
  },
  {
    "inclusionPeakWindowExtension": {
      "name": "inclusionPeakWindowExtension",
      "id": "inclusionPeakWindowExtension",
      "displayName": "Inclusion List Peak Window Extension (s) (default = 0 s)",
      "type": "integer",
      "min": 0,
      "max": 120,
      "default": 0,
      "model": 0,
      "tooltip": {
        "header": "Inclusion List Peak Window Extension",
        "message": "This value increases all of the inclusion list peak windows symmetrically, by the user-defined time in seconds.  This allows for the system to accommodate for peak drift in subsequent injections for fragmentation.",
        "list": [ "Extended Peak Start Time = Original Peak Start Time - extension value / 60", "Extended Peak End Time = Original Peak End Time + extension value / 60" ]
      }
    }
  },
  {
    "inclusionIntensityFactor": {
      "name": "inclusionIntensityFactor",
      "id": "inclusionIntensityFactor",
      "displayName": "Inclusion List Peak Fragmentation Threshold (%) (default = 50%)",
      "type": "integer",
      "min": 0,
      "max": 100,
      "default": 50,
      "model": 50,
      "tooltip": {
        "header": "Inclusion List Peak Fragmentation Threshold",
        "message": "This value sets a threshold relative to the detected inclusion ion peak apex intensity that must be reached during subsequent acquisition for the precursor to be fragmented. This allows for improved precursor signal to be observed during the run, prior to fragmentation, thereby increasing the fragmentation spectrum quality.",
        "list": [ "Minimum Precursor Intensity for Fragmentation = Detected Inclusion Peak Apex Intensity x Threshold Value / 100" ]
      }
    }
  },
  {
    "exclusionListIntensityThreshold": {
      "name": "exclusionListIntensityThreshold",
      "id": "exclusionListIntensityThreshold",
      "displayName": "Exclusion List Minimum Intensity (Example: 5.00e+4)",
      "type": "exponential",
      "min": 100,
      "max": 1000000000,
      "default": "5.00e+4",
      "model": "5.00e+4",
      "isExpanderItem": true,
      "expanderSection": "intensityThreshold",
      "hasError": false,
      "errorMessage": "Exclusion List Minimum Intensity field must be between 1.00e+2 and 1.00e+9",
      "tooltip": {
        "header": "Exclusion List Minimum Intensity",
        "message": "Sets the value for the Component Detection of the Exclusion List.\n Range: 1.00e+2 to 1.00e+9"
      }
    }
  },
  {
    "inclusionListIntensityThreshold": {
      "name": "inclusionListIntensityThreshold",
      "id": "inclusionListIntensityThreshold",
      "displayName": "Inclusion List Minimum Intensity (Example: 5.00e+4)",
      "type": "exponential",
      "min": 100,
      "max": 1000000000,
      "default": "5.00e+4",
      "model": "5.00e+4",
      "isExpanderItem": true,
      "expanderSection": "intensityThreshold",
      "hasError": false,
      "errorMessage": "Inclusion List Minimum Intensity field must be between 1.00e+2 and 1.00e+9",
      "tooltip": {
        "header": "Inclusion List Minimum Intensity",
        "message": "Sets the value for the Component Detection of the Inclusion List.\n Range: 1.00e+2 to 1.00e+9"
      }
    }
  },
  {
    "mzTolerance": {
      "name": "mzTolerance",
      "id": "mzTolerance",
      "displayName": "m/z Tolerance (ppm) (default = 5ppm)",
      "type": "integer",
      "min": 1,
      "max": 20,
      "default": 5,
      "model": 5,
      "isExpanderItem": true,
      "expanderSection": "combinedList",
      "hasError": false,
      "errorMessage": "m/z Tolerance field must be between 1ppm and 20ppm",
      "tooltip": {
        "header": "m/z Tolerance",
        "message": "Sets the m/z tolerance value for the combined Inclusion/Exclusion List.\n Range: 1 to 20 ppm."
      }
    }
  },
  {

    "customInjectionsGrid": [
      {
        "name": "injectionHeaders"
      },
      {
        "name": "injectionColumnHeaders"
      }
    ]
  },
  {

    "injectionHeaders": [
      {
        "name": "numberOfBlanks",
        "displayName": "# Header Blanks",
        "type": "integer",
        "minimumValue": "0",
        "maximumValue": "20",
        "model": "0"
      },
      {
        "name": "numberOfInjections",
        "displayName": "#ID injections",
        "type": "integer",
        "minimumValue": "0",
        "maximumValue": "100",
        "model": "0"
      }
    ]
  },
  {

    "injectionColumnHeaders": [
      {
        "name": "name",
        "displayName": "Name",
        "type": "string"
      },
      {
        "name": "sampleType",
        "displayName": "Type",
        "type": "string"
      },
      {
        "name": "matrix",
        "displayName": "Exclusion Ref",
        "type": "boolean"
      },
      {
        "name": "instMethod",
        "displayName": "Instrument Method",
        "type": "string"
      },
      {
        "name": "vialPosition",
        "displayName": "Vial",
        "type": "string"
      },
      {
        "name": "injVol",
        "displayName": "Inj Vol(ul)",
        "type": "string"
      }
    ]
  },
  {

    "standardInjectionsGrid": [
      {
        "name": "standardInjectionHeaders"
      },
      {
        "name": "standardInjectionColumnHeaders"
      }
    ]
  },
  {

    "standardInjectionHeaders": [
      {
        "header": "Standard Injections"
      },
      {
        "name": "add",
        "displayName": "Add",
        "type": "button",
        "id": "addButton",
        "imgSrc": "addRowIcon.png"
      },
      {
        "name": "insert",
        "displayName": "Insert",
        "type": "button",
        "id": "insertButton",
        "imgSrc": "insertRowIcon.png"
      },
      {
        "name": "delete",
        "displayName": "Delete",
        "type": "button",
        "id": "deleteButton",
        "imgSrc": "deleteRowIcon.png"
      }
    ]
  },
  {

    "standardInjectionColumnHeaders": [
      {
        "name": "name",
        "displayName": "Name",
        "type": "String"
      },
      {
        "name": "sampleType",
        "displayName": "Type",
        "type": "String"
      },
      {
        "name": "instMethod",
        "displayName": "Instrument Method",
        "type": "String"
      },
      {
        "name": "vialPosition",
        "displayName": "Vial",
        "type": "String"
      },
      {
        "name": "injVol",
        "displayName": "Inj Vol(ul)",
        "type": "Number"
      }
    ]
  }
]