diff --git a/.gitignore b/.gitignore index 53f6796ff763007778bdbb7f1abb5db83610374f..1445b7c23c9e9fe2470937a63c78bb6df33e43a4 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,7 @@ SAS/TMSS/frontend/tmss_webapp/node_modules/ SAS/TMSS/frontend/tmss_webapp/debug.log *.bak SAS/TMSS/frontend/tmss_webapp/public/schemas/ +SAS/TMSS/frontend/tmss_webapp/coverage/** +SAS/TMSS/frontend/tmss_webapp/.vs/* +SAS/TMSS/.vs/* +SAS/TMSS/.vs/slnx.sqlite diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9e7eb142ec4f9da28d501488959cd10763618525..6547ee7349aadc28477598fe94c3186a5e433ca4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -206,7 +206,6 @@ build_MCU_MAC: script: - *build_mac_package interruptible: true - allow_failure: true when: manual # we don't build/deploy mac for lofar1 anymore. So, allow_failure=true and when=manual. If and only if we do need to release an emergency fix, then we will make sure this build chain for mac works again needs: - prepare_ci_mac_docker_image @@ -224,7 +223,6 @@ build_LCU_MAC: script: - *build_mac_package interruptible: true - allow_failure: true when: manual # we don't build/deploy mac for lofar1 anymore. So, allow_failure=true and when=manual. If and only if we do need to release an emergency fix, then we will make sure this build chain for mac works again needs: - prepare_ci_mac_docker_image @@ -242,7 +240,6 @@ build_CCU_MAC: script: - *build_mac_package interruptible: true - allow_failure: true when: manual # we don't build/deploy mac for lofar1 anymore. So, allow_failure=true and when=manual. If and only if we do need to release an emergency fix, then we will make sure this build chain for mac works again needs: - prepare_ci_mac_docker_image @@ -260,7 +257,6 @@ build_ST_MAC: script: - *build_mac_package interruptible: true - allow_failure: true when: manual # we don't build/deploy mac for lofar1 anymore. So, allow_failure=true and when=manual. If and only if we do need to release an emergency fix, then we will make sure this build chain for mac works again needs: - prepare_ci_mac_docker_image @@ -282,7 +278,6 @@ build_Docker: - make -j $(nproc) - make install # this puts Dockerfile and dependencies like rc files in a place that can be used as build context interruptible: true - allow_failure: true needs: - prepare_ci_mac_docker_image artifacts: @@ -389,7 +384,6 @@ unit_test_MCU_MAC: - cd build/gnucxx11_opt - SKIP_PYTHON_COVERAGE=true SKIP_INTEGRATION_TESTS=true SKIP_REGRESSION_TESTS=true ctest interruptible: true - allow_failure: true when: manual # we don't build/deploy mac for lofar1 anymore. So, allow_failure=true and when=manual. If and only if we do need to release an emergency fix, then we will make sure this build chain for mac works again services: - rabbitmq:latest @@ -962,7 +956,7 @@ sonarcloud_check_TMSS_Frontend: - ls -al SAS/TMSS/frontend/tmss_webapp - echo 'checking restored build output artifacts' - ls -al build/gnucxx11_opt/SAS/TMSS/frontend/tmss_webapp/coverage - - sonar-scanner -Dproject.settings=SAS/TMSS/frontend/tmss_webapp/sonar-project.properties + - sonar-scanner -Dproject.settings=SAS/TMSS/frontend/tmss_webapp/sonar-project.properties -X eslint_TMSSFrontEnd: @@ -973,7 +967,8 @@ eslint_TMSSFrontEnd: - echo "Eslinting TMSS FrontEnd..." - cd /builds/ro/lofar/SAS/TMSS/frontend/tmss_webapp - - npm install + - export PUPPETEER_SKIP_DOWNLOAD=true + - npm ci - npx eslint --format gitlab . || true - ls -al - echo "done" diff --git a/Docker/lofar-ci/Dockerfile_ci_tmss b/Docker/lofar-ci/Dockerfile_ci_tmss index 91a74ad9e89a2f215afb68925046284442f1995f..76c45af4da5de8c41013b5b7c032538623bde685 100644 --- a/Docker/lofar-ci/Dockerfile_ci_tmss +++ b/Docker/lofar-ci/Dockerfile_ci_tmss @@ -60,7 +60,6 @@ RUN node -v RUN npm install -g npm@10.2.1 RUN echo "NPM Version. now.." RUN npm -v -RUN npm install -g serve # force reinstall of latest station client via tmss_lobster.txt requirements RUN pip3 install --upgrade --no-deps --force-reinstall -r tmss_lobster.txt diff --git a/SAS/TMSS/frontend/tmss_webapp/.eslintrc.js b/SAS/TMSS/frontend/tmss_webapp/.eslintrc.js index 17da75ada1cc5393e13146ac146e9d417005ded2..288b6b563de326c3b774ca505284cd7fe5e7e425 100644 --- a/SAS/TMSS/frontend/tmss_webapp/.eslintrc.js +++ b/SAS/TMSS/frontend/tmss_webapp/.eslintrc.js @@ -21,5 +21,10 @@ module.exports = { "react/prop-types": "off", "react/react-in-jsx-scope": "off", "react/jsx-uses-react": "off", + }, + "settings": { + "react": { + "version": "detect" + } } } \ No newline at end of file diff --git a/SAS/TMSS/frontend/tmss_webapp/package-lock.json b/SAS/TMSS/frontend/tmss_webapp/package-lock.json index 9760a1fd5a81acd977110cf3308ee8366c094e31..b43504f432b755df3517ab8ce9a98c14d21a5515 100644 --- a/SAS/TMSS/frontend/tmss_webapp/package-lock.json +++ b/SAS/TMSS/frontend/tmss_webapp/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "license": "ISC", "dependencies": { - "@kevincobain2000/json-to-html-table": "^1.0.1", + "@kevincobain2000/json-to-html-table": "^1.0.4", "react-redux": "^7.2.4", "html2canvas": "^1.0.0-rc.7", "cleave.js": "^1.6.0", @@ -18,8 +18,8 @@ "react-bootstrap-datetimepicker": "0.0.22", "match-sorter": "^4.2.1", "react-tooltip": "^4.5.1", - "axios": "^1.4.0", - "@microlink/react-json-view": "^1.22.2", + "axios": "^1.6.0", + "@microlink/react-json-view": "^1.23.0", "immer": "^10.0.3", "jspdf": "^2.5.1", "interactjs": "^1.10.19", @@ -32,16 +32,17 @@ "flatpickr": "^4.6.13", "reactstrap": "^9.2.0", "react-websocket": "^2.1.0", - "jspdf-autotable": "^3.6.0", + "jspdf-autotable": "^3.7.0", "react-flatpickr": "^3.10.12", "react-bootstrap": "^1.0.1", "chart.js": "^4.4.0", + "react-use-websocket": "^3.0.0", "react-to-print": "^2.12.4", "moment": "^2.29.4", "typescript": "^3.9.5", "react-dom": "^18.2.0", "@apidevtools/json-schema-ref-parser": "^9.0.9", - "papaparse": "^5.3.2", + "papaparse": "^5.4.1", "ag-grid-community": "^24.1.0", "sass": "^1.69.5", "npm-check-updates": "^16.14.6", @@ -67,11 +68,11 @@ "react-json-to-table": "^0.1.7", "pptr-testing-library": "^0.7.0", "@ag-grid-community/all-modules": "^24.1.0", - "replace-in-file": "^7.0.1", + "replace-in-file": "^7.0.2", "chartjs-plugin-annotation": "^3.0.1", "react": "^18.2.0", "jquery": "^3.7.1", - "@json-editor/json-editor": "^2.10.1", + "@json-editor/json-editor": "^2.11.0", "node-polyfill-webpack-plugin": "^2.0.1", "react-calendar-timeline": "^0.28.0", "react-loader-spinner": "^5.4.5", @@ -79,7 +80,7 @@ "@fortawesome/fontawesome-free": "^5.13.1", "react-live-clock": "^6.1.14", "prop-types": "^15.7.2", - "puppeteer": "^18.0.5" + "puppeteer": "^21.4.1" }, "devDependencies": { "eslint": "^8.52.0", @@ -93,15 +94,18 @@ "@testing-library/react": "^14.0.0", "eslint-plugin-react": "^7.33.2", "@babel/preset-env": "^7.23.2", + "@types/jest": "^29.5.6", "babel-polyfill": "^6.26.0", "ajv": "^8.12.0", "jest-expect-message": "^1.1.3", "@testing-library/jest-dom": "^6.1.4", + "@types/react-router-dom": "^5.3.3", "jest-canvas-mock": "^2.5.2", "react-app-rewired": "^2.2.1", "customize-cra": "^1.0.0", "eslint-formatter-gitlab": "^5.0.0", - "react-test-renderer": "^18.2.0" + "react-test-renderer": "^18.2.0", + "jest-editor-support": "^31.1.1" } }, "node_modules/argparse": { @@ -362,6 +366,32 @@ "randombytes": "^2.0.1" } }, + "node_modules/jest-editor-support/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, "node_modules/string-natural-compare": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", @@ -449,6 +479,22 @@ "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" }, + "node_modules/jest-editor-support/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -500,6 +546,18 @@ "@testing-library/dom": ">=7.21.4" } }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, "node_modules/tryer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", @@ -627,7 +685,6 @@ "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, - "peer": true, "dependencies": { "@jest/expect-utils": "^29.7.0", "jest-get-type": "^29.6.3", @@ -673,7 +730,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -734,6 +790,11 @@ "postcss": "^8.4.21" } }, + "node_modules/pac-resolver/node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, "node_modules/gauge": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", @@ -795,6 +856,16 @@ } } }, + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "dev": true, + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, "node_modules/autoprefixer": { "version": "10.4.16", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", @@ -846,6 +917,18 @@ "node": ">= 0.4" } }, + "node_modules/pac-proxy-agent/node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/postcss-normalize-positions": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", @@ -1218,7 +1301,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -1445,7 +1527,6 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -1622,9 +1703,9 @@ } }, "node_modules/@microlink/react-json-view": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/@microlink/react-json-view/-/react-json-view-1.22.2.tgz", - "integrity": "sha512-liJzdlbspT5GbEuPffw4jzZfXOypKLK1Er9br03T31bAaIi/WptZqpcJaXPi7OmwC7v/YYczCkmAS7WaEfItPQ==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@microlink/react-json-view/-/react-json-view-1.23.0.tgz", + "integrity": "sha512-HYJ1nsfO4/qn8afnAMhuk7+5a1vcjEaS8Gm5Vpr1SqdHDY0yLBJGpA+9DvKyxyVKaUkXzKXt3Mif9RcmFSdtYg==", "dependencies": { "flux": "~4.0.1", "react-base16-styling": "~0.6.0", @@ -1943,7 +2024,6 @@ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, - "peer": true, "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^29.6.3", @@ -2157,6 +2237,26 @@ "rollup": "^1.20.0||^2.0.0" } }, + "node_modules/jest-editor-support/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-util/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2615,18 +2715,6 @@ "node": ">=8.10.0" } }, - "node_modules/webpack-dev-server/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, "node_modules/is-nan": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", @@ -2852,6 +2940,21 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-editor-support/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/eslint-formatter-gitlab/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2894,6 +2997,19 @@ "eslint-scope": "5.1.1" } }, + "node_modules/pac-proxy-agent/node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/postcss-modules-values": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", @@ -3075,8 +3191,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", @@ -3163,6 +3278,20 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/babel-plugin-macros": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", @@ -3408,7 +3537,6 @@ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, - "peer": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.6.3", @@ -3465,18 +3593,6 @@ "node": ">= 6" } }, - "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, "node_modules/@jest/source-map": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", @@ -3616,7 +3732,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -3641,18 +3756,6 @@ "react-dom": "^16.8.0 || ^17 || ^18" } }, - "node_modules/eslint-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, "node_modules/websocket-extensions": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", @@ -3727,7 +3830,6 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "peer": true, "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -4108,7 +4210,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -4275,6 +4376,15 @@ "node": ">=6" } }, + "node_modules/jest-editor-support/node_modules/@types/yargs": { + "version": "16.0.7", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", + "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -4290,6 +4400,32 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-editor-support/node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/react-scripts/node_modules/@jest/source-map": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", @@ -4304,6 +4440,15 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-editor-support/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/npm-package-arg/node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -4443,6 +4588,18 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/chromium-bidi": { + "version": "0.4.32", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.32.tgz", + "integrity": "sha512-RJnw0PW3sNdx1WclINVfVVx8JUH+tWTHZNpnEzlcM+Qgvf40dUH34U7gJq+cc/0LE+rbPxeT6ldqWrCbUf4jeg==", + "dependencies": { + "mitt": "3.0.1", + "urlpattern-polyfill": "9.0.0" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, "node_modules/dompurify": { "version": "2.4.7", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.7.tgz", @@ -4825,7 +4982,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -4915,6 +5071,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-editor-support/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -5195,7 +5357,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -5311,9 +5472,9 @@ } }, "node_modules/axios": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", - "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz", + "integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -5965,6 +6126,18 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/replace-in-file/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6560,8 +6733,7 @@ "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/wrap-ansi-cjs/node_modules/color-convert": { "version": "2.0.1", @@ -6601,6 +6773,15 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/streamx": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz", + "integrity": "sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==", + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, "node_modules/react-scripts/node_modules/yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", @@ -6829,6 +7010,26 @@ } } }, + "node_modules/jest-editor-support/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-editor-support/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", @@ -6867,6 +7068,18 @@ "suneditor": "^2.44.10" } }, + "node_modules/proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -7251,7 +7464,6 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -7791,6 +8003,11 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/urlpattern-polyfill": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-9.0.0.tgz", + "integrity": "sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g==" + }, "node_modules/pkg-up/node_modules/find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -7847,8 +8064,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "node_modules/dlv": { "version": "1.1.3", @@ -8546,7 +8762,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "dependencies": { "callsites": "^3.0.0" }, @@ -8758,7 +8973,6 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "peer": true, "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -8869,6 +9083,21 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-editor-support/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/babel-preset-react-app": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", @@ -9068,18 +9297,13 @@ } }, "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, "node_modules/react-scripts/node_modules/jest-cli": { @@ -9230,6 +9454,15 @@ "node": ">=10" } }, + "node_modules/react-use-websocket": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-use-websocket/-/react-use-websocket-3.0.0.tgz", + "integrity": "sha512-BInlbhXYrODBPKIplDAmI0J1VPM+1KhCLN09o+dzgQ8qMyrYs4t5kEYmCrTqyRuMTmpahylHFZWQXpfYyDkqOw==", + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0" + } + }, "node_modules/@jest/types/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", @@ -9548,6 +9781,18 @@ "node": ">=8" } }, + "node_modules/jest-editor-support/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/which-typed-array": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", @@ -10547,6 +10792,15 @@ "react-dom": "*" } }, + "node_modules/jest-editor-support/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/react-json-to-table/node_modules/scheduler": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", @@ -10610,6 +10864,22 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/jest-editor-support/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/react-dev-utils/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", @@ -10806,8 +11076,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "node_modules/semver-diff/node_modules/lru-cache": { "version": "6.0.0", @@ -10892,7 +11161,6 @@ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, - "peer": true, "dependencies": { "chalk": "^4.0.0", "jest-diff": "^29.7.0", @@ -11126,6 +11394,19 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/proxy-agent/node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -11231,10 +11512,22 @@ "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/jest-editor-support/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/json-schema": { @@ -11451,6 +11744,11 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + }, "node_modules/crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -11571,23 +11869,19 @@ } }, "node_modules/puppeteer-core": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-18.2.1.tgz", - "integrity": "sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==", + "version": "21.4.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-21.4.1.tgz", + "integrity": "sha512-Lh0e+oGhUquxVOi1U701gTfFLFvw5gDBFh3CWpnfAvtItmyZKUce4R54VNfOJfi+KKnzhVPdB/lDrg65gdRIng==", "dependencies": { - "cross-fetch": "3.1.5", + "@puppeteer/browsers": "1.8.0", + "chromium-bidi": "0.4.32", + "cross-fetch": "4.0.0", "debug": "4.3.4", - "devtools-protocol": "0.0.1045489", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.9.0" + "devtools-protocol": "0.0.1191157", + "ws": "8.14.2" }, "engines": { - "node": ">=14.1.0" + "node": ">=16.3.0" } }, "node_modules/@testing-library/jest-dom/node_modules/chalk": { @@ -11615,8 +11909,7 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "node_modules/globby": { "version": "11.1.0", @@ -11642,7 +11935,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -11760,7 +12052,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -11895,6 +12186,14 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/get-uri/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -12083,6 +12382,26 @@ "postcss": "^8.4" } }, + "node_modules/degenerator/node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, "node_modules/postcss-color-functional-notation": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", @@ -12307,6 +12626,14 @@ "rc": "cli.js" } }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -12364,7 +12691,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -12631,6 +12957,21 @@ "node": ">=12" } }, + "node_modules/jest-editor-support/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/react-scripts/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -13096,6 +13437,18 @@ "eslint": "^7.5.0 || ^8.0.0" } }, + "node_modules/proxy-agent/node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/builtins": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", @@ -13278,6 +13631,17 @@ "node": ">=10" } }, + "node_modules/proxy-agent/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", @@ -13577,6 +13941,11 @@ "node": ">= 8" } }, + "node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" + }, "node_modules/npm-check-updates/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -14045,25 +14414,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/puppeteer-core/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/jest-circus": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", @@ -14110,6 +14460,18 @@ "node": ">= 10" } }, + "node_modules/jest-editor-support/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "node_modules/jest-runtime": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", @@ -14489,9 +14851,9 @@ } }, "node_modules/replace-in-file": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-7.0.1.tgz", - "integrity": "sha512-KbhgPq04eA+TxXuUxpgWIH9k/TjF+28ofon2PXP7vq6izAILhxOtksCVcLuuQLtyjouBaPdlH6RJYYcSPVxCOA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-7.0.2.tgz", + "integrity": "sha512-tPG+Qmqf+x2Rf1WVdb/9B5tFIf6KJ5hs3fgxh1OTzPRUugPPvyAva7NvCJtnSpmyq6r+ABYcuUOqZkm6yzGSUw==", "dependencies": { "chalk": "^4.1.2", "glob": "^8.1.0", @@ -14680,9 +15042,9 @@ } }, "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", + "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", "dependencies": { "bn.js": "^5.1.1", "browserify-rsa": "^4.0.1", @@ -14744,6 +15106,24 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/pac-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/jest-serializer": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", @@ -15449,6 +15829,27 @@ "react-dom": ">=16.6.0" } }, + "node_modules/jest-editor-support/node_modules/@babel/traverse": { + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz", + "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/postcss-preset-env": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", @@ -15535,6 +15936,14 @@ "popper.js": "^1.16.1" } }, + "node_modules/get-uri/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/safe-regex-test": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", @@ -15726,6 +16135,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "dev": true, + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, "node_modules/react-scripts/node_modules/@jest/core": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", @@ -15824,11 +16244,11 @@ } }, "node_modules/puppeteer-core/node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", "dependencies": { - "node-fetch": "2.6.7" + "node-fetch": "^2.6.12" } }, "node_modules/json5": { @@ -15875,7 +16295,6 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -15928,6 +16347,14 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/basic-ftp": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz", + "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -15946,7 +16373,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "peer": true, "engines": { "node": ">=10" }, @@ -16232,6 +16658,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-uri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.2.tgz", + "integrity": "sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw==", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.0", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/jest-jasmine2/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -16361,6 +16801,17 @@ "node": ">=8" } }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", @@ -16393,16 +16844,17 @@ "source-map": "^0.6.0" } }, - "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, + "node_modules/pac-resolver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz", + "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==", "dependencies": { - "fast-deep-equal": "^3.1.3" + "degenerator": "^5.0.0", + "ip": "^1.1.8", + "netmask": "^2.0.2" }, - "peerDependencies": { - "ajv": "^8.8.2" + "engines": { + "node": ">= 14" } }, "node_modules/dns-equal": { @@ -16466,33 +16918,26 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, + "node_modules/jest-editor-support": { + "version": "31.1.1", + "resolved": "https://registry.npmjs.org/jest-editor-support/-/jest-editor-support-31.1.1.tgz", + "integrity": "sha512-bCKpKWAMLhjK7QDX9geBDzfyvZacl937hnT3Z+yfERBx8bB7yZg2uhvCBErqO51Ie+wgg42Ffo8rn+Nhdr2hHQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/runtime": "^7.20.7", + "@babel/traverse": "7.20.10", + "@babel/types": "^7.20.7", + "core-js": "^3.17.3", + "jest-snapshot": "^27.2.0" + } + }, "node_modules/css-declaration-sorter": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", @@ -16611,6 +17056,31 @@ "node": ">=8" } }, + "node_modules/puppeteer/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/console-browserify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", @@ -17237,6 +17707,19 @@ "get-intrinsic": "^1.2.1" } }, + "node_modules/get-uri/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, "node_modules/npmlog": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", @@ -17350,14 +17833,13 @@ } }, "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", "dependencies": { - "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.1.4" + "tar-stream": "^3.1.5" } }, "node_modules/istanbul-lib-report/node_modules/supports-color": { @@ -18398,27 +18880,37 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/bl/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/jest-editor-support/node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dev": true, "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/core": "^7.7.2", + "semver": "^7.3.2", + "natural-compare": "^1.4.0", + "jest-matcher-utils": "^27.5.1", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "expect": "^27.5.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "jest-message-util": "^27.5.1", + "@types/prettier": "^2.1.5", + "@types/babel__traverse": "^7.0.4", + "@babel/traverse": "^7.7.2", + "@jest/transform": "^27.5.1", + "pretty-format": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0", + "@babel/types": "^7.0.0", + "@jest/types": "^27.5.1", + "graceful-fs": "^4.2.9", + "@babel/generator": "^7.7.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/safe-array-concat": { @@ -18533,7 +19025,6 @@ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, - "peer": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -18641,6 +19132,14 @@ "react-dom": "^18.0.0" } }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.1.tgz", + "integrity": "sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg==", + "engines": { + "node": ">= 14" + } + }, "node_modules/@npmcli/fs/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -18688,18 +19187,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", @@ -18815,6 +19302,24 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/proxy-agent": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", + "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/browserslist": { "version": "4.22.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", @@ -19053,6 +19558,14 @@ "fsevents": "^2.3.2" } }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, "node_modules/react-dev-utils/node_modules/immer": { "version": "9.0.21", "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", @@ -19063,19 +19576,6 @@ "url": "https://opencollective.com/immer" } }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/jest-snapshot/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -19250,6 +19750,18 @@ "node": ">=0.12.0" } }, + "node_modules/jest-editor-support/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, "node_modules/extract-zip/node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -19332,11 +19844,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tar-fs/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, "node_modules/http2-wrapper": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", @@ -19829,7 +20336,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -19882,7 +20388,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "peer": true, "engines": { "node": ">=10" }, @@ -20107,6 +20612,15 @@ "jest": "^27.0.0 || ^28.0.0" } }, + "node_modules/jest-editor-support/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -20160,6 +20674,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" + }, "node_modules/cacache/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -20223,6 +20742,26 @@ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" }, + "node_modules/@puppeteer/browsers": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.8.0.tgz", + "integrity": "sha512-TkRHIV6k2D8OlUe8RtG+5jgOF/H98Myx0M6AOafC8DdNVOFiBSFa5cpRDtpm8LXOa9sVwe0+e6Q3FC56X/DZfg==", + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.3.1", + "tar-fs": "3.0.4", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=16.3.0" + } + }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", @@ -20367,6 +20906,15 @@ "toggle-selection": "^1.0.6" } }, + "node_modules/jest-editor-support/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/moment": { "version": "2.29.4", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", @@ -21160,19 +21708,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/@babel/preset-env": { "version": "7.23.2", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.2.tgz", @@ -21802,6 +22337,18 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/rollup-plugin-terser/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -21963,6 +22510,19 @@ "node": ">=0.6.0" } }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -22294,6 +22854,11 @@ "node": ">=4" } }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, "node_modules/postcss-normalize-charset": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", @@ -22499,6 +23064,16 @@ "node": ">=10" } }, + "node_modules/@types/jest": { + "version": "29.5.6", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.6.tgz", + "integrity": "sha512-/t9NnzkOpXb4Nfvg17ieHE6EeSjDS2SGSpNYfoLbUAeL/EOueU/RSdOWFpfQTXBEM7BguYW1XQ0EbM+6RlIh6w==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", @@ -22786,11 +23361,6 @@ "type": "^1.0.1" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, "node_modules/react-scripts/node_modules/emittery": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", @@ -23243,7 +23813,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "peer": true, "engines": { "node": ">=10" }, @@ -23567,7 +24136,6 @@ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, - "peer": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -23728,6 +24296,21 @@ "node": ">=4" } }, + "node_modules/jest-editor-support/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/raf": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", @@ -23900,12 +24483,17 @@ "node": ">= 8" } }, + "node_modules/jest-editor-support/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -23931,7 +24519,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -24084,6 +24671,18 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/degenerator/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/replace-in-file/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -24239,7 +24838,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -24642,7 +25240,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -24654,6 +25251,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pac-proxy-agent/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/jest-jasmine2/node_modules/jest-resolve": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", @@ -24913,6 +25521,20 @@ "node": ">= 0.6" } }, + "node_modules/puppeteer/node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "optional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/jest-resolve/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -25028,7 +25650,6 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "peer": true, "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -25085,7 +25706,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "engines": { "node": ">=4" } @@ -25235,6 +25855,21 @@ "url": "https://github.com/sponsors/gregberge" } }, + "node_modules/jest-editor-support/node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-each/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -25494,6 +26129,12 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", + "dev": true + }, "node_modules/escodegen": { "version": "1.14.3", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", @@ -25981,7 +26622,6 @@ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, - "peer": true, "dependencies": { "jest-get-type": "^29.6.3" }, @@ -26094,6 +26734,21 @@ "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" }, + "node_modules/jest-editor-support/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/hoist-non-react-statics/node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -26357,19 +27012,17 @@ } }, "node_modules/puppeteer": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-18.2.1.tgz", - "integrity": "sha512-7+UhmYa7wxPh2oMRwA++k8UGVDxh3YdWFB52r9C3tM81T6BU7cuusUSxImz0GEYSOYUKk/YzIhkQ6+vc0gHbxQ==", - "deprecated": "< 19.4.0 is no longer supported", + "version": "21.4.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-21.4.1.tgz", + "integrity": "sha512-opJqQeYMjAB3ICG8lCF3wtSs9k05dozmrEMrHgo3ZWbISiy8qbv/yAJz/6Io221qSh3yURfVf6Z7crrlzKZjLQ==", "hasInstallScript": true, "dependencies": { - "https-proxy-agent": "5.0.1", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "puppeteer-core": "18.2.1" + "@puppeteer/browsers": "1.8.0", + "cosmiconfig": "8.3.6", + "puppeteer-core": "21.4.1" }, "engines": { - "node": ">=14.1.0" + "node": ">=16.3.0" } }, "node_modules/console-control-strings": { @@ -26442,9 +27095,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1045489", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1045489.tgz", - "integrity": "sha512-D+PTmWulkuQW4D1NTiCRCFxF7pQPn0hgp4YyX4wAQ6xYXKOadSWPR3ENGDQ47MW/Ewc9v2rpC/UEEGahgBYpSQ==" + "version": "0.0.1191157", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1191157.tgz", + "integrity": "sha512-Fu2mUhX7zkzLHMJZk5wQTiHdl1eJrhK0GypUoSzogUt51MmYEv/46pCz4PtGGFlr0f2ZyYDzzx5CPtbEkuvcTA==" }, "node_modules/ag-grid-community": { "version": "24.1.0", @@ -26470,6 +27123,11 @@ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", @@ -26525,6 +27183,23 @@ "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", "dev": true }, + "node_modules/jest-editor-support/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -26960,7 +27635,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -27058,7 +27732,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -27737,7 +28410,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -27929,15 +28601,15 @@ } }, "node_modules/ws": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", - "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -28053,16 +28725,6 @@ "workbox-strategies": "6.6.0" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", diff --git a/SAS/TMSS/frontend/tmss_webapp/package.json b/SAS/TMSS/frontend/tmss_webapp/package.json index 0c781678a73a7a2e612912dfeed6407d2f3ca487..ffd5af09778ed5dabc0b67223eaab15d389538ef 100644 --- a/SAS/TMSS/frontend/tmss_webapp/package.json +++ b/SAS/TMSS/frontend/tmss_webapp/package.json @@ -6,12 +6,12 @@ "@ag-grid-community/all-modules": "^24.1.0", "@apidevtools/json-schema-ref-parser": "^9.0.9", "@fortawesome/fontawesome-free": "^5.13.1", - "@json-editor/json-editor": "^2.10.1", - "@kevincobain2000/json-to-html-table": "^1.0.1", - "@microlink/react-json-view": "^1.22.2", + "@json-editor/json-editor": "^2.11.0", + "@kevincobain2000/json-to-html-table": "^1.0.4", + "@microlink/react-json-view": "^1.23.0", "ag-grid-community": "^24.1.0", "ag-grid-react": "^24.1.1", - "axios": "^1.4.0", + "axios": "^1.6.0", "bootstrap": "^4.5.0", "chart.js": "^4.4.0", "chartjs-plugin-annotation": "^3.0.1", @@ -25,20 +25,20 @@ "jquery": "^3.7.1", "json-schema-ref-parser": "^1.0.0-alpha.21", "jspdf": "^2.5.1", - "jspdf-autotable": "^3.6.0", + "jspdf-autotable": "^3.7.0", "katex": "^0.12.0", "lodash": "^4.17.21", "match-sorter": "^4.2.1", "moment": "^2.29.4", "node-polyfill-webpack-plugin": "^2.0.1", "npm-check-updates": "^16.14.6", - "papaparse": "^5.3.2", + "papaparse": "^5.4.1", "pptr-testing-library": "^0.7.0", "primeflex": "^3.3.1", "primeicons": "6.0.1", "primereact": "9.6.2", "prop-types": "^15.7.2", - "puppeteer": "^18.0.5", + "puppeteer": "^21.4.1", "react": "^18.2.0", "react-app-polyfill": "^1.0.6", "react-beautiful-dnd": "^13.1.1", @@ -61,11 +61,11 @@ "react-to-print": "^2.12.4", "react-tooltip": "^4.5.1", "react-transition-group": "^2.5.1", - "react-websocket": "^2.1.0", "react-use-websocket": "^3.0.0", + "react-websocket": "^2.1.0", "reactstrap": "^9.2.0", "redux": "^4.2.1", - "replace-in-file": "^7.0.1", + "replace-in-file": "^7.0.2", "sass": "^1.69.5", "shortcut-buttons-flatpickr": "^0.4.0", "styled-components": "^5.1.1", @@ -139,6 +139,9 @@ "@testing-library/jest-dom": "^6.1.4", "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^14.5.1", + "@types/jest": "^29.5.6", + "@types/react-router-dom": "^5.3.3", + "ajv": "^8.12.0", "babel-jest": "^29.7.0", "babel-polyfill": "^6.26.0", "customize-cra": "^1.0.0", @@ -146,18 +149,19 @@ "eslint-formatter-gitlab": "^5.0.0", "eslint-plugin-react": "^7.33.2", "jest-canvas-mock": "^2.5.2", + "jest-editor-support": "^31.1.1", "jest-expect-message": "^1.1.3", "jest-junit": "^16.0.0", "jest-mock-console": "^2.0.0", "react-app-rewired": "^2.2.1", "react-scripts": "^5.0.1", - "react-test-renderer": "^18.2.0", - "ajv":"^8.12.0" + "react-test-renderer": "^18.2.0" }, "resolutions": { "react-refresh": "0.11.0", "ansi-html": "^0.0.8", - "scss-tokenizer": "0.4.3" + "scss-tokenizer": "0.4.3", + "browserify-sign": "4.2.2" }, "jest": { "transform": { diff --git a/SAS/TMSS/frontend/tmss_webapp/src/App.js b/SAS/TMSS/frontend/tmss_webapp/src/App.js index c767bde7ac207a31aa703b507c3356bfc61fe85a..921c19f556f21059eb6c51a51140efaa9840f845 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/App.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/App.js @@ -70,7 +70,7 @@ class App extends Component { {label: 'Reports', icon: 'pi pi-fw pi-chart-bar', to:'/reports',section: 'reports'}, ]; } - onWrapperClick(event) { + onWrapperClick() { if (!this.menuClick) { this.setState({ overlayMenuActive: false, @@ -110,7 +110,7 @@ class App extends Component { event.preventDefault(); } - onSidebarClick(event) { + onSidebarClick() { this.menuClick = true; } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/__mocks__/observing_strategy_templates.json b/SAS/TMSS/frontend/tmss_webapp/src/__mocks__/observing_strategy_templates.json index fa6ad2592b40a901c11c74cdfbbd1fa39fcc3f7f..59d08b6aced3652692fc2b61be06a5e9cbebcde5 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/__mocks__/observing_strategy_templates.json +++ b/SAS/TMSS/frontend/tmss_webapp/src/__mocks__/observing_strategy_templates.json @@ -1,16 +1,16 @@ { "strategies": [ { - "description": "Beamformed observation and pulsar pipeline for pulsar timing with extra frequency resolution for scintillation studies (default 6x). HBA, 110-188 MHz, 400 SBs, 8-bit raw output (195 kHz, 5.12 us).", - "name": "BF CS rings", - "purpose": "technical_commissioning", + "description": "Beamformed observation and pulsar pipeline for conversion to raw 8-bit data. HBA, 110-188 MHz, 400 SBs, 195 kHz, 5.12 us.", + "name": "BF CV 8-bit", + "purpose": "production", "scheduling_unit_template": { "name": "scheduling unit", "version": 8 }, "state": "active", "template": { - "$schema": "http://localhost:3000/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", "parameters": [ { "name": "Stations", @@ -25,21 +25,21 @@ ] }, { - "name": "Observation Short Description", + "name": "Duration", "refs": [ - "#/tasks/Observation/short_description" + "#/tasks/Observation/specifications_doc/duration" ] }, { - "name": "Pipeline Short Description", + "name": "Observation Short Description", "refs": [ - "#/tasks/Pipeline/short_description" + "#/tasks/Observation/short_description" ] }, { - "name": "Duration", + "name": "Pipeline Short Description", "refs": [ - "#/tasks/Observation/specifications_doc/duration" + "#/tasks/Pipeline/short_description" ] }, { @@ -48,42 +48,6 @@ "#/tasks/Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing", "#/tasks/Observation/specifications_doc/station_configuration/tile_beam" ] - }, - { - "name": "Number of rings CS", - "refs": [ - "#/tasks/Observation/specifications_doc/beamformer/pipelines/0/coherent/SAPs/0/tab_rings/count" - ] - }, - { - "name": "Rings separation CS", - "refs": [ - "#/tasks/Observation/specifications_doc/beamformer/pipelines/0/coherent/SAPs/0/tab_rings/width" - ] - }, - { - "name": "Stokes settings CS", - "refs": [ - "#/tasks/Observation/specifications_doc/beamformer/pipelines/0/coherent/settings/stokes" - ] - }, - { - "name": "Number of channels per subband CS", - "refs": [ - "#/tasks/Observation/specifications_doc/beamformer/pipelines/0/coherent/settings/channels_per_subband" - ] - }, - { - "name": "Downsampling time factor CS", - "refs": [ - "#/tasks/Observation/specifications_doc/beamformer/pipelines/0/coherent/settings/time_integration_factor" - ] - }, - { - "name": "Subbands per file CS", - "refs": [ - "#/tasks/Observation/specifications_doc/beamformer/pipelines/0/coherent/settings/subbands_per_file" - ] } ], "scheduling_constraints_doc": { @@ -102,7 +66,7 @@ }, "scheduling_constraints_template": { "name": "constraints", - "version": 8 + "version": 6 }, "task_relations": [ { @@ -121,7 +85,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -140,7 +104,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -159,7 +123,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -178,7 +142,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -197,7 +161,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -216,7 +180,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } } ], @@ -239,7 +203,7 @@ } }, "Observation": { - "description": "Beamforming observation for default pulsar timing with HBA. Full Core, 8bit, XXYY, 1ch/sub, Nsubs=400", + "description": "Beamforming observation for default pulsar timing with HBA. Full Core, 8bit, XXYY, 1ch/sub, Nsubs=400 ", "short_description": "Baaaa+bb", "specifications_doc": { "beamformer": { @@ -450,18 +414,216 @@ 247, 248, 249, - 250 + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450 ], "method": "copy" }, "tab_rings": { - "count": 2, - "width": 0.001 + "count": 0, + "width": 0.01 }, "tabs": [ { - "allow_after_previous": true, - "duration": 0, "pointing": { "angle1": 0, "angle2": 0, @@ -473,21 +635,6 @@ ] } ], - "settings": { - "channels_per_subband": 16, - "quantisation": { - "bits": 8, - "enabled": false, - "scale_max": 5, - "scale_min": -5 - }, - "stokes": "I", - "subbands_per_file": 488, - "time_integration_factor": 6 - } - }, - "flys eye": { - "enabled": false, "settings": { "channels_per_subband": 1, "quantisation": { @@ -496,30 +643,15 @@ "scale_max": 5, "scale_min": -5 }, - "stokes": "I", - "subbands_per_file": 488, - "time_integration_factor": 1 - } - }, - "incoherent": { - "SAPs": [], - "settings": { - "channels_per_subband": 1, - "quantisation": { - "bits": 8, - "enabled": false, - "scale_max": 5, - "scale_min": -5 - }, - "stokes": "I", - "subbands_per_file": 488, + "stokes": "XXYY", + "subbands_per_file": 20, "time_integration_factor": 1 } }, - "name": "Beamformer StokesI", + "name": "Beamformer CV", "station_groups": [ { - "max_nr_missing": 3, + "max_nr_missing": 4, "stations": [ "CS002", "CS003", @@ -1012,10 +1144,9 @@ } }, "Pipeline": { - "description": "Pulsar Pipeline for HBA pulsar timing observation with additional channels HBA. Full Core, 8bit, XXYY, 6ch/sub, Nsubs=400", + "description": "Pulsar Pipeline for conversion to raw 8 bit data only. HBA. Full Core, 8bit, XXYY, 1ch/sub, Nsubs=400 ", "short_description": "Baaaa+bb/PULP", "specifications_doc": { - "$schema": "http://localhost:3000/schemas/tasktemplate/pulsar%20pipeline/6/ref_resolved", "cluster_resources": { "cores_per_task": 2, "parallel_tasks": 20, @@ -1032,15 +1163,9 @@ "integration_time_factor": 4 }, "enabled": false, - "filterbank": { - "channels_per_part": 120, - "coherent_dedispersion": true, - "enabled": false - }, "optimise_period_dm": false, "rfi_excision": true, - "single_pulse_subintegration": false, - "subintegration_length": 10 + "subintegration_length": -1 }, "output": { "dynamic_spectrum": { @@ -1048,7 +1173,7 @@ "time_average": 0.5 }, "quantisation": { - "enabled": false, + "enabled": true, "scale": 5 } }, @@ -1056,16 +1181,10 @@ "fold_profile": true, "input": { "decode_sigma": 3, - "nr_blocks": 6, + "nr_blocks": 100, "samples_per_block": 8192 }, - "prepdata": { - "dm": -1 - }, - "prepfold": true, - "rfifind": { - "blocks": 1 - }, + "prepfold": false, "rrats": { "dm_range": 5, "enabled": false @@ -1073,7 +1192,7 @@ }, "pulsar": { "name": "", - "strategy": "tabfind+" + "strategy": "meta" }, "single_pulse_search": false }, @@ -1084,22 +1203,22 @@ } } }, - "version": 1, + "version": 19, "id": 1, "state_value": "active", - "purpose_value": "technical_commissioning" + "purpose_value": "production" }, { - "description": "Beamformed observation and pulsar pipeline for conversion to raw 8-bit data. HBA, 110-188 MHz, 400 SBs, 195 kHz, 5.12 us.", - "name": "BF CV 8-bit", - "purpose": "production", + "description": "Beamformed Complex Voltages observation. HBA, 110-188 MHz, 400 SBs, 195 kHz, 5.12 us.", + "name": "BF CV 8-bit - raw", + "purpose": "technical_commissioning", "scheduling_unit_template": { "name": "scheduling unit", "version": 8 }, - "state": "active", + "state": "legacy", "template": { - "$schema": "http://localhost:3000/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", "parameters": [ { "name": "Stations", @@ -1125,12 +1244,6 @@ "#/tasks/Observation/short_description" ] }, - { - "name": "Pipeline Short Description", - "refs": [ - "#/tasks/Pipeline/short_description" - ] - }, { "name": "Target Pointing", "refs": [ @@ -1159,7 +1272,7 @@ }, "task_relations": [ { - "consumer": "Pipeline", + "consumer": "Ingest", "input": { "dataformat": "Beamformed", "datatype": "time series", @@ -1174,45 +1287,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 - } - }, - { - "consumer": "Ingest", - "input": { - "dataformat": "pulp summary", - "datatype": "quality", - "role": "any" - }, - "output": { - "dataformat": "pulp summary", - "datatype": "quality", - "role": "any" - }, - "producer": "Pipeline", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, - { - "consumer": "Ingest", - "input": { - "dataformat": "pulp analysis", - "datatype": "pulsar profile", - "role": "any" - }, - "output": { - "dataformat": "pulp analysis", - "datatype": "pulsar profile", - "role": "any" - }, - "producer": "Pipeline", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 + "version": 6 } }, { @@ -1231,45 +1306,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 - } - }, - { - "consumer": "Cleanup", - "input": { - "dataformat": "pulp summary", - "datatype": "quality", - "role": "any" - }, - "output": { - "dataformat": "pulp summary", - "datatype": "quality", - "role": "any" - }, - "producer": "Pipeline", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, - { - "consumer": "Cleanup", - "input": { - "dataformat": "pulp analysis", - "datatype": "pulsar profile", - "role": "any" - }, - "output": { - "dataformat": "pulp analysis", - "datatype": "pulsar profile", - "role": "any" - }, - "producer": "Pipeline", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 + "version": 6 } } ], @@ -1284,7 +1321,7 @@ } }, "Ingest": { - "description": "Ingest the pipeline outputs dataproducts", + "description": "Ingest the observation dataproducts", "specifications_doc": {}, "specifications_template": { "name": "ingest", @@ -2231,75 +2268,17 @@ "name": "beamforming observation", "version": 8 } - }, - "Pipeline": { - "description": "Pulsar Pipeline for conversion to raw 8 bit data only. HBA. Full Core, 8bit, XXYY, 1ch/sub, Nsubs=400 ", - "short_description": "Baaaa+bb/PULP", - "specifications_doc": { - "cluster_resources": { - "cores_per_task": 2, - "parallel_tasks": 20, - "where": { - "cluster": "CEP4", - "partition": "cpu" - } - }, - "dspsr": { - "digifil": { - "channels_per_part": 20, - "coherent_dedispersion": false, - "dm": 0, - "integration_time_factor": 4 - }, - "enabled": false, - "optimise_period_dm": false, - "rfi_excision": true, - "subintegration_length": -1 - }, - "output": { - "dynamic_spectrum": { - "enabled": false, - "time_average": 0.5 - }, - "quantisation": { - "enabled": true, - "scale": 5 - } - }, - "presto": { - "fold_profile": true, - "input": { - "decode_sigma": 3, - "nr_blocks": 100, - "samples_per_block": 8192 - }, - "prepfold": false, - "rrats": { - "dm_range": 5, - "enabled": false - } - }, - "pulsar": { - "name": "", - "strategy": "meta" - }, - "single_pulse_search": false - }, - "specifications_template": { - "name": "pulsar pipeline", - "version": 6 - } } } }, - "version": 17, + "version": 1, "id": 2, - "state_value": "active", - "purpose_value": "production" + "state_value": "legacy", + "purpose_value": "technical_commissioning" }, { - "description": "Scheduling unit for Fast Radio Burst observations. Complex voltage observation at 110-188 MHz, 1 ch/SB, 5.12us. Pipeline outputs to digifil with extra channels. Specification instructions: Keep coherent dedisperion true and set DM > 0 else digifil fails.", - "name": "BF CV FRB", + "description": "Beamformed Complex voltage observation. Raw BF data converted to 8-bit. Settings for parallel observing with international stations in local mode (subband 12..499, 25 SB/part).", + "name": "BF CV 8-bit for parallel local mode", "purpose": "production", "scheduling_unit_template": { "name": "scheduling unit", @@ -2307,7 +2286,7 @@ }, "state": "active", "template": { - "$schema": "http://localhost:3000/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", "parameters": [ { "name": "Stations", @@ -2322,21 +2301,21 @@ ] }, { - "name": "Observation Name", + "name": "Duration", "refs": [ - "#/tasks/Observation/short_description" + "#/tasks/Observation/specifications_doc/duration" ] }, { - "name": "Pipeline Name", + "name": "Observation Short Description", "refs": [ - "#/tasks/Pipeline/short_description" + "#/tasks/Observation/short_description" ] }, { - "name": "Duration", + "name": "Pipeline Short Description", "refs": [ - "#/tasks/Observation/specifications_doc/duration" + "#/tasks/Pipeline/short_description" ] }, { @@ -2345,49 +2324,70 @@ "#/tasks/Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing", "#/tasks/Observation/specifications_doc/station_configuration/tile_beam" ] - }, - { - "name": "Digifil options", - "refs": [ - "#/tasks/Pipeline/specifications_doc/dspsr/digifil" - ] - }, - { - "name": "Raw output (8bit)", - "refs": [ - "#/tasks/Pipeline/specifications_doc/output/quantisation/enabled" - ] - }, - { - "name": "Subbands per file", - "refs": [ - "#/tasks/Observation/specifications_doc/beamformer/pipelines/0/coherent/settings/subbands_per_file" - ] } ], "scheduling_constraints_doc": { - "scheduler": "dynamic", + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, + "location": "center", + "scheduler": "fixed_time", "sky": { "min_distance": { "jupiter": 0, - "moon": 0.00872665, - "sun": 0.00872665 + "moon": 0.008726646259971648, + "sun": 0.008726646259971648 }, "min_elevation": { - "calibrator": 0.5235987755982988, + "calibrator": 0, "target": 0.5235987755982988 }, + "reference_pointing": { + "enabled": false, + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "_target_name_" + } + }, "transit_offset": { - "from": -21600, - "to": 21600 + "from": -7200, + "to": 7200 } + }, + "time": { + "at": "2023-06-27T23:00:00.00000Z", + "between": [], + "not_between": [] } }, "scheduling_constraints_template": { "name": "constraints", - "version": 8 + "version": 6 }, "task_relations": [ + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, { "consumer": "Pipeline", "input": { @@ -2404,11 +2404,11 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { - "consumer": "Ingest", + "consumer": "Cleanup", "input": { "dataformat": "pulp summary", "datatype": "quality", @@ -2423,11 +2423,11 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { - "consumer": "Ingest", + "consumer": "Cleanup", "input": { "dataformat": "pulp analysis", "datatype": "pulsar profile", @@ -2442,30 +2442,11 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 - } - }, - { - "consumer": "Cleanup", - "input": { - "dataformat": "Beamformed", - "datatype": "time series", - "role": "beamformer" - }, - "output": { - "dataformat": "Beamformed", - "datatype": "time series", - "role": "beamformer" - }, - "producer": "Observation", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 + "version": 6 } }, { - "consumer": "Cleanup", + "consumer": "Ingest", "input": { "dataformat": "pulp summary", "datatype": "quality", @@ -2480,11 +2461,11 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { - "consumer": "Cleanup", + "consumer": "Ingest", "input": { "dataformat": "pulp analysis", "datatype": "pulsar profile", @@ -2499,7 +2480,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } } ], @@ -2507,6 +2488,7 @@ "tasks": { "Cleanup": { "description": "Cleanup all dataproducts from disk", + "short_description": "", "specifications_doc": {}, "specifications_template": { "name": "cleanup", @@ -2515,6 +2497,7 @@ }, "Ingest": { "description": "Ingest the pipeline outputs dataproducts", + "short_description": "", "specifications_doc": {}, "specifications_template": { "name": "ingest", @@ -2522,9 +2505,22 @@ } }, "Observation": { - "description": "Beamforming observation for default baseband recording with HBA, Full Core, 20 min, 8bit, CV, 1ch/sub, Nsubs=400", - "short_description": "FRB YYYYMMDDA", + "description": "Beamforming observation for default pulsar timing with HBA. Full Core, 8bit, XXYY, 1ch/sub, Nsubs=488", + "short_description": "B1919+21", "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, "beamformer": { "pipelines": [ { @@ -2534,6 +2530,45 @@ "name": "SAP0", "subbands": { "list": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, 51, 52, 53, @@ -2933,7 +2968,56 @@ 447, 448, 449, - 450 + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499 ], "method": "copy" }, @@ -2943,6 +3027,8 @@ }, "tabs": [ { + "allow_after_previous": true, + "duration": 0, "pointing": { "angle1": 0, "angle2": 0, @@ -2963,14 +3049,44 @@ "scale_min": -5 }, "stokes": "XXYY", - "subbands_per_file": 20, + "subbands_per_file": 25, + "time_integration_factor": 1 + } + }, + "flys eye": { + "enabled": false, + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "incoherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, "time_integration_factor": 1 } }, "name": "Beamformer CV", "station_groups": [ { - "max_nr_missing": 4, + "max_nr_missing": 12, "stations": [ "CS002", "CS003", @@ -2999,20 +3115,60 @@ } ] } - ] + ], + "ppf": false }, - "duration": 120, + "duration": 7200, "station_configuration": { "SAPs": [ { "digital_pointing": { - "angle1": 0.92934186635, - "angle2": 0.952579228492, + "angle1": 5.06907719268138, + "angle2": 1.3819471262859173, "direction_type": "J2000", - "target": "FRB YYYYMMDDA" + "target": "B1919+21" }, "name": "SAP0", "subbands": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, 51, 52, 53, @@ -3412,7 +3568,56 @@ 447, 448, 449, - 450 + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499 ] } ], @@ -3420,7 +3625,7 @@ "filter": "HBA_110_190", "station_groups": [ { - "max_nr_missing": 4, + "max_nr_missing": 12, "stations": [ "CS002", "CS003", @@ -3449,10 +3654,10 @@ } ], "tile_beam": { - "angle1": 0.92934186635, - "angle2": 0.952579228492, + "angle1": 5.06907719268138, + "angle2": 1.3819471262859173, "direction_type": "J2000", - "target": "Tile Beam on SAP center" + "target": "B1919+21" } } }, @@ -3462,8 +3667,8 @@ } }, "Pipeline": { - "description": "Pulsar Pipeline for FRB observation", - "short_description": "FRB YYYYMMDDA/pulp", + "description": "Pulsar Pipeline for conversion to raw 8 bit data only. HBA. Full Core, 8bit, XXYY, 1ch/sub, Nsubs=488 ", + "short_description": "B1919+21/PULP", "specifications_doc": { "cluster_resources": { "cores_per_task": 2, @@ -3475,18 +3680,18 @@ }, "dspsr": { "digifil": { - "channels_per_part": 320, - "coherent_dedispersion": true, - "dm": 0.0001, + "channels_per_part": 20, + "coherent_dedispersion": false, + "dm": 0, "integration_time_factor": 4 }, "enabled": false, "filterbank": { "channels_per_part": 120, - "coherent_dedispersion": false, + "coherent_dedispersion": true, "enabled": false }, - "optimise_period_dm": true, + "optimise_period_dm": false, "rfi_excision": true, "single_pulse_subintegration": false, "subintegration_length": -1 @@ -3497,7 +3702,7 @@ "time_average": 0.5 }, "quantisation": { - "enabled": false, + "enabled": true, "scale": 5 } }, @@ -3521,10 +3726,10 @@ } }, "pulsar": { - "name": "B9999+99", - "strategy": "manual" + "name": "", + "strategy": "meta" }, - "single_pulse_search": true + "single_pulse_search": false }, "specifications_template": { "name": "pulsar pipeline", @@ -3533,14 +3738,14 @@ } } }, - "version": 20, + "version": 1, "id": 3, "state_value": "active", "purpose_value": "production" }, { - "description": "Beamformed observation and pulsar pipeline for pulsar timing with extra frequency resolution for scintillation studies (default 6x). HBA, 110-188 MHz, 400 SBs, 8-bit raw output (195 kHz, 5.12 us).", - "name": "BF CV Pulsar Timing Scintillation", + "description": "Scheduling unit for Fast Radio Burst observations. Complex voltage observation at 110-188 MHz, 1 ch/SB, 5.12us. Pipeline outputs to digifil with extra channels. Specification instructions: Keep coherent dedisperion true and set DM > 0 else digifil fails.", + "name": "BF CV FRB", "purpose": "production", "scheduling_unit_template": { "name": "scheduling unit", @@ -3548,7 +3753,7 @@ }, "state": "active", "template": { - "$schema": "http://localhost:3000/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", "parameters": [ { "name": "Stations", @@ -3563,13 +3768,13 @@ ] }, { - "name": "Observation Short Description", + "name": "Observation Name", "refs": [ "#/tasks/Observation/short_description" ] }, { - "name": "Pipeline Short Description", + "name": "Pipeline Name", "refs": [ "#/tasks/Pipeline/short_description" ] @@ -3588,15 +3793,9 @@ ] }, { - "name": "Optimise period & DM", - "refs": [ - "#/tasks/Pipeline/specifications_doc/dspsr/optimise_period_dm" - ] - }, - { - "name": "Subintegration time", + "name": "Digifil options", "refs": [ - "#/tasks/Pipeline/specifications_doc/dspsr/subintegration_length" + "#/tasks/Pipeline/specifications_doc/dspsr/digifil" ] }, { @@ -3610,12 +3809,6 @@ "refs": [ "#/tasks/Observation/specifications_doc/beamformer/pipelines/0/coherent/settings/subbands_per_file" ] - }, - { - "name": "Frequency channels per file (multiple of subbands per file)", - "refs": [ - "#/tasks/Pipeline/specifications_doc/dspsr/filterbank/channels_per_part" - ] } ], "scheduling_constraints_doc": { @@ -3626,6 +3819,10 @@ "moon": 0.00872665, "sun": 0.00872665 }, + "min_elevation": { + "calibrator": 0.5235987755982988, + "target": 0.5235987755982988 + }, "transit_offset": { "from": -21600, "to": 21600 @@ -3634,7 +3831,7 @@ }, "scheduling_constraints_template": { "name": "constraints", - "version": 8 + "version": 7 }, "task_relations": [ { @@ -3653,7 +3850,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -3672,7 +3869,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -3691,7 +3888,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -3710,7 +3907,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -3729,7 +3926,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -3748,7 +3945,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } } ], @@ -3771,8 +3968,8 @@ } }, "Observation": { - "description": "Beamforming observation for default pulsar timing with HBA. Full Core, 8bit, XXYY, 1ch/sub, Nsubs=400", - "short_description": "Baaaa+bb", + "description": "Beamforming observation for default baseband recording with HBA, Full Core, 20 min, 8bit, CV, 1ch/sub, Nsubs=400", + "short_description": "FRB YYYYMMDDA", "specifications_doc": { "beamformer": { "pipelines": [ @@ -4248,8 +4445,7 @@ } ] } - ], - "ppf": false + ] }, "duration": 120, "station_configuration": { @@ -4259,7 +4455,7 @@ "angle1": 0.92934186635, "angle2": 0.952579228492, "direction_type": "J2000", - "target": "Baaaa+bb" + "target": "FRB YYYYMMDDA" }, "name": "SAP0", "subbands": [ @@ -4702,7 +4898,7 @@ "angle1": 0.92934186635, "angle2": 0.952579228492, "direction_type": "J2000", - "target": "Baaaa+bb" + "target": "Tile Beam on SAP center" } } }, @@ -4712,8 +4908,8 @@ } }, "Pipeline": { - "description": "Pulsar Pipeline for HBA pulsar timing observation with additional channels HBA. Full Core, 8bit, XXYY, 6ch/sub, Nsubs=400", - "short_description": "Baaaa+bb/PULP", + "description": "Pulsar Pipeline for FRB observation", + "short_description": "FRB YYYYMMDDA/pulp", "specifications_doc": { "cluster_resources": { "cores_per_task": 2, @@ -4725,20 +4921,21 @@ }, "dspsr": { "digifil": { - "channels_per_part": 20, - "coherent_dedispersion": false, - "dm": 0, + "channels_per_part": 320, + "coherent_dedispersion": true, + "dm": 0.0001, "integration_time_factor": 4 }, - "enabled": true, + "enabled": false, "filterbank": { "channels_per_part": 120, - "coherent_dedispersion": true, - "enabled": true + "coherent_dedispersion": false, + "enabled": false }, - "optimise_period_dm": false, + "optimise_period_dm": true, "rfi_excision": true, - "subintegration_length": 10 + "single_pulse_subintegration": false, + "subintegration_length": -1 }, "output": { "dynamic_spectrum": { @@ -4746,7 +4943,7 @@ "time_average": 0.5 }, "quantisation": { - "enabled": true, + "enabled": false, "scale": 5 } }, @@ -4757,17 +4954,23 @@ "nr_blocks": 100, "samples_per_block": 8192 }, + "prepdata": { + "dm": -1 + }, "prepfold": false, + "rfifind": { + "blocks": 16 + }, "rrats": { "dm_range": 5, "enabled": false } }, "pulsar": { - "name": "", - "strategy": "meta" + "name": "B9999+99", + "strategy": "manual" }, - "single_pulse_search": false + "single_pulse_search": true }, "specifications_template": { "name": "pulsar pipeline", @@ -4776,14 +4979,14 @@ } } }, - "version": 11, + "version": 20, "id": 4, "state_value": "active", "purpose_value": "production" }, { - "description": "Beamformed observation and pulsar pipeline for pulsar timing. HBA, 110-188 MHz, 400 SBs, 195 kHz, 5.12 us.", - "name": "BF Pulsar Timing", + "description": "Beamformed observation and pulsar pipeline for pulsar timing with extra frequency resolution for scintillation studies (default 6x). HBA, 110-188 MHz, 400 SBs, 8-bit raw output (195 kHz, 5.12 us).", + "name": "BF CV Pulsar Timing Scintillation", "purpose": "production", "scheduling_unit_template": { "name": "scheduling unit", @@ -4791,7 +4994,7 @@ }, "state": "active", "template": { - "$schema": "http://localhost:3000/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", "parameters": [ { "name": "Stations", @@ -4805,12 +5008,6 @@ "#/scheduling_constraints_doc" ] }, - { - "name": "Duration", - "refs": [ - "#/tasks/Observation/specifications_doc/duration" - ] - }, { "name": "Observation Short Description", "refs": [ @@ -4823,6 +5020,12 @@ "#/tasks/Pipeline/short_description" ] }, + { + "name": "Duration", + "refs": [ + "#/tasks/Observation/specifications_doc/duration" + ] + }, { "name": "Target Pointing", "refs": [ @@ -4841,6 +5044,24 @@ "refs": [ "#/tasks/Pipeline/specifications_doc/dspsr/subintegration_length" ] + }, + { + "name": "Raw output (8bit)", + "refs": [ + "#/tasks/Pipeline/specifications_doc/output/quantisation/enabled" + ] + }, + { + "name": "Subbands per file", + "refs": [ + "#/tasks/Observation/specifications_doc/beamformer/pipelines/0/coherent/settings/subbands_per_file" + ] + }, + { + "name": "Frequency channels per file (multiple of subbands per file)", + "refs": [ + "#/tasks/Pipeline/specifications_doc/dspsr/filterbank/channels_per_part" + ] } ], "scheduling_constraints_doc": { @@ -4859,7 +5080,7 @@ }, "scheduling_constraints_template": { "name": "constraints", - "version": 8 + "version": 7 }, "task_relations": [ { @@ -4878,7 +5099,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -4897,7 +5118,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -4916,7 +5137,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -4935,7 +5156,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -4954,7 +5175,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -4973,7 +5194,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } } ], @@ -5937,7 +6158,7 @@ } }, "Pipeline": { - "description": "Pulsar Pipeline for default HBA pulsar timing observation. HBA. Full Core, 8bit, XXYY, 1ch/sub, Nsubs=400", + "description": "Pulsar Pipeline for HBA pulsar timing observation with additional channels HBA. Full Core, 8bit, XXYY, 6ch/sub, Nsubs=400", "short_description": "Baaaa+bb/PULP", "specifications_doc": { "cluster_resources": { @@ -5956,6 +6177,11 @@ "integration_time_factor": 4 }, "enabled": true, + "filterbank": { + "channels_per_part": 120, + "coherent_dedispersion": true, + "enabled": true + }, "optimise_period_dm": false, "rfi_excision": true, "subintegration_length": 10 @@ -5966,7 +6192,7 @@ "time_average": 0.5 }, "quantisation": { - "enabled": false, + "enabled": true, "scale": 5 } }, @@ -5996,27 +6222,27 @@ } } }, - "version": 23, + "version": 11, "id": 5, "state_value": "active", "purpose_value": "production" }, { - "description": "IDOLS daytime observation on single station CS032, ingest, cleanup", - "name": "IDOLS daytime", + "description": "A beamformed flys eye observation with the LBA to CasA, CygA and PerA used for ionospheric monitoring.", + "name": "BF FE - Ionospheric Scintillation", "purpose": "production", "scheduling_unit_template": { "name": "scheduling unit", - "version": 8 + "version": 2 }, - "state": "active", + "state": "legacy", "template": { - "$schema": "http://localhost:3000/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", "parameters": [ { "name": "Stations", "refs": [ - "#/tasks/BF 1 station LBA/specifications_doc/station_configuration/station_groups" + "#/tasks/Observation/specifications_doc/station_configuration/station_groups" ] }, { @@ -6026,35 +6252,38 @@ ] }, { - "name": "Duration", - "refs": [ - "#/tasks/BF 1 station LBA/specifications_doc/duration" - ] - }, - { - "name": "Description", + "name": "Duration FE1", "refs": [ - "#/tasks/BF 1 station LBA/short_description" + "#/tasks/Observation/specifications_doc/duration" ] } ], "scheduling_constraints_doc": { "daily": { "avoid_twilight": false, - "require_day": true, + "require_day": false, "require_night": false }, "scheduler": "dynamic", "sky": { "min_distance": { - "jupiter": 0, - "moon": 0, - "sun": 0 + "jupiter": 0.00872665, + "moon": 0.00872665, + "sun": 0.00872665 }, "min_elevation": { "calibrator": 0, "target": 0 }, + "reference_pointing": { + "enabled": false, + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "_target_name_" + } + }, "transit_offset": { "from": -43200, "to": 43200 @@ -6067,7 +6296,7 @@ }, "scheduling_constraints_template": { "name": "constraints", - "version": 7 + "version": 6 }, "task_relations": [ { @@ -6082,26 +6311,7 @@ "datatype": "time series", "role": "beamformer" }, - "producer": "BF 1 station LBA", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 6 - } - }, - { - "consumer": "Ingest", - "input": { - "dataformat": "Beamformed", - "datatype": "time series", - "role": "beamformer" - }, - "output": { - "dataformat": "Beamformed", - "datatype": "time series", - "role": "beamformer" - }, - "producer": "BF 1 station LBA", + "producer": "Observation", "selection_doc": {}, "selection_template": { "name": "all", @@ -6111,9 +6321,18 @@ ], "task_scheduling_relations": [], "tasks": { - "BF 1 station LBA": { - "description": "Beamformed observation with a single station LBA on the Sun with a calibrator beam (default CasA), 5-88 MHz, 16 ch/SB, 0.01s", - "short_description": "Sun_spectrum_LBA-YYYYMMDD-runX", + "Cleanup": { + "description": "Cleaning up all output dataproducts for this scheduling unit", + "short_description": "Cleanup", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 6 + } + }, + "Observation": { + "description": "Fly's Eye observation with all available stations", + "short_description": "IoS fly's eye - 2022????", "specifications_doc": { "QA": { "file_conversion": { @@ -6121,10 +6340,10 @@ "nr_of_subbands": -1, "nr_of_timestamps": 256 }, - "inspection_plots": "msplots", + "inspection_plots": "dynspec", "plots": { "autocorrelation": true, - "crosscorrelation": true, + "crosscorrelation": false, "enabled": false } }, @@ -6132,875 +6351,24 @@ "pipelines": [ { "coherent": { - "SAPs": [ - { - "name": "SAP_Sun", - "subbands": { - "list": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453 - ], - "method": "copy" - }, - "tab_rings": { - "count": 0, - "width": 0.01 - }, - "tabs": [ - { - "allow_after_previous": true, - "duration": 0, - "pointing": { - "angle1": 0, - "angle2": 0, - "direction_type": "SUN", - "target": "Sun" - }, - "relative": true - } - ] + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 }, - { - "name": "SAP_Cal", - "subbands": { - "list": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453 - ], - "method": "copy" - }, - "tab_rings": { - "count": 0, - "width": 0.01 - }, - "tabs": [ - { - "allow_after_previous": true, - "duration": 0, - "pointing": { - "angle1": 0, - "angle2": 0, - "direction_type": "J2000", - "target": "Calibrator" - }, - "relative": true - } - ] - } - ], - "settings": { - "channels_per_subband": 16, - "quantisation": { - "bits": 8, - "enabled": false, - "scale_max": 5, - "scale_min": -5 - }, - "stokes": "IQUV", + "stokes": "I", "subbands_per_file": 488, - "time_integration_factor": 128 + "time_integration_factor": 1 } }, "flys eye": { - "enabled": false, + "enabled": true, "settings": { - "channels_per_subband": 1, + "channels_per_subband": 16, "quantisation": { "bits": 8, "enabled": false, @@ -7009,7 +6377,7 @@ }, "stokes": "I", "subbands_per_file": 488, - "time_integration_factor": 1 + "time_integration_factor": 128 } }, "incoherent": { @@ -7027,12 +6395,63 @@ "time_integration_factor": 1 } }, - "name": "CS_Sun", + "name": "FE", "station_groups": [ { - "max_nr_missing": 0, + "max_nr_missing": 22, "stations": [ - "CS032" + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" ] } ] @@ -7040,92 +6459,18 @@ ], "ppf": false }, - "duration": 660, + "duration": 300, "station_configuration": { "SAPs": [ { "digital_pointing": { - "angle1": 0, - "angle2": 0, - "direction_type": "SUN", - "target": "Sun" + "angle1": 6.123487680622106, + "angle2": 1.026515399560465, + "direction_type": "J2000", + "target": "CasA" }, - "name": "SAP_Sun", + "name": "FE_pointing1", "subbands": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, 128, 129, 130, @@ -7325,230 +6670,317 @@ 324, 325, 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453 + 327 ] }, { "digital_pointing": { - "angle1": 6.123487680622106, - "angle2": 1.026515399560465, + "angle1": 5.233686612086286, + "angle2": 0.7109409630663268, "direction_type": "J2000", - "target": "CasA" + "target": "CygA" }, - "name": "SAP_Cal", + "name": "FE_pointing2", "subbands": [ - 54, - 80, - 84, - 88, - 92, - 96, - 100, - 104, - 108, - 112, - 116, - 120, - 124, 128, + 129, + 130, + 131, 132, + 133, + 134, + 135, 136, + 137, + 138, + 139, 140, + 141, + 142, + 143, 144, + 145, + 146, + 147, 148, + 149, + 150, + 151, 152, + 153, + 154, + 155, 156, + 157, + 158, + 159, 160, + 161, + 162, + 163, 164, + 165, + 166, + 167, 168, + 169, + 170, + 171, 172, + 173, + 174, + 175, 176, + 177, + 178, + 179, 180, + 181, + 182, + 183, 184, + 185, + 186, + 187, 188, + 189, + 190, + 191, 192, + 193, + 194, + 195, 196, + 197, + 198, + 199, 200, + 201, + 202, + 203, 204, + 205, + 206, + 207, 208, + 209, + 210, + 211, 212, + 213, + 214, + 215, 216, + 217, + 218, + 219, 220, + 221, + 222, + 223, 224, + 225, + 226, + 227, 228, + 229, + 230, + 231, 232, + 233, + 234, + 235, 236, + 237, + 238, + 239, 240, + 241, + 242, + 243, 244, + 245, + 246, + 247, 248, + 249, + 250, + 251, 252, + 253, + 254, + 255, 256, + 257, + 258, + 259, 260, + 261, + 262, + 263, 264, + 265, + 266, + 267, 268, + 269, + 270, + 271, 272, + 273, + 274, + 275, 276, + 277, + 278, + 279, 280, + 281, + 282, + 283, 284, + 285, + 286, + 287, 288, + 289, + 290, + 291, 292, + 293, + 294, + 295, 296, + 297, + 298, + 299, 300, + 301, + 302, + 303, 304, + 305, + 306, + 307, 308, + 309, + 310, + 311, 312, + 313, + 314, + 315, 316, + 317, + 318, + 319, 320, + 321, + 322, + 323, 324, - 328, - 332, - 336, - 340, - 344, - 348, - 352, - 356, - 360, - 364, - 368, - 372, - 376, - 380, - 384, - 388, - 392, - 394, - 396, - 400, - 404, - 408, - 412 + 325, + 326, + 327 + ] + }, + { + "digital_pointing": { + "angle1": 0.8718028696789926, + "angle2": 0.7245157461373939, + "direction_type": "J2000", + "target": "PerA" + }, + "name": "FE_pointing3", + "subbands": [ + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327 ] } ], @@ -7556,17 +6988,68 @@ "filter": "LBA_10_90", "station_groups": [ { - "max_nr_missing": 0, + "max_nr_missing": 22, "stations": [ - "CS032" + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" ] } ], "tile_beam": { - "angle1": 0, - "angle2": 0, - "direction_type": "SUN", - "target": "Sun" + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_target_name_IPS_" } } }, @@ -7574,35 +7057,17 @@ "name": "beamforming observation", "version": 8 } - }, - "Cleanup": { - "description": "Cleaning up all output dataproducts for this scheduling unit", - "short_description": "", - "specifications_doc": {}, - "specifications_template": { - "name": "cleanup", - "version": 7 - } - }, - "Ingest": { - "description": "", - "short_description": "", - "specifications_doc": {}, - "specifications_template": { - "name": "ingest", - "version": 7 - } } } }, - "version": 1, + "version": 2, "id": 6, - "state_value": "active", + "state_value": "legacy", "purpose_value": "production" }, { - "description": "IDOLS nighttime observation on single station CS032, ingest, cleanup", - "name": "IDOLS nighttime", + "description": "A beamformed flys eye observation with the LBA to CasA, CygA and PerA used for ionospheric monitoring.", + "name": "BF FE - Ionospheric Scintillation", "purpose": "production", "scheduling_unit_template": { "name": "scheduling unit", @@ -7610,12 +7075,12 @@ }, "state": "active", "template": { - "$schema": "http://localhost:3000/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", "parameters": [ { "name": "Stations", "refs": [ - "#/tasks/BF 1 station LBA/specifications_doc/station_configuration/station_groups" + "#/tasks/Observation/specifications_doc/station_configuration/station_groups" ] }, { @@ -7625,15 +7090,9 @@ ] }, { - "name": "Duration", - "refs": [ - "#/tasks/BF 1 station LBA/specifications_doc/duration" - ] - }, - { - "name": "Description", + "name": "Duration FE1", "refs": [ - "#/tasks/BF 1 station LBA/short_description" + "#/tasks/Observation/specifications_doc/duration" ] } ], @@ -7646,9 +7105,9 @@ "scheduler": "dynamic", "sky": { "min_distance": { - "jupiter": 0, - "moon": 0, - "sun": 0 + "jupiter": 0.00872665, + "moon": 0.00872665, + "sun": 0.00872665 }, "min_elevation": { "calibrator": 0, @@ -7690,26 +7149,7 @@ "datatype": "time series", "role": "beamformer" }, - "producer": "BF 1 station LBA", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 6 - } - }, - { - "consumer": "Ingest", - "input": { - "dataformat": "Beamformed", - "datatype": "time series", - "role": "beamformer" - }, - "output": { - "dataformat": "Beamformed", - "datatype": "time series", - "role": "beamformer" - }, - "producer": "BF 1 station LBA", + "producer": "Observation", "selection_doc": {}, "selection_template": { "name": "all", @@ -7719,9 +7159,18 @@ ], "task_scheduling_relations": [], "tasks": { - "BF 1 station LBA": { - "description": "Beamformed observation with a single station LBA on the Sun with a calibrator beam (default CasA), 5-88 MHz, 16 ch/SB, 0.01s", - "short_description": "IDOLS_nighttime_spectrum_LBA-YYYYMMDD-runX", + "Cleanup": { + "description": "Cleaning up all output dataproducts for this scheduling unit", + "short_description": "Cleanup", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Observation": { + "description": "Fly's Eye observation with all available stations", + "short_description": "IoS flys eye", "specifications_doc": { "QA": { "file_conversion": { @@ -7729,10 +7178,10 @@ "nr_of_subbands": -1, "nr_of_timestamps": 256 }, - "inspection_plots": "msplots", + "inspection_plots": "dynspec", "plots": { "autocorrelation": true, - "crosscorrelation": true, + "crosscorrelation": false, "enabled": false } }, @@ -7740,450 +7189,24 @@ "pipelines": [ { "coherent": { - "SAPs": [ - { - "name": "SAP_Cal", - "subbands": { - "list": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453 - ], - "method": "copy" - }, - "tab_rings": { - "count": 0, - "width": 0.01 - }, - "tabs": [ - { - "allow_after_previous": true, - "duration": 0, - "pointing": { - "angle1": 0, - "angle2": 0, - "direction_type": "J2000", - "target": "Calibrator" - }, - "relative": true - } - ] - } - ], + "SAPs": [], "settings": { - "channels_per_subband": 16, + "channels_per_subband": 1, "quantisation": { "bits": 8, "enabled": false, "scale_max": 5, "scale_min": -5 }, - "stokes": "IQUV", + "stokes": "I", "subbands_per_file": 488, - "time_integration_factor": 128 + "time_integration_factor": 1 } }, "flys eye": { - "enabled": false, + "enabled": true, "settings": { - "channels_per_subband": 1, + "channels_per_subband": 16, "quantisation": { "bits": 8, "enabled": false, @@ -8192,7 +7215,7 @@ }, "stokes": "I", "subbands_per_file": 488, - "time_integration_factor": 1 + "time_integration_factor": 128 } }, "incoherent": { @@ -8210,12 +7233,62 @@ "time_integration_factor": 1 } }, - "name": "CS_Sun", + "name": "FE", "station_groups": [ { - "max_nr_missing": 0, + "max_nr_missing": 22, "stations": [ - "CS032" + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" ] } ] @@ -8223,7 +7296,7 @@ ], "ppf": false }, - "duration": 660, + "duration": 300, "station_configuration": { "SAPs": [ { @@ -8233,658 +7306,714 @@ "direction_type": "J2000", "target": "CasA" }, - "name": "SAP_Cal", + "name": "FE_pointing1", "subbands": [ - 54, - 80, - 84, - 88, - 92, - 96, - 100, - 104, - 108, - 112, - 116, - 120, - 124, 128, + 129, + 130, + 131, 132, + 133, + 134, + 135, 136, + 137, + 138, + 139, 140, + 141, + 142, + 143, 144, + 145, + 146, + 147, 148, + 149, + 150, + 151, 152, + 153, + 154, + 155, 156, + 157, + 158, + 159, 160, + 161, + 162, + 163, 164, + 165, + 166, + 167, 168, + 169, + 170, + 171, 172, + 173, + 174, + 175, 176, + 177, + 178, + 179, 180, + 181, + 182, + 183, 184, + 185, + 186, + 187, 188, + 189, + 190, + 191, 192, + 193, + 194, + 195, 196, + 197, + 198, + 199, 200, + 201, + 202, + 203, 204, + 205, + 206, + 207, 208, + 209, + 210, + 211, 212, + 213, + 214, + 215, 216, + 217, + 218, + 219, 220, + 221, + 222, + 223, 224, + 225, + 226, + 227, 228, + 229, + 230, + 231, 232, + 233, + 234, + 235, 236, + 237, + 238, + 239, 240, + 241, + 242, + 243, 244, + 245, + 246, + 247, 248, + 249, + 250, + 251, 252, + 253, + 254, + 255, 256, + 257, + 258, + 259, 260, + 261, + 262, + 263, 264, + 265, + 266, + 267, 268, + 269, + 270, + 271, 272, + 273, + 274, + 275, 276, + 277, + 278, + 279, 280, + 281, + 282, + 283, 284, + 285, + 286, + 287, 288, + 289, + 290, + 291, 292, + 293, + 294, + 295, 296, + 297, + 298, + 299, 300, + 301, + 302, + 303, 304, + 305, + 306, + 307, 308, + 309, + 310, + 311, 312, + 313, + 314, + 315, 316, + 317, + 318, + 319, 320, + 321, + 322, + 323, 324, - 328, - 332, - 336, - 340, - 344, - 348, - 352, - 356, - 360, - 364, - 368, - 372, - 376, - 380, - 384, - 388, - 392, - 394, - 396, - 400, - 404, - 408, - 412 + 325, + 326, + 327 ] - } - ], - "antenna_set": "LBA_OUTER", - "filter": "LBA_10_90", - "station_groups": [ + }, { - "max_nr_missing": 0, - "stations": [ - "CS032" - ] - } - ], - "tile_beam": { - "angle1": 0, - "angle2": 0, - "direction_type": "SUN", - "target": "Sun" - } - } - }, - "specifications_template": { - "name": "beamforming observation", - "version": 8 - } - }, - "Cleanup": { - "description": "Cleaning up all output dataproducts for this scheduling unit", - "short_description": "", - "specifications_doc": {}, - "specifications_template": { - "name": "cleanup", - "version": 7 - } - }, - "Ingest": { - "description": "", - "short_description": "", - "specifications_doc": {}, - "specifications_template": { - "name": "ingest", - "version": 7 - } - } - } - }, - "version": 1, - "id": 7, - "state_value": "active", - "purpose_value": "production" + "digital_pointing": { + "angle1": 5.233686612086286, + "angle2": 0.7109409630663268, + "direction_type": "J2000", + "target": "CygA" + }, + "name": "FE_pointing2", + "subbands": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327 + ] + }, + { + "digital_pointing": { + "angle1": 0.8718028696789926, + "angle2": 0.7245157461373939, + "direction_type": "J2000", + "target": "PerA" + }, + "name": "FE_pointing3", + "subbands": [ + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327 + ] + } + ], + "antenna_set": "LBA_OUTER", + "filter": "LBA_10_90", + "station_groups": [ + { + "max_nr_missing": 22, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_target_name_IPS_" + } + } + }, + "specifications_template": { + "name": "beamforming observation", + "version": 8 + } + } + } + }, + "version": 5, + "id": 7, + "state_value": "active", + "purpose_value": "production" }, { - "description": "This observation strategy template defines a Rapid Response IM + BF observation (target-calibrator, two TABs recording XXYY), Preprocessing pipeline, Pulsar pipeline (converting to 8 bit only), Cleanup", - "name": "IM + BF 2 CV - 8 bit", - "purpose": "technical_commissioning", + "description": "Beamformed observation and pulsar pipeline for pulsar timing. HBA, 110-188 MHz, 400 SBs, 195 kHz, 5.12 us.", + "name": "BF Pulsar Timing", + "purpose": "production", "scheduling_unit_template": { "name": "scheduling unit", "version": 8 }, - "state": "development", + "state": "legacy", "template": { - "$schema": "http://localhost:3000/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", - "tasks": { - "Ingest": { - "description": "Ingest all preprocessed dataproducts", - "specifications_doc": {}, - "specifications_template": { - "name": "ingest", - "version": 7 - } + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/station_groups" + ] }, - "Cleanup": { - "description": "Clean up all dataproducts from disk after ingest", - "specifications_doc": {}, - "specifications_template": { - "name": "cleanup", - "version": 7 - } + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] }, - "Pipeline target": { - "description": "Preprocessing Pipeline for Target Observation target, SAP000, 120-168 MHz, 1s, 16ch/sb", - "short_description": "Paaa+01/TP", - "specifications_doc": { - "flag": { - "rfi_strategy": "HBAdefault", - "outerchannels": true, - "autocorrelations": true - }, - "demix": { - "sources": [], - "time_steps": 10, - "ignore_target": false, - "frequency_steps": 64 - }, - "average": { - "time_steps": 1, - "frequency_steps": 4 - }, - "storagemanager": "dysco", - "cluster_resources": { - "where": { - "cluster": "CEP4", - "partition": "cpu" - }, - "cores_per_task": 2, - "parallel_tasks": 61 - } + { + "name": "Duration", + "refs": [ + "#/tasks/Observation/specifications_doc/duration" + ] + }, + { + "name": "Observation Short Description", + "refs": [ + "#/tasks/Observation/short_description" + ] + }, + { + "name": "Pipeline Short Description", + "refs": [ + "#/tasks/Pipeline/short_description" + ] + }, + { + "name": "Target Pointing", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing", + "#/tasks/Observation/specifications_doc/station_configuration/tile_beam" + ] + }, + { + "name": "Optimise period & DM", + "refs": [ + "#/tasks/Pipeline/specifications_doc/dspsr/optimise_period_dm" + ] + }, + { + "name": "Subintegration time", + "refs": [ + "#/tasks/Pipeline/specifications_doc/dspsr/subintegration_length" + ] + } + ], + "scheduling_constraints_doc": { + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0, + "moon": 0.00872665, + "sun": 0.00872665 }, - "specifications_template": { - "name": "preprocessing pipeline", - "version": 8 - } - }, - "Pulsar Pipeline": { - "description": "Pulsar Pipeline for conversion to raw 8 bit data only. HBA. Full Core, 8bit, XXYY, 1ch/sub, Nsubs=400 ", - "short_description": "Baaaa+bb/PULP", - "specifications_doc": { - "dspsr": { - "digifil": { - "dm": 0, - "channels_per_part": 20, - "coherent_dedispersion": false, - "integration_time_factor": 4 - }, - "enabled": false, - "rfi_excision": true, - "optimise_period_dm": false, - "subintegration_length": -1 - }, - "output": { - "quantisation": { - "scale": 5, - "enabled": true - }, - "dynamic_spectrum": { - "enabled": false, - "time_average": 0.5 - } - }, - "presto": { - "input": { - "nr_blocks": 100, - "decode_sigma": 3, - "samples_per_block": 8192 - }, - "rrats": { - "enabled": false, - "dm_range": 5 - }, - "prepfold": false, - "fold_profile": true - }, - "pulsar": { - "name": "", - "strategy": "meta" - }, - "cluster_resources": { - "where": { - "cluster": "CEP4", - "partition": "cpu" - }, - "cores_per_task": 2, - "parallel_tasks": 20 - }, - "single_pulse_search": false - }, - "specifications_template": { - "name": "pulsar pipeline", - "version": 6 - } - }, - "Target Observation": { - "description": "Target Observation", - "short_description": "_Target_Name_", - "specifications_doc": { - "QA": { - "plots": { - "enabled": false, - "autocorrelation": true, - "crosscorrelation": true - }, - "file_conversion": { - "enabled": false, - "nr_of_subbands": -1, - "nr_of_timestamps": 256 - }, - "inspection_plots": "msplots" - }, - "duration": 600, - "beamformer": { - "ppf": false, - "pipelines": [ - { - "name": "_beamformer_name_", - "coherent": { - "SAPs": [ - { - "name": "SAP", - "tabs": [ - { - "pointing": { - "angle1": 0, - "angle2": 0, - "target": "OnTarget", - "direction_type": "J2000" - }, - "relative": true - }, - { - "pointing": { - "angle1": 0.0002908882087, - "angle2": 0, - "target": "OffTarget", - "direction_type": "J2000" - }, - "relative": true - } - ], - "subbands": { - "list": [], - "method": "copy" - }, - "tab_rings": { - "count": 0, - "width": 0.01 - } - } - ], - "settings": { - "stokes": "I", - "quantisation": { - "bits": 8, - "enabled": false, - "scale_max": 5, - "scale_min": -5 - }, - "subbands_per_file": 488, - "channels_per_subband": 1, - "time_integration_factor": 1 - } - }, - "flys eye": { - "enabled": false, - "settings": { - "stokes": "I", - "quantisation": { - "bits": 8, - "enabled": false, - "scale_max": 5, - "scale_min": -5 - }, - "subbands_per_file": 488, - "channels_per_subband": 1, - "time_integration_factor": 1 - } - }, - "incoherent": { - "SAPs": [], - "settings": { - "stokes": "I", - "quantisation": { - "bits": 8, - "enabled": false, - "scale_max": 5, - "scale_min": -5 - }, - "subbands_per_file": 488, - "channels_per_subband": 1, - "time_integration_factor": 1 - } - }, - "station_groups": [ - { - "stations": [ - "CS002", - "CS003", - "CS004", - "CS005", - "CS006", - "CS007", - "CS011", - "CS013", - "CS017", - "CS021", - "CS024", - "CS026", - "CS028", - "CS030", - "CS031", - "CS032", - "CS101", - "CS103", - "CS201", - "CS301", - "CS302", - "CS401", - "CS501" - ], - "max_nr_missing": 6 - } - ] - } - ] - }, - "correlator": { - "storage_cluster": "CEP4", - "integration_time": 1, - "channels_per_subband": 64, - "topocentric_frequency_correction": false - }, - "station_configuration": { - "SAPs": [ - { - "name": "SAP", - "subbands": [ - 255 - ], - "digital_pointing": { - "angle1": 0.6624317181687094, - "angle2": 1.5579526427549426, - "target": "_target_name_", - "direction_type": "J2000" - } - } - ], - "filter": "HBA_110_190", - "tile_beam": { - "angle1": 0.6624317181687094, - "angle2": 1.5579526427549426, - "target": "_target_name_", - "direction_type": "J2000" - }, - "antenna_set": "HBA_DUAL", - "station_groups": [ - { - "stations": [ - "CS002", - "CS003", - "CS004", - "CS005", - "CS006", - "CS007", - "CS011", - "CS013", - "CS017", - "CS021", - "CS024", - "CS026", - "CS028", - "CS030", - "CS031", - "CS032", - "CS101", - "CS103", - "CS201", - "CS301", - "CS302", - "CS401", - "CS501", - "RS106", - "RS205", - "RS208", - "RS210", - "RS305", - "RS306", - "RS307", - "RS310", - "RS406", - "RS407", - "RS409", - "RS503", - "RS508", - "RS509" - ], - "max_nr_missing": 6 - } - ] - } - }, - "specifications_template": { - "name": "parallel target and beamforming observation", - "version": 2 - } - }, - "Calibrator Pipeline": { - "description": "Preprocessing Pipeline for Calibrator Observation", - "short_description": "Cal 3Cdef/PP", - "specifications_doc": { - "flag": { - "rfi_strategy": "HBAdefault", - "outerchannels": true, - "autocorrelations": true - }, - "demix": { - "sources": [], - "time_steps": 10, - "ignore_target": false, - "frequency_steps": 64 - }, - "average": { - "time_steps": 1, - "frequency_steps": 4 - }, - "storagemanager": "dysco", - "cluster_resources": { - "where": { - "cluster": "CEP4", - "partition": "cpu" - }, - "cores_per_task": 2, - "parallel_tasks": 61 - } - }, - "specifications_template": { - "name": "preprocessing pipeline", - "version": 8 - } - }, - "Calibrator Observation": { - "description": "Calibrator Observation. After the Target Observation", - "short_description": "Cal 3Cdef", - "specifications_doc": { - "QA": { - "plots": { - "enabled": false, - "autocorrelation": true, - "crosscorrelation": true - }, - "file_conversion": { - "enabled": false, - "nr_of_subbands": -1, - "nr_of_timestamps": 256 - }, - "inspection_plots": "msplots" - }, - "duration": 600, - "calibrator": { - "name": "calibrator1", - "pointing": { - "angle1": 0.6624317181687094, - "angle2": 1.5579526427549426, - "target": "3Cdef", - "direction_type": "J2000" - }, - "autoselect": false - }, - "use_target_beamformer": false - }, - "specifications_template": { - "name": "calibrator observation", - "version": 10 - } - } - }, - "parameters": [ - { - "name": "Stations", - "refs": [ - "#/tasks/Target Observation/specifications_doc/station_configuration/station_groups" - ] - }, - { - "name": "Scheduling Constraints", - "refs": [ - "#/scheduling_constraints_doc" - ] - }, - { - "name": "Target Pointing 1", - "refs": [ - "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" - ] - }, - { - "name": "Tile Beam", - "refs": [ - "#/tasks/Target Observation/specifications_doc/station_configuration/tile_beam" - ] - }, - { - "name": "Target Duration", - "refs": [ - "#/tasks/Target Observation/specifications_doc/duration" - ] - }, - { - "name": "Observation Description", - "refs": [ - "#/tasks/Target Observation/short_description" - ] - }, - { - "name": "Pipeline Description", - "refs": [ - "#/tasks/Pipeline target/short_description" - ] - }, - { - "name": "Pipeline Description", - "refs": [ - "#/tasks/Pulsar Pipeline/short_description" - ] - }, - { - "name": "Calibrator Observation Description", - "refs": [ - "#/tasks/Calibrator Observation/short_description" - ] - }, - { - "name": "Calibrator Observation Pointing", - "refs": [ - "#/tasks/Calibrator Observation/specifications_doc/calibrator/pointing" - ] - }, - { - "name": "Calibrator Pipeline Description", - "refs": [ - "#/tasks/Calibrator Pipeline/short_description" - ] - }, - { - "name": "Run Adder", - "refs": [ - "#/tasks/Target Observation/specifications_doc/QA/plots/enabled", - "#/tasks/Calibrator Observation/specifications_doc/QA/plots/enabled", - "#/tasks/Target Observation/specifications_doc/QA/file_conversion/enabled", - "#/tasks/Calibrator Observation/specifications_doc/QA/file_conversion/enabled" - ] - } - ], - "task_relations": [ - { - "input": { - "role": "beamformer", - "datatype": "time series", - "dataformat": "Beamformed" - }, - "output": { - "role": "beamformer", - "datatype": "time series", - "dataformat": "Beamformed" - }, - "consumer": "Pulsar Pipeline", - "producer": "Target Observation", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 6 + "transit_offset": { + "from": -21600, + "to": 21600 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Pipeline", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 } }, { + "consumer": "Ingest", "input": { - "role": "any", + "dataformat": "pulp summary", "datatype": "quality", - "dataformat": "pulp summary" + "role": "any" }, "output": { - "role": "any", + "dataformat": "pulp summary", "datatype": "quality", - "dataformat": "pulp summary" + "role": "any" }, - "consumer": "Ingest", - "producer": "Pulsar Pipeline", + "producer": "Pipeline", "selection_doc": {}, "selection_template": { "name": "all", @@ -8892,18 +8021,18 @@ } }, { + "consumer": "Ingest", "input": { - "role": "any", + "dataformat": "pulp analysis", "datatype": "pulsar profile", - "dataformat": "pulp analysis" + "role": "any" }, "output": { - "role": "any", + "dataformat": "pulp analysis", "datatype": "pulsar profile", - "dataformat": "pulp analysis" + "role": "any" }, - "consumer": "Ingest", - "producer": "Pulsar Pipeline", + "producer": "Pipeline", "selection_doc": {}, "selection_template": { "name": "all", @@ -8911,18 +8040,18 @@ } }, { + "consumer": "Cleanup", "input": { - "role": "beamformer", + "dataformat": "Beamformed", "datatype": "time series", - "dataformat": "Beamformed" + "role": "beamformer" }, "output": { - "role": "beamformer", + "dataformat": "Beamformed", "datatype": "time series", - "dataformat": "Beamformed" + "role": "beamformer" }, - "consumer": "Cleanup", - "producer": "Target Observation", + "producer": "Observation", "selection_doc": {}, "selection_template": { "name": "all", @@ -8930,18 +8059,18 @@ } }, { + "consumer": "Cleanup", "input": { - "role": "any", + "dataformat": "pulp summary", "datatype": "quality", - "dataformat": "pulp summary" + "role": "any" }, "output": { - "role": "any", + "dataformat": "pulp summary", "datatype": "quality", - "dataformat": "pulp summary" + "role": "any" }, - "consumer": "Cleanup", - "producer": "Pulsar Pipeline", + "producer": "Pipeline", "selection_doc": {}, "selection_template": { "name": "all", @@ -8949,1243 +8078,29468 @@ } }, { + "consumer": "Cleanup", "input": { - "role": "any", + "dataformat": "pulp analysis", "datatype": "pulsar profile", - "dataformat": "pulp analysis" + "role": "any" }, "output": { - "role": "any", + "dataformat": "pulp analysis", "datatype": "pulsar profile", - "dataformat": "pulp analysis" - }, - "consumer": "Cleanup", - "producer": "Pulsar Pipeline", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 6 - } - }, - { - "input": { - "role": "any", - "datatype": "visibilities", - "dataformat": "MeasurementSet" - }, - "output": { - "role": "correlator", - "datatype": "visibilities", - "dataformat": "MeasurementSet" - }, - "consumer": "Calibrator Pipeline", - "producer": "Calibrator Observation", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 6 - } - }, - { - "input": { - "role": "any", - "datatype": "visibilities", - "dataformat": "MeasurementSet" - }, - "output": { - "role": "correlator", - "datatype": "visibilities", - "dataformat": "MeasurementSet" - }, - "consumer": "Pipeline target", - "producer": "Target Observation", - "selection_doc": { - "sap": [ - "SAP" - ] - }, - "selection_template": { - "name": "SAP", - "version": 6 - } - }, - { - "input": { - "role": "any", - "datatype": "visibilities", - "dataformat": "MeasurementSet" - }, - "output": { - "role": "any", - "datatype": "visibilities", - "dataformat": "MeasurementSet" + "role": "any" }, - "consumer": "Ingest", - "producer": "Calibrator Pipeline", + "producer": "Pipeline", "selection_doc": {}, "selection_template": { "name": "all", "version": 6 } - }, - { - "input": { - "role": "any", - "datatype": "visibilities", - "dataformat": "MeasurementSet" - }, - "output": { - "role": "any", - "datatype": "visibilities", - "dataformat": "MeasurementSet" - }, - "consumer": "Ingest", - "producer": "Pipeline target", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 6 + } + ], + "task_scheduling_relations": [], + "tasks": { + "Cleanup": { + "description": "Cleanup all dataproducts from disk", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 } }, - { - "input": { - "role": "any", - "datatype": "visibilities", - "dataformat": "MeasurementSet" - }, - "output": { - "role": "correlator", - "datatype": "visibilities", - "dataformat": "MeasurementSet" - }, - "consumer": "Cleanup", - "producer": "Target Observation", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 6 + "Ingest": { + "description": "Ingest the pipeline outputs dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 } }, - { - "input": { - "role": "any", - "datatype": "visibilities", - "dataformat": "MeasurementSet" - }, - "output": { - "role": "correlator", - "datatype": "visibilities", - "dataformat": "MeasurementSet" - }, - "consumer": "Cleanup", - "producer": "Calibrator Observation", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 6 - } - }, - { - "input": { - "role": "any", - "datatype": "visibilities", - "dataformat": "MeasurementSet" - }, - "output": { - "role": "any", - "datatype": "visibilities", - "dataformat": "MeasurementSet" - }, - "consumer": "Cleanup", - "producer": "Pipeline target", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 6 - } - }, - { - "input": { - "role": "any", - "datatype": "visibilities", - "dataformat": "MeasurementSet" - }, - "output": { - "role": "any", - "datatype": "visibilities", - "dataformat": "MeasurementSet" - }, - "consumer": "Cleanup", - "producer": "Calibrator Pipeline", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 6 - } - } - ], - "task_scheduling_relations": [ - { - "first": "Calibrator Observation", - "second": "Target Observation", - "placement": "after", - "time_offset": 60 - } - ], - "scheduling_constraints_doc": { - "sky": { - "min_distance": { - "sun": 0.5235987755982988, - "moon": 0.5235987755982988, - "jupiter": 0.26179938779 - }, - "min_elevation": { - "target": 0.5235987755982988, - "calibrator": 0.5235987755982988 - }, - "transit_offset": { - "to": 1440, - "from": -1440 - } - }, - "scheduler": "dynamic" - }, - "scheduling_constraints_template": { - "name": "constraints", - "version": 7 - } - }, - "version": 13, - "id": 8, - "state_value": "development", - "purpose_value": "technical_commissioning" - }, - { - "description": "This observation strategy template defines a single-beam HBA imaging strategy with a Calibrator-Target-Calibrator observation chain, plus a preprocessing pipeline for each and ingest of pipeline data only.", - "name": "IM HBA - 1 Beam", - "purpose": "production", - "scheduling_unit_template": { - "name": "scheduling unit", - "version": 8 - }, - "state": "active", - "template": { - "$schema": "http://localhost:3000/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", - "parameters": [ - { - "name": "Stations", - "refs": [ - "#/tasks/Target Observation/specifications_doc/station_configuration/station_groups" - ] - }, - { - "name": "Scheduling Constraints", - "refs": [ - "#/scheduling_constraints_doc" - ] - }, - { - "name": "Observation Description", - "refs": [ - "#/tasks/Target Observation/short_description" - ] - }, - { - "name": "Target Pipeline Description", - "refs": [ - "#/tasks/Target Pipeline/short_description" - ] - }, - { - "name": "Target Pointing", - "refs": [ - "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing", - "#/tasks/Target Observation/specifications_doc/station_configuration/tile_beam" - ] - }, - { - "name": "Subbands", - "refs": [ - "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/subbands" - ] - }, - { - "name": "Target Duration", - "refs": [ - "#/tasks/Target Observation/specifications_doc/duration" - ] - }, - { - "name": "Calibrator Observation 1 Description", - "refs": [ - "#/tasks/Calibrator Observation 1/short_description" - ] - }, - { - "name": "Calibrator Pipeline 1 Description", - "refs": [ - "#/tasks/Calibrator Pipeline 1/short_description" - ] - }, - { - "name": "Calibrator Observation 1 Pointing ", - "refs": [ - "#/tasks/Calibrator Observation 1/specifications_doc/calibrator/pointing" - ] - }, - { - "name": "Calibrator Observation 1 Duration", - "refs": [ - "#/tasks/Calibrator Observation 1/specifications_doc/duration" - ] - }, - { - "name": "Calibrator Observation 2 Description", - "refs": [ - "#/tasks/Calibrator Observation 2/short_description" - ] - }, - { - "name": "Calibrator Pipeline 2 Description", - "refs": [ - "#/tasks/Calibrator Pipeline 2/short_description" - ] - }, - { - "name": "Calibrator Observation 2 Pointing", - "refs": [ - "#/tasks/Calibrator Observation 2/specifications_doc/calibrator/pointing" - ] - }, - { - "name": "Calibrator Observation 2 Duration", - "refs": [ - "#/tasks/Calibrator Observation 2/specifications_doc/duration" - ] - }, - { - "name": "Run Adder", - "refs": [ - "#/tasks/Target Observation/specifications_doc/QA/plots/enabled", - "#/tasks/Calibrator Observation 1/specifications_doc/QA/plots/enabled", - "#/tasks/Calibrator Observation 2/specifications_doc/QA/plots/enabled", - "#/tasks/Target Observation/specifications_doc/QA/file_conversion/enabled", - "#/tasks/Calibrator Observation 1/specifications_doc/QA/file_conversion/enabled", - "#/tasks/Calibrator Observation 2/specifications_doc/QA/file_conversion/enabled" - ] - } - ], - "scheduling_constraints_doc": { - "scheduler": "dynamic", - "sky": { - "transit_offset": { - "from": -1440, - "to": 1440 - } - } - }, - "scheduling_constraints_template": { - "name": "constraints", - "version": 8 - }, - "task_relations": [ - { - "consumer": "Calibrator Pipeline 1", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" - }, - "producer": "Calibrator Observation 1", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, - { - "consumer": "Calibrator Pipeline 2", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" - }, - "producer": "Calibrator Observation 2", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, - { - "consumer": "Target Pipeline", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" - }, - "producer": "Target Observation", - "selection_doc": { - "sap": [ - "target" - ] - }, - "selection_template": { - "name": "SAP", - "version": 7 - } - }, - { - "consumer": "Ingest", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "producer": "Calibrator Pipeline 1", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, - { - "consumer": "Ingest", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "producer": "Calibrator Pipeline 2", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, - { - "consumer": "Ingest", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "producer": "Target Pipeline", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, - { - "consumer": "Cleanup", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "producer": "Target Pipeline", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, - { - "consumer": "Cleanup", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" - }, - "producer": "Target Observation", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, - { - "consumer": "Cleanup", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" - }, - "producer": "Calibrator Observation 1", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, - { - "consumer": "Cleanup", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" - }, - "producer": "Calibrator Observation 2", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, - { - "consumer": "Cleanup", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "producer": "Calibrator Pipeline 1", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, - { - "consumer": "Cleanup", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "producer": "Calibrator Pipeline 2", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - } - ], - "task_scheduling_relations": [ - { - "first": "Calibrator Observation 1", - "placement": "before", - "second": "Target Observation", - "time_offset": 60 - }, - { - "first": "Calibrator Observation 2", - "placement": "after", - "second": "Target Observation", - "time_offset": 60 - } - ], - "tasks": { - "Calibrator Observation 1": { - "description": "Calibrator Observation 1. Before the Target Observation", - "short_description": "Cal1 3Cabc", - "specifications_doc": { - "QA": { - "file_conversion": { - "enabled": false, - "nr_of_subbands": -1, - "nr_of_timestamps": 256 - }, - "inspection_plots": "msplots", - "plots": { - "autocorrelation": true, - "crosscorrelation": true, - "enabled": false - } - }, - "calibrator": { - "autoselect": false, - "name": "calibrator1", - "pointing": { - "angle1": 0.6624317181687094, - "angle2": 1.5579526427549426, - "direction_type": "J2000", - "target": "3Cabc" - } - }, - "duration": 600, - "use_target_beamformer": true - }, - "specifications_template": { - "name": "calibrator observation", - "version": 10 - } - }, - "Calibrator Observation 2": { - "description": "Calibrator Observation 2. After the Target Observation", - "short_description": "Cal2 3Cdef", - "specifications_doc": { - "QA": { - "file_conversion": { - "enabled": false, - "nr_of_subbands": -1, - "nr_of_timestamps": 256 - }, - "inspection_plots": "msplots", - "plots": { - "autocorrelation": true, - "crosscorrelation": true, - "enabled": false - } - }, - "calibrator": { - "autoselect": false, - "name": "calibrator2", - "pointing": { - "angle1": 0.6624317181687094, - "angle2": 1.5579526427549426, - "direction_type": "J2000", - "target": "3Cdef" - } - }, - "duration": 600, - "use_target_beamformer": true - }, - "specifications_template": { - "name": "calibrator observation", - "version": 10 - } - }, - "Calibrator Pipeline 1": { - "description": "Preprocessing Pipeline for Calibrator Observation 1", - "short_description": "Cal1 3Cabc/PP", + "Observation": { + "description": "Beamforming observation for default pulsar timing with HBA. Full Core, 8bit, XXYY, 1ch/sub, Nsubs=400 ", + "short_description": "Baaaa+bb", "specifications_doc": { - "average": { - "frequency_steps": 4, - "time_steps": 1 - }, - "demix": { - "frequency_steps": 64, - "ignore_target": false, - "sources": [], - "time_steps": 10 - }, - "flag": { - "autocorrelations": true, - "outerchannels": true, - "rfi_strategy": "HBAdefault" - }, - "storagemanager": "dysco" - }, - "specifications_template": { - "name": "preprocessing pipeline", - "version": 8 - } - }, - "Calibrator Pipeline 2": { - "description": "Preprocessing Pipeline for Calibrator Observation 2", - "short_description": "Cal2 3Cdef/PP", - "specifications_doc": { - "average": { - "frequency_steps": 4, - "time_steps": 1 - }, - "demix": { - "frequency_steps": 64, - "ignore_target": false, - "sources": [], - "time_steps": 10 - }, - "flag": { - "autocorrelations": true, - "outerchannels": true, - "rfi_strategy": "HBAdefault" - }, - "storagemanager": "dysco" - }, - "specifications_template": { - "name": "preprocessing pipeline", - "version": 8 - } - }, - "Cleanup": { - "description": "Clean up all dataproducts from disk after ingest", - "specifications_doc": {}, - "specifications_template": { - "name": "cleanup", - "version": 7 - } - }, - "Ingest": { - "description": "Ingest all preprocessed dataproducts", - "specifications_doc": {}, - "specifications_template": { - "name": "ingest", - "version": 7 - } - }, - "Target Observation": { - "description": "Target Observation", - "short_description": "_Target_Name_", - "specifications_doc": { - "QA": { - "file_conversion": { - "enabled": false, - "nr_of_subbands": -1, - "nr_of_timestamps": 256 - }, - "inspection_plots": "msplots", - "plots": { - "autocorrelation": true, - "crosscorrelation": true, - "enabled": false - } - }, - "correlator": { - "channels_per_subband": 64, - "integration_time": 1, - "storage_cluster": "CEP4" - }, - "duration": 28800, - "station_configuration": { - "SAPs": [ - { - "digital_pointing": { - "angle1": 0.6624317181687094, - "angle2": 1.5579526427549426, - "direction_type": "J2000", - "target": "target1" - }, - "name": "target", - "subbands": [ - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 182, - 183, - 184, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 212, - 213, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 349, - 364, - 372, - 380, - 388, - 396, - 404, - 413, - 421, - 430, - 438, - 447 - ] - } - ], - "antenna_set": "HBA_DUAL_INNER", - "filter": "HBA_110_190", - "station_groups": [ + "beamformer": { + "pipelines": [ { - "max_nr_missing": 4, - "stations": [ - "CS002", - "CS003", - "CS004", - "CS005", - "CS006", - "CS007", - "CS011", - "CS013", - "CS017", - "CS021", - "CS024", - "CS026", - "CS028", - "CS030", - "CS031", - "CS032", - "CS101", - "CS103", - "CS201", - "CS301", - "CS302", - "CS401", - "CS501", - "RS106", - "RS205", - "RS208", - "RS210", - "RS305", - "RS306", - "RS307", - "RS310", - "RS406", - "RS407", - "RS409", - "RS503", - "RS508", - "RS509" - ] - } - ], - "tile_beam": { - "angle1": 0.6624317181687094, - "angle2": 1.5579526427549426, - "direction_type": "J2000", - "target": "target1" - } - } - }, - "specifications_template": { - "name": "target observation", - "version": 8 - } - }, - "Target Pipeline": { - "description": "Preprocessing Pipeline for Target Observation", - "short_description": "_Target_Name_/PP", - "specifications_doc": { - "average": { - "frequency_steps": 4, - "time_steps": 1 - }, - "demix": { - "frequency_steps": 64, - "ignore_target": false, - "sources": [], - "time_steps": 10 - }, - "flag": { - "autocorrelations": true, - "outerchannels": true, - "rfi_strategy": "HBAdefault" - }, - "storagemanager": "dysco" - }, - "specifications_template": { - "name": "preprocessing pipeline", - "version": 8 - } - } - } - }, - "version": 33, - "id": 9, - "state_value": "active", - "purpose_value": "production" - }, - { - "description": "This observation strategy template defines a LoTSS (Co-)observing run with a Calibrator-Target-Calibrator observation chain, plus a preprocessing pipeline for each and ingest of pipeline data only. Added cleanup.", - "name": "IM HBA LoTSS - 2 Beams", - "purpose": "production", - "scheduling_unit_template": { - "name": "scheduling unit", - "version": 8 - }, - "state": "active", - "template": { - "$schema": "http://localhost:3000/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", - "parameters": [ - { - "name": "Stations", - "refs": [ - "#/tasks/Target Observation/specifications_doc/station_configuration/station_groups" - ] - }, - { - "name": "Scheduling Constraints", - "refs": [ - "#/scheduling_constraints_doc" - ] - }, - { - "name": "Target Pointing 1", - "refs": [ - "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" - ] - }, - { - "name": "Target Pointing 2", - "refs": [ - "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/1/digital_pointing" - ] - }, - { - "name": "Tile Beam", - "refs": [ - "#/tasks/Target Observation/specifications_doc/station_configuration/tile_beam" - ] - }, - { - "name": "Target Duration", - "refs": [ - "#/tasks/Target Observation/specifications_doc/duration" - ] - }, - { - "name": "Observation Description", - "refs": [ - "#/tasks/Target Observation/short_description" - ] - }, - { - "name": "Pipeline 1 Description", - "refs": [ - "#/tasks/Pipeline target1/short_description" - ] - }, - { - "name": "Pipeline 2 Description", - "refs": [ - "#/tasks/Pipeline target2/short_description" - ] - }, - { - "name": "Calibrator Observation 1 Description", - "refs": [ - "#/tasks/Calibrator Observation 1/short_description" - ] - }, - { - "name": "Calibrator Observation 1 Pointing", - "refs": [ - "#/tasks/Calibrator Observation 1/specifications_doc/calibrator/pointing" - ] + "coherent": { + "SAPs": [ + { + "name": "SAP0", + "subbands": { + "list": [ + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450 + ], + "method": "copy" + }, + "tab_rings": { + "count": 0, + "width": 0.01 + }, + "tabs": [ + { + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "OnTarget" + }, + "relative": true + } + ] + } + ], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "XXYY", + "subbands_per_file": 20, + "time_integration_factor": 1 + } + }, + "name": "Beamformer CV", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + } + ], + "ppf": false + }, + "duration": 120, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.92934186635, + "angle2": 0.952579228492, + "direction_type": "J2000", + "target": "Baaaa+bb" + }, + "name": "SAP0", + "subbands": [ + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450 + ] + } + ], + "antenna_set": "HBA_DUAL_INNER", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "tile_beam": { + "angle1": 0.92934186635, + "angle2": 0.952579228492, + "direction_type": "J2000", + "target": "Baaaa+bb" + } + } + }, + "specifications_template": { + "name": "beamforming observation", + "version": 8 + } + }, + "Pipeline": { + "description": "Pulsar Pipeline for default HBA pulsar timing observation. HBA. Full Core, 8bit, XXYY, 1ch/sub, Nsubs=400 ", + "short_description": "Baaaa+bb/PULP", + "specifications_doc": { + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 20, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "dspsr": { + "digifil": { + "channels_per_part": 20, + "coherent_dedispersion": false, + "dm": 0, + "integration_time_factor": 4 + }, + "enabled": true, + "optimise_period_dm": false, + "rfi_excision": true, + "subintegration_length": 10 + }, + "output": { + "dynamic_spectrum": { + "enabled": false, + "time_average": 0.5 + }, + "quantisation": { + "enabled": false, + "scale": 5 + } + }, + "presto": { + "fold_profile": true, + "input": { + "decode_sigma": 3, + "nr_blocks": 100, + "samples_per_block": 8192 + }, + "prepfold": false, + "rrats": { + "dm_range": 5, + "enabled": false + } + }, + "pulsar": { + "name": "", + "strategy": "meta" + }, + "single_pulse_search": false + }, + "specifications_template": { + "name": "pulsar pipeline", + "version": 6 + } + } + } + }, + "version": 21, + "id": 8, + "state_value": "legacy", + "purpose_value": "production" + }, + { + "description": "Beamformed observation and pulsar pipeline for pulsar timing. HBA, 110-188 MHz, 400 SBs, 195 kHz, 5.12 us.", + "name": "BF Pulsar Timing", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "active", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration", + "refs": [ + "#/tasks/Observation/specifications_doc/duration" + ] + }, + { + "name": "Observation Short Description", + "refs": [ + "#/tasks/Observation/short_description" + ] + }, + { + "name": "Pipeline Short Description", + "refs": [ + "#/tasks/Pipeline/short_description" + ] + }, + { + "name": "Target Pointing", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing", + "#/tasks/Observation/specifications_doc/station_configuration/tile_beam" + ] + }, + { + "name": "Optimise period & DM", + "refs": [ + "#/tasks/Pipeline/specifications_doc/dspsr/optimise_period_dm" + ] + }, + { + "name": "Subintegration time", + "refs": [ + "#/tasks/Pipeline/specifications_doc/dspsr/subintegration_length" + ] + } + ], + "scheduling_constraints_doc": { + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0, + "moon": 0.00872665, + "sun": 0.00872665 + }, + "transit_offset": { + "from": -21600, + "to": 21600 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Pipeline", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "pulp summary", + "datatype": "quality", + "role": "any" + }, + "output": { + "dataformat": "pulp summary", + "datatype": "quality", + "role": "any" + }, + "producer": "Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "pulp analysis", + "datatype": "pulsar profile", + "role": "any" + }, + "output": { + "dataformat": "pulp analysis", + "datatype": "pulsar profile", + "role": "any" + }, + "producer": "Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "pulp summary", + "datatype": "quality", + "role": "any" + }, + "output": { + "dataformat": "pulp summary", + "datatype": "quality", + "role": "any" + }, + "producer": "Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "pulp analysis", + "datatype": "pulsar profile", + "role": "any" + }, + "output": { + "dataformat": "pulp analysis", + "datatype": "pulsar profile", + "role": "any" + }, + "producer": "Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Cleanup": { + "description": "Cleanup all dataproducts from disk", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Ingest": { + "description": "Ingest the pipeline outputs dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Observation": { + "description": "Beamforming observation for default pulsar timing with HBA. Full Core, 8bit, XXYY, 1ch/sub, Nsubs=400", + "short_description": "Baaaa+bb", + "specifications_doc": { + "beamformer": { + "pipelines": [ + { + "coherent": { + "SAPs": [ + { + "name": "SAP0", + "subbands": { + "list": [ + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450 + ], + "method": "copy" + }, + "tab_rings": { + "count": 0, + "width": 0.01 + }, + "tabs": [ + { + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "OnTarget" + }, + "relative": true + } + ] + } + ], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "XXYY", + "subbands_per_file": 20, + "time_integration_factor": 1 + } + }, + "name": "Beamformer CV", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + } + ], + "ppf": false + }, + "duration": 120, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.92934186635, + "angle2": 0.952579228492, + "direction_type": "J2000", + "target": "Baaaa+bb" + }, + "name": "SAP0", + "subbands": [ + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450 + ] + } + ], + "antenna_set": "HBA_DUAL_INNER", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "tile_beam": { + "angle1": 0.92934186635, + "angle2": 0.952579228492, + "direction_type": "J2000", + "target": "Baaaa+bb" + } + } + }, + "specifications_template": { + "name": "beamforming observation", + "version": 8 + } + }, + "Pipeline": { + "description": "Pulsar Pipeline for default HBA pulsar timing observation. HBA. Full Core, 8bit, XXYY, 1ch/sub, Nsubs=400", + "short_description": "Baaaa+bb/PULP", + "specifications_doc": { + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 20, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "dspsr": { + "digifil": { + "channels_per_part": 20, + "coherent_dedispersion": false, + "dm": 0, + "integration_time_factor": 4 + }, + "enabled": true, + "optimise_period_dm": false, + "rfi_excision": true, + "subintegration_length": 10 + }, + "output": { + "dynamic_spectrum": { + "enabled": false, + "time_average": 0.5 + }, + "quantisation": { + "enabled": false, + "scale": 5 + } + }, + "presto": { + "fold_profile": true, + "input": { + "decode_sigma": 3, + "nr_blocks": 100, + "samples_per_block": 8192 + }, + "prepfold": false, + "rrats": { + "dm_range": 5, + "enabled": false + } + }, + "pulsar": { + "name": "", + "strategy": "meta" + }, + "single_pulse_search": false + }, + "specifications_template": { + "name": "pulsar pipeline", + "version": 6 + } + } + } + }, + "version": 23, + "id": 9, + "state_value": "active", + "purpose_value": "production" + }, + { + "description": "Beamformed Stokes I. Superterp HBA, 110-188 MHz, 400 SBs, 16 chan/sub, 10.48 ms.", + "name": "BF Stokes I, satellite monitoring", + "purpose": "technical_commissioning", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "legacy", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration", + "refs": [ + "#/tasks/Observation/specifications_doc/duration" + ] + }, + { + "name": "Observation Short Description", + "refs": [ + "#/tasks/Observation/short_description" + ] + }, + { + "name": "Target Pointing", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing", + "#/tasks/Observation/specifications_doc/station_configuration/tile_beam" + ] + } + ], + "scheduling_constraints_doc": { + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0, + "moon": 0.00872665, + "sun": 0.00872665 + }, + "transit_offset": { + "from": -21600, + "to": 21600 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 8 + }, + "task_relations": [ + { + "consumer": "Ingest", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Cleanup": { + "description": "Cleanup all dataproducts from disk", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Ingest": { + "description": "Ingest the observation dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Observation": { + "description": "Beamformed observation using Superterp stations, 400 subbands, Stokes I, 16 chan/sub, 128x downsampling", + "short_description": "Target", + "specifications_doc": { + "beamformer": { + "pipelines": [ + { + "coherent": { + "SAPs": [ + { + "name": "SAP0", + "subbands": { + "list": [ + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450 + ], + "method": "copy" + }, + "tab_rings": { + "count": 0, + "width": 0.01 + }, + "tabs": [ + { + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "Satellite number" + }, + "relative": true + } + ] + } + ], + "settings": { + "channels_per_subband": 16, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 128 + } + }, + "name": "Beamformer CV", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ] + } + ], + "ppf": false + }, + "duration": 300, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "Satellite number" + }, + "name": "SAP0", + "subbands": [ + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450 + ] + } + ], + "antenna_set": "HBA_DUAL_INNER", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "tile_beam": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "Satellite number" + } + } + }, + "specifications_template": { + "name": "beamforming observation", + "version": 8 + } + } + } + }, + "version": 1, + "id": 10, + "state_value": "legacy", + "purpose_value": "technical_commissioning" + }, + { + "description": "Beamformed Stokes I. Superterp HBA, 110-188 MHz, 400 SBs, 16 chan/sub, 10.48 ms.", + "name": "BF Stokes I, satellite monitoring", + "purpose": "technical_commissioning", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "legacy", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration", + "refs": [ + "#/tasks/Observation/specifications_doc/duration" + ] + }, + { + "name": "Observation Short Description", + "refs": [ + "#/tasks/Observation/short_description" + ] + }, + { + "name": "Target Pointing", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing", + "#/tasks/Observation/specifications_doc/station_configuration/tile_beam" + ] + }, + { + "name": "TAB Pointings", + "refs": [ + "#/tasks/Observation/specifications_doc/beamformer/pipelines/0/coherent/SAPs/0/tabs" + ] + } + ], + "scheduling_constraints_doc": { + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0, + "moon": 0.00872665, + "sun": 0.00872665 + }, + "transit_offset": { + "from": -21600, + "to": 21600 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 8 + }, + "task_relations": [ + { + "consumer": "Ingest", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Cleanup": { + "description": "Cleanup all dataproducts from disk", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Ingest": { + "description": "Ingest the observation dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Observation": { + "description": "Beamformed observation using Superterp stations, 400 subbands, Stokes I, 16 chan/sub, 128x downsampling", + "short_description": "Target", + "specifications_doc": { + "beamformer": { + "pipelines": [ + { + "coherent": { + "SAPs": [ + { + "name": "SAP0", + "subbands": { + "list": [ + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450 + ], + "method": "copy" + }, + "tab_rings": { + "count": 0, + "width": 0.01 + }, + "tabs": [ + { + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "Satellite number" + }, + "relative": true + } + ] + } + ], + "settings": { + "channels_per_subband": 16, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 128 + } + }, + "name": "Beamformer CV", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ] + } + ], + "ppf": false + }, + "duration": 300, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "Satellite number" + }, + "name": "SAP0", + "subbands": [ + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450 + ] + } + ], + "antenna_set": "HBA_DUAL_INNER", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "tile_beam": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "Satellite number" + } + } + }, + "specifications_template": { + "name": "beamforming observation", + "version": 8 + } + } + } + }, + "version": 2, + "id": 11, + "state_value": "legacy", + "purpose_value": "technical_commissioning" + }, + { + "description": "Beamformed Stokes I. Superterp HBA, 110-188 MHz, 400 SBs, 16 chan/sub, 10.48 ms.", + "name": "BF Stokes I, satellite monitoring", + "purpose": "technical_commissioning", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "active", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration", + "refs": [ + "#/tasks/Observation/specifications_doc/duration" + ] + }, + { + "name": "Observation Short Description", + "refs": [ + "#/tasks/Observation/short_description" + ] + }, + { + "name": "Target Pointing", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing", + "#/tasks/Observation/specifications_doc/station_configuration/tile_beam" + ] + }, + { + "name": "TAB Pointings", + "refs": [ + "#/tasks/Observation/specifications_doc/beamformer/pipelines/0/coherent/SAPs/0/tabs" + ] + } + ], + "scheduling_constraints_doc": { + "scheduler": "fixed_time", + "sky": { + "min_distance": { + "jupiter": 0, + "moon": 0.00872665, + "sun": 0.00872665 + }, + "transit_offset": { + "from": -21600, + "to": 21600 + } + }, + "time": { + "at": "2023-05-04T12:40:00", + "between": [] + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 8 + }, + "task_relations": [ + { + "consumer": "Ingest", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Cleanup": { + "description": "Cleanup all dataproducts from disk", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Ingest": { + "description": "Ingest the observation dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Observation": { + "description": "Beamformed observation using Superterp stations, 400 subbands, Stokes I, 16 chan/sub, 128x downsampling", + "short_description": "Target", + "specifications_doc": { + "beamformer": { + "pipelines": [ + { + "coherent": { + "SAPs": [ + { + "name": "SAP0", + "subbands": { + "list": [ + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450 + ], + "method": "copy" + }, + "tab_rings": { + "count": 0, + "width": 0.01 + }, + "tabs": [ + { + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "Satellite number" + }, + "relative": true + } + ] + } + ], + "settings": { + "channels_per_subband": 16, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 128 + } + }, + "name": "Beamformer CV", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ] + } + ], + "ppf": false + }, + "duration": 300, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0, + "angle2": 1.5, + "direction_type": "J2000", + "target": "Satellite number" + }, + "name": "SAP0", + "subbands": [ + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450 + ] + } + ], + "antenna_set": "HBA_DUAL_INNER", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "tile_beam": { + "angle1": 0, + "angle2": 1.5, + "direction_type": "J2000", + "target": "Satellite number" + } + } + }, + "specifications_template": { + "name": "beamforming observation", + "version": 8 + } + } + } + }, + "version": 3, + "id": 12, + "state_value": "active", + "purpose_value": "technical_commissioning" + }, + { + "description": "Test FE observation with one station", + "name": "FE RT test", + "purpose": "technical_commissioning", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 2 + }, + "state": "legacy", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration FE1", + "refs": [ + "#/tasks/Observation/specifications_doc/duration" + ] + } + ], + "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0.00872665, + "moon": 0.00872665, + "sun": 0.00872665 + }, + "min_elevation": { + "calibrator": 0, + "target": 0 + }, + "reference_pointing": { + "enabled": false, + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "_target_name_" + } + }, + "transit_offset": { + "from": -43200, + "to": 43200 + } + }, + "time": { + "between": [], + "not_between": [] + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 6 + }, + "task_relations": [ + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "any" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Cleanup": { + "description": "Cleaning up all output dataproducts for this scheduling unit", + "short_description": "Cleanup", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 6 + } + }, + "Observation": { + "description": "Fly's Eye observation with all available stations", + "short_description": "IoS flys eye", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "dynspec", + "plots": { + "autocorrelation": true, + "crosscorrelation": false, + "enabled": false + } + }, + "beamformer": { + "pipelines": [ + { + "coherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "flys eye": { + "enabled": true, + "settings": { + "channels_per_subband": 16, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 128 + } + }, + "incoherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "name": "FE", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS007" + ] + } + ] + } + ], + "ppf": false + }, + "duration": 300, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 6.123487680622106, + "angle2": 1.026515399560465, + "direction_type": "J2000", + "target": "CasA" + }, + "name": "FE_pointing1", + "subbands": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327 + ] + } + ], + "antenna_set": "LBA_OUTER", + "filter": "LBA_10_90", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS007" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_target_name_IPS_" + } + } + }, + "specifications_template": { + "name": "beamforming observation", + "version": 8 + } + } + } + }, + "version": 3, + "id": 13, + "state_value": "legacy", + "purpose_value": "technical_commissioning" + }, + { + "description": "Test FE observation with one station", + "name": "FE RT test", + "purpose": "technical_commissioning", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 2 + }, + "state": "legacy", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration FE1", + "refs": [ + "#/tasks/Observation/specifications_doc/duration" + ] + } + ], + "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, + "scheduler": "fixed_time", + "sky": { + "min_distance": { + "jupiter": 0.00872665, + "moon": 0.00872665, + "sun": 0.00872665 + }, + "min_elevation": { + "calibrator": 0, + "target": 0 + }, + "reference_pointing": { + "enabled": false, + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "_target_name_" + } + }, + "transit_offset": { + "from": -43200, + "to": 43200 + } + }, + "time": { + "at": "2023-04-13T09:59:00.00000Z", + "between": [], + "not_between": [] + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 6 + }, + "task_relations": [ + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "any" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Cleanup": { + "description": "Cleaning up all output dataproducts for this scheduling unit", + "short_description": "Cleanup", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 6 + } + }, + "Observation": { + "description": "Fly's Eye observation with all available stations", + "short_description": "IoS flys eye", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "dynspec", + "plots": { + "autocorrelation": true, + "crosscorrelation": false, + "enabled": false + } + }, + "beamformer": { + "pipelines": [ + { + "coherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "flys eye": { + "enabled": true, + "settings": { + "channels_per_subband": 16, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 128 + } + }, + "incoherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "name": "FE", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS007" + ] + } + ] + } + ], + "ppf": false + }, + "duration": 300, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 6.123487680622106, + "angle2": 1.026515399560465, + "direction_type": "J2000", + "target": "CasA" + }, + "name": "FE_pointing1", + "subbands": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327 + ] + } + ], + "antenna_set": "LBA_OUTER", + "filter": "LBA_10_90", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS007" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_target_name_IPS_" + } + } + }, + "specifications_template": { + "name": "beamforming observation", + "version": 8 + } + } + } + }, + "version": 4, + "id": 14, + "state_value": "legacy", + "purpose_value": "technical_commissioning" + }, + { + "description": "Test FE observation with one station", + "name": "FE RT test", + "purpose": "technical_commissioning", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "active", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration FE1", + "refs": [ + "#/tasks/Observation/specifications_doc/duration" + ] + } + ], + "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0.00872665, + "moon": 0.00872665, + "sun": 0.00872665 + }, + "min_elevation": { + "calibrator": 0, + "target": 0 + }, + "reference_pointing": { + "enabled": false, + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "_target_name_" + } + }, + "transit_offset": { + "from": -43200, + "to": 43200 + } + }, + "time": { + "between": [], + "not_between": [] + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "any" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Cleanup": { + "description": "Cleaning up all output dataproducts for this scheduling unit", + "short_description": "Cleanup", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Observation": { + "description": "Fly's Eye observation with all available stations", + "short_description": "IoS flys eye", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "dynspec", + "plots": { + "autocorrelation": true, + "crosscorrelation": false, + "enabled": false + } + }, + "beamformer": { + "pipelines": [ + { + "coherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "flys eye": { + "enabled": true, + "settings": { + "channels_per_subband": 16, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 128 + } + }, + "incoherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "name": "FE", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS007" + ] + } + ] + } + ], + "ppf": false + }, + "duration": 300, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 6.123487680622106, + "angle2": 1.026515399560465, + "direction_type": "J2000", + "target": "CasA" + }, + "name": "FE_pointing1", + "subbands": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327 + ] + } + ], + "antenna_set": "LBA_OUTER", + "filter": "LBA_10_90", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS007" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_target_name_IPS_" + } + } + }, + "specifications_template": { + "name": "beamforming observation", + "version": 8 + } + } + } + }, + "version": 5, + "id": 15, + "state_value": "active", + "purpose_value": "technical_commissioning" + }, + { + "description": "Test FE observation with one station", + "name": "FE RT test", + "purpose": "technical_commissioning", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "active", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration FE1", + "refs": [ + "#/tasks/Observation/specifications_doc/duration" + ] + } + ], + "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0.00872665, + "moon": 0.00872665, + "sun": 0.00872665 + }, + "min_elevation": { + "calibrator": 0, + "target": 0 + }, + "reference_pointing": { + "enabled": false, + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "_target_name_" + } + }, + "transit_offset": { + "from": -43200, + "to": 43200 + } + }, + "time": { + "between": [], + "not_between": [] + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "any" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Cleanup": { + "description": "Cleaning up all output dataproducts for this scheduling unit", + "short_description": "Cleanup", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Observation": { + "description": "Fly's Eye observation with all available stations", + "short_description": "IoS flys eye", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "dynspec", + "plots": { + "autocorrelation": true, + "crosscorrelation": false, + "enabled": false + } + }, + "beamformer": { + "pipelines": [ + { + "coherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "flys eye": { + "enabled": true, + "settings": { + "channels_per_subband": 16, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 128 + } + }, + "incoherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "name": "FE", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS007" + ] + } + ] + } + ], + "ppf": false + }, + "duration": 300, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 6.123487680622106, + "angle2": 1.026515399560465, + "direction_type": "J2000", + "target": "CasA" + }, + "name": "FE_pointing1", + "subbands": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327 + ] + } + ], + "antenna_set": "LBA_OUTER", + "filter": "LBA_10_90", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS007" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_target_name_IPS_" + } + } + }, + "specifications_template": { + "name": "beamforming observation", + "version": 8 + } + } + } + }, + "version": 6, + "id": 16, + "state_value": "active", + "purpose_value": "technical_commissioning" + }, + { + "description": "This observation strategy template defines a single observation for holography station calibration", + "name": "Holography - 1 run", + "purpose": "system_health", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "active", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Observation Description", + "refs": [ + "#/tasks/Observation/short_description" + ] + }, + { + "name": "Pipeline Description", + "refs": [ + "#/tasks/Pipeline/short_description" + ] + }, + { + "name": "Target Pointing", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing", + "#/tasks/Observation/specifications_doc/station_configuration/tile_beam" + ] + }, + { + "name": "Subbands", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/SAPs/0/subbands" + ] + }, + { + "name": "Filter", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/filter" + ] + }, + { + "name": "Antenna Set", + "refs": [ + "#/tasks/Observation/specifications_doc/station_configuration/antenna_set" + ] + }, + { + "name": "Target Duration", + "refs": [ + "#/tasks/Observation/specifications_doc/duration" + ] + }, + { + "name": "Time averaging steps", + "refs": [ + "#/tasks/Pipeline/specifications_doc/average/time_steps" + ] + }, + { + "name": "Frequency averaging steps", + "refs": [ + "#/tasks/Pipeline/specifications_doc/average/frequency_steps" + ] + }, + { + "name": "Flagging Strategy", + "refs": [ + "#/tasks/Pipeline/specifications_doc/flag/rfi_strategy" + ] + }, + { + "name": "Run Adder", + "refs": [ + "#/tasks/Observation/specifications_doc/QA/plots/enabled", + "#/tasks/Observation/specifications_doc/QA/file_conversion/enabled" + ] + } + ], + "scheduling_constraints_doc": { + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0.05235987756, + "moon": 0.05235987756, + "sun": 0.05235987756 + }, + "min_elevation": { + "calibrator": 0, + "target": 0 + }, + "transit_offset": { + "from": -43200, + "to": 43200 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Pipeline", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Observation", + "selection_doc": { + "sap": [ + "target" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Cleanup": { + "description": "Clean up all dataproducts from disk", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Observation": { + "description": "Observation", + "short_description": "_Target_Name_", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4" + }, + "duration": 30, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "target1" + }, + "name": "target", + "subbands": [ + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256 + ] + } + ], + "antenna_set": "HBA_DUAL", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 10, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "target1" + } + } + }, + "specifications_template": { + "name": "target observation", + "version": 9 + } + }, + "Pipeline": { + "description": "Preprocessing Pipeline for Observation", + "short_description": "_Target_Name_/PP", + "specifications_doc": { + "average": { + "frequency_steps": 64, + "time_steps": 1 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + } + } + }, + "version": 1, + "id": 17, + "state_value": "active", + "purpose_value": "system_health" + }, + { + "description": "IDOLS daytime observation on single station CS032, ingest, cleanup", + "name": "IDOLS daytime", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "active", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/BF 1 station LBA/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration", + "refs": [ + "#/tasks/BF 1 station LBA/specifications_doc/duration" + ] + }, + { + "name": "Description", + "refs": [ + "#/tasks/BF 1 station LBA/short_description" + ] + } + ], + "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": true, + "require_night": false + }, + "scheduler": "fixed_time", + "sky": { + "min_distance": { + "jupiter": 0, + "moon": 0, + "sun": 0 + }, + "min_elevation": { + "calibrator": 0, + "target": 0 + }, + "transit_offset": { + "from": -43200, + "to": 43200 + } + }, + "time": { + "at": "2030-01-01T00:00:00Z", + "between": [], + "not_between": [] + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "any" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "BF 1 station LBA", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "BF 1 station LBA", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "BF 1 station LBA": { + "description": "Beamformed observation with a single station LBA on the Sun with a calibrator beam (default CasA), 5-88 MHz, 16 ch/SB, 0.01s", + "short_description": "Sun_spectrum_LBA-YYYYMMDD-runX", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "beamformer": { + "pipelines": [ + { + "coherent": { + "SAPs": [ + { + "name": "SAP_Sun", + "subbands": { + "list": [ + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ], + "method": "copy" + }, + "tab_rings": { + "count": 0, + "width": 0.01 + }, + "tabs": [ + { + "allow_after_previous": true, + "duration": 0, + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "SUN", + "target": "Sun" + }, + "relative": true + } + ] + }, + { + "name": "SAP_Cal", + "subbands": { + "list": [ + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ], + "method": "copy" + }, + "tab_rings": { + "count": 0, + "width": 0.01 + }, + "tabs": [ + { + "allow_after_previous": true, + "duration": 0, + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "Calibrator" + }, + "relative": true + } + ] + } + ], + "settings": { + "channels_per_subband": 16, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "IQUV", + "subbands_per_file": 488, + "time_integration_factor": 128 + } + }, + "flys eye": { + "enabled": false, + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "incoherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "name": "CS_Sun", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS032" + ] + } + ] + } + ], + "ppf": false + }, + "duration": 660, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "SUN", + "target": "Sun" + }, + "name": "SAP_Sun", + "subbands": [ + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ] + }, + { + "digital_pointing": { + "angle1": 6.123487680622106, + "angle2": 1.026515399560465, + "direction_type": "J2000", + "target": "CasA" + }, + "name": "SAP_Cal", + "subbands": [ + 54, + 80, + 84, + 88, + 92, + 96, + 100, + 104, + 108, + 112, + 116, + 120, + 124, + 128, + 132, + 136, + 140, + 144, + 148, + 152, + 156, + 160, + 164, + 168, + 172, + 176, + 180, + 184, + 188, + 192, + 196, + 200, + 204, + 208, + 212, + 216, + 220, + 224, + 228, + 232, + 236, + 240, + 244, + 248, + 252, + 256, + 260, + 264, + 268, + 272, + 276, + 280, + 284, + 288, + 292, + 296, + 300, + 304, + 308, + 312, + 316, + 320, + 324, + 328, + 332, + 336, + 340, + 344, + 348, + 352, + 356, + 360, + 364, + 368, + 372, + 376, + 380, + 384, + 388, + 392, + 394, + 396, + 400, + 404, + 408, + 412 + ] + } + ], + "antenna_set": "LBA_OUTER", + "filter": "LBA_10_90", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS032" + ] + } + ], + "tile_beam": { + "angle1": 0, + "angle2": 0, + "direction_type": "SUN", + "target": "Sun" + } + } + }, + "specifications_template": { + "name": "beamforming observation", + "version": 8 + } + }, + "Cleanup": { + "description": "Cleaning up all output dataproducts for this scheduling unit", + "short_description": "", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Ingest": { + "description": "", + "short_description": "", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + } + } + }, + "version": 1, + "id": 18, + "state_value": "active", + "purpose_value": "production" + }, + { + "description": "IDOLS nighttime observation on single station CS032, ingest, cleanup", + "name": "IDOLS nighttime", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "active", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/BF 1 station LBA/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration", + "refs": [ + "#/tasks/BF 1 station LBA/specifications_doc/duration" + ] + }, + { + "name": "Description", + "refs": [ + "#/tasks/BF 1 station LBA/short_description" + ] + } + ], + "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, + "scheduler": "fixed_time", + "sky": { + "min_distance": { + "jupiter": 0, + "moon": 0, + "sun": 0 + }, + "min_elevation": { + "calibrator": 0, + "target": 0 + }, + "reference_pointing": { + "enabled": false, + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "_target_name_" + } + }, + "transit_offset": { + "from": -43200, + "to": 43200 + } + }, + "time": { + "at": "2030-01-01T00:00:00Z", + "between": [], + "not_between": [] + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "any" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "BF 1 station LBA", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "BF 1 station LBA", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "BF 1 station LBA": { + "description": "Beamformed observation with a single station LBA on the Sun with a calibrator beam (default CasA), 5-88 MHz, 16 ch/SB, 0.01s", + "short_description": "IDOLS_nighttime_spectrum_LBA-YYYYMMDD-runX", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "beamformer": { + "pipelines": [ + { + "coherent": { + "SAPs": [ + { + "name": "SAP_Cal", + "subbands": { + "list": [ + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ], + "method": "copy" + }, + "tab_rings": { + "count": 0, + "width": 0.01 + }, + "tabs": [ + { + "allow_after_previous": true, + "duration": 0, + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "Calibrator" + }, + "relative": true + } + ] + } + ], + "settings": { + "channels_per_subband": 16, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "IQUV", + "subbands_per_file": 488, + "time_integration_factor": 128 + } + }, + "flys eye": { + "enabled": false, + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "incoherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "name": "CS_Sun", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS032" + ] + } + ] + } + ], + "ppf": false + }, + "duration": 660, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 6.123487680622106, + "angle2": 1.026515399560465, + "direction_type": "J2000", + "target": "CasA" + }, + "name": "SAP_Cal", + "subbands": [ + 54, + 80, + 84, + 88, + 92, + 96, + 100, + 104, + 108, + 112, + 116, + 120, + 124, + 128, + 132, + 136, + 140, + 144, + 148, + 152, + 156, + 160, + 164, + 168, + 172, + 176, + 180, + 184, + 188, + 192, + 196, + 200, + 204, + 208, + 212, + 216, + 220, + 224, + 228, + 232, + 236, + 240, + 244, + 248, + 252, + 256, + 260, + 264, + 268, + 272, + 276, + 280, + 284, + 288, + 292, + 296, + 300, + 304, + 308, + 312, + 316, + 320, + 324, + 328, + 332, + 336, + 340, + 344, + 348, + 352, + 356, + 360, + 364, + 368, + 372, + 376, + 380, + 384, + 388, + 392, + 394, + 396, + 400, + 404, + 408, + 412 + ] + } + ], + "antenna_set": "LBA_OUTER", + "filter": "LBA_10_90", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS032" + ] + } + ], + "tile_beam": { + "angle1": 0, + "angle2": 0, + "direction_type": "SUN", + "target": "Sun" + } + } + }, + "specifications_template": { + "name": "beamforming observation", + "version": 8 + } + }, + "Cleanup": { + "description": "Cleaning up all output dataproducts for this scheduling unit", + "short_description": "", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Ingest": { + "description": "", + "short_description": "", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + } + } + }, + "version": 1, + "id": 19, + "state_value": "active", + "purpose_value": "production" + }, + { + "description": "IDOLS nighttime observation on single station CS032, ingest, cleanup", + "name": "IDOLS nighttime", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "active", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/BF 1 station LBA/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration", + "refs": [ + "#/tasks/BF 1 station LBA/specifications_doc/duration" + ] + }, + { + "name": "Description", + "refs": [ + "#/tasks/BF 1 station LBA/short_description" + ] + } + ], + "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, + "scheduler": "fixed_time", + "sky": { + "min_distance": { + "jupiter": 0, + "moon": 0, + "sun": 0 + }, + "min_elevation": { + "calibrator": 0, + "target": 0 + }, + "reference_pointing": { + "enabled": false, + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "_target_name_" + } + }, + "transit_offset": { + "from": -43200, + "to": 43200 + } + }, + "time": { + "at": "2030-01-01T00:00:00Z", + "between": [], + "not_between": [] + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "any" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "BF 1 station LBA", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "BF 1 station LBA", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "BF 1 station LBA": { + "description": "Beamformed observation with a single station LBA on the Sun with a calibrator beam (default CasA), 5-88 MHz, 16 ch/SB, 0.01s", + "short_description": "IDOLS_nighttime_LBA-YYYYMMDD", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "beamformer": { + "pipelines": [ + { + "coherent": { + "SAPs": [ + { + "name": "SAP_Cal", + "subbands": { + "list": [ + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ], + "method": "copy" + }, + "tab_rings": { + "count": 0, + "width": 0.01 + }, + "tabs": [ + { + "allow_after_previous": true, + "duration": 0, + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "Calibrator" + }, + "relative": true + } + ] + } + ], + "settings": { + "channels_per_subband": 16, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "IQUV", + "subbands_per_file": 488, + "time_integration_factor": 128 + } + }, + "flys eye": { + "enabled": false, + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "incoherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "name": "CS_Sun", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS032" + ] + } + ] + } + ], + "ppf": false + }, + "duration": 660, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 6.123487680622106, + "angle2": 1.026515399560465, + "direction_type": "J2000", + "target": "CasA" + }, + "name": "SAP_Cal", + "subbands": [ + 54, + 80, + 84, + 88, + 92, + 96, + 100, + 104, + 108, + 112, + 116, + 120, + 124, + 128, + 132, + 136, + 140, + 144, + 148, + 152, + 156, + 160, + 164, + 168, + 172, + 176, + 180, + 184, + 188, + 192, + 196, + 200, + 204, + 208, + 212, + 216, + 220, + 224, + 228, + 232, + 236, + 240, + 244, + 248, + 252, + 256, + 260, + 264, + 268, + 272, + 276, + 280, + 284, + 288, + 292, + 296, + 300, + 304, + 308, + 312, + 316, + 320, + 324, + 328, + 332, + 336, + 340, + 344, + 348, + 352, + 356, + 360, + 364, + 368, + 372, + 376, + 380, + 384, + 388, + 392, + 394, + 396, + 400, + 404, + 408, + 412 + ] + } + ], + "antenna_set": "LBA_OUTER", + "filter": "LBA_10_90", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "CS032" + ] + } + ], + "tile_beam": { + "angle1": 0, + "angle2": 0, + "direction_type": "SUN", + "target": "Sun" + } + } + }, + "specifications_template": { + "name": "beamforming observation", + "version": 8 + } + }, + "Cleanup": { + "description": "Cleaning up all output dataproducts for this scheduling unit", + "short_description": "", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Ingest": { + "description": "", + "short_description": "", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + } + } + }, + "version": 2, + "id": 20, + "state_value": "active", + "purpose_value": "production" + }, + { + "description": "This observation strategy template defines a single-beam HBA imaging strategy with a Calibrator-Target-Calibrator observation chain, plus a preprocessing pipeline for each and ingest of pipeline data only.", + "name": "IM HBA - 1 Beam", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "legacy", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Observation Description", + "refs": [ + "#/tasks/Target Observation/short_description" + ] + }, + { + "name": "Target Pipeline Description", + "refs": [ + "#/tasks/Target Pipeline/short_description" + ] + }, + { + "name": "Target Pointing", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing", + "#/tasks/Target Observation/specifications_doc/station_configuration/tile_beam" + ] + }, + { + "name": "Subbands", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/subbands" + ] + }, + { + "name": "Target Duration", + "refs": [ + "#/tasks/Target Observation/specifications_doc/duration" + ] + }, + { + "name": "Calibrator Observation 1 Description", + "refs": [ + "#/tasks/Calibrator Observation 1/short_description" + ] + }, + { + "name": "Calibrator Pipeline 1 Description", + "refs": [ + "#/tasks/Calibrator Pipeline 1/short_description" + ] + }, + { + "name": "Calibrator Observation 1 Pointing ", + "refs": [ + "#/tasks/Calibrator Observation 1/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Calibrator Observation 1 Duration", + "refs": [ + "#/tasks/Calibrator Observation 1/specifications_doc/duration" + ] + }, + { + "name": "Calibrator Observation 2 Description", + "refs": [ + "#/tasks/Calibrator Observation 2/short_description" + ] + }, + { + "name": "Calibrator Pipeline 2 Description", + "refs": [ + "#/tasks/Calibrator Pipeline 2/short_description" + ] + }, + { + "name": "Calibrator Observation 2 Pointing", + "refs": [ + "#/tasks/Calibrator Observation 2/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Calibrator Observation 2 Duration", + "refs": [ + "#/tasks/Calibrator Observation 2/specifications_doc/duration" + ] + }, + { + "name": "Run Adder", + "refs": [ + "#/tasks/Target Observation/specifications_doc/QA/plots/enabled", + "#/tasks/Calibrator Observation 1/specifications_doc/QA/plots/enabled", + "#/tasks/Calibrator Observation 2/specifications_doc/QA/plots/enabled", + "#/tasks/Target Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Calibrator Observation 1/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Calibrator Observation 2/specifications_doc/QA/file_conversion/enabled" + ] + } + ], + "scheduling_constraints_doc": { + "scheduler": "dynamic", + "sky": { + "transit_offset": { + "from": -1440, + "to": 1440 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Calibrator Pipeline 1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Calibrator Pipeline 2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Target Pipeline", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": { + "sap": [ + "target" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Target Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Target Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [ + { + "first": "Calibrator Observation 1", + "placement": "before", + "second": "Target Observation", + "time_offset": 60 + }, + { + "first": "Calibrator Observation 2", + "placement": "after", + "second": "Target Observation", + "time_offset": 60 + } + ], + "tasks": { + "Calibrator Observation 1": { + "description": "Calibrator Observation 1. Before the Target Observation", + "short_description": "Cal1 3Cabc", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator1", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cabc" + } + }, + "duration": 600 + }, + "specifications_template": { + "name": "calibrator observation", + "version": 8 + } + }, + "Calibrator Observation 2": { + "description": "Calibrator Observation 2. After the Target Observation", + "short_description": "Cal2 3Cdef", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator2", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cdef" + } + }, + "duration": 600 + }, + "specifications_template": { + "name": "calibrator observation", + "version": 8 + } + }, + "Calibrator Pipeline 1": { + "description": "Preprocessing Pipeline for Calibrator Observation 1", + "short_description": "Cal1 3Cabc/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Calibrator Pipeline 2": { + "description": "Preprocessing Pipeline for Calibrator Observation 2", + "short_description": "Cal2 3Cdef/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Cleanup": { + "description": "Clean up all dataproducts from disk after ingest", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Target Observation": { + "description": "Target Observation", + "short_description": "_Target_Name_", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4" + }, + "duration": 28800, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "target1" + }, + "name": "target", + "subbands": [ + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 182, + 183, + 184, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 212, + 213, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 349, + 364, + 372, + 380, + 388, + 396, + 404, + 413, + 421, + 430, + 438, + 447 + ] + } + ], + "antenna_set": "HBA_DUAL_INNER", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "target1" + } + } + }, + "specifications_template": { + "name": "target observation", + "version": 7 + } + }, + "Target Pipeline": { + "description": "Preprocessing Pipeline for Target Observation", + "short_description": "_Target_Name_/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + } + } + }, + "version": 32, + "id": 21, + "state_value": "legacy", + "purpose_value": "production" + }, + { + "description": "This observation strategy template defines a single-beam HBA imaging strategy with a Calibrator-Target-Calibrator observation chain, plus a preprocessing pipeline for each and ingest of pipeline data only.", + "name": "IM HBA - 1 Beam", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "legacy", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Observation Description", + "refs": [ + "#/tasks/Target Observation/short_description" + ] + }, + { + "name": "Target Pipeline Description", + "refs": [ + "#/tasks/Target Pipeline/short_description" + ] + }, + { + "name": "Target Pointing", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing", + "#/tasks/Target Observation/specifications_doc/station_configuration/tile_beam" + ] + }, + { + "name": "Subbands", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/subbands" + ] + }, + { + "name": "Target Duration", + "refs": [ + "#/tasks/Target Observation/specifications_doc/duration" + ] + }, + { + "name": "Calibrator Observation 1 Description", + "refs": [ + "#/tasks/Calibrator Observation 1/short_description" + ] + }, + { + "name": "Calibrator Pipeline 1 Description", + "refs": [ + "#/tasks/Calibrator Pipeline 1/short_description" + ] + }, + { + "name": "Calibrator Observation 1 Pointing ", + "refs": [ + "#/tasks/Calibrator Observation 1/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Calibrator Observation 1 Duration", + "refs": [ + "#/tasks/Calibrator Observation 1/specifications_doc/duration" + ] + }, + { + "name": "Calibrator Observation 2 Description", + "refs": [ + "#/tasks/Calibrator Observation 2/short_description" + ] + }, + { + "name": "Calibrator Pipeline 2 Description", + "refs": [ + "#/tasks/Calibrator Pipeline 2/short_description" + ] + }, + { + "name": "Calibrator Observation 2 Pointing", + "refs": [ + "#/tasks/Calibrator Observation 2/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Calibrator Observation 2 Duration", + "refs": [ + "#/tasks/Calibrator Observation 2/specifications_doc/duration" + ] + }, + { + "name": "Run Adder", + "refs": [ + "#/tasks/Target Observation/specifications_doc/QA/plots/enabled", + "#/tasks/Calibrator Observation 1/specifications_doc/QA/plots/enabled", + "#/tasks/Calibrator Observation 2/specifications_doc/QA/plots/enabled", + "#/tasks/Target Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Calibrator Observation 1/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Calibrator Observation 2/specifications_doc/QA/file_conversion/enabled" + ] + } + ], + "scheduling_constraints_doc": { + "scheduler": "dynamic", + "sky": { + "min_elevation": { + "calibrator": 0.5235987756, + "target": 0.5235987756 + }, + "transit_offset": { + "from": -1440, + "to": 1440 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Calibrator Pipeline 1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Calibrator Pipeline 2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Target Pipeline", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": { + "sap": [ + "target" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Target Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Target Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [ + { + "first": "Calibrator Observation 1", + "placement": "before", + "second": "Target Observation", + "time_offset": 60 + }, + { + "first": "Calibrator Observation 2", + "placement": "after", + "second": "Target Observation", + "time_offset": 60 + } + ], + "tasks": { + "Calibrator Observation 1": { + "description": "Calibrator Observation 1. Before the Target Observation", + "short_description": "Cal1 3Cabc", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator1", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cabc" + } + }, + "duration": 600 + }, + "specifications_template": { + "name": "calibrator observation", + "version": 9 + } + }, + "Calibrator Observation 2": { + "description": "Calibrator Observation 2. After the Target Observation", + "short_description": "Cal2 3Cdef", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator2", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cdef" + } + }, + "duration": 600 + }, + "specifications_template": { + "name": "calibrator observation", + "version": 9 + } + }, + "Calibrator Pipeline 1": { + "description": "Preprocessing Pipeline for Calibrator Observation 1", + "short_description": "Cal1 3Cabc/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Calibrator Pipeline 2": { + "description": "Preprocessing Pipeline for Calibrator Observation 2", + "short_description": "Cal2 3Cdef/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Cleanup": { + "description": "Clean up all dataproducts from disk after ingest", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Target Observation": { + "description": "Target Observation", + "short_description": "_Target_Name_", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4" + }, + "duration": 28800, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "target1" + }, + "name": "target", + "subbands": [ + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 182, + 183, + 184, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 212, + 213, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 349, + 364, + 372, + 380, + 388, + 396, + 404, + 413, + 421, + 430, + 438, + 447 + ] + } + ], + "antenna_set": "HBA_DUAL_INNER", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "target1" + } + } + }, + "specifications_template": { + "name": "target observation", + "version": 8 + } + }, + "Target Pipeline": { + "description": "Preprocessing Pipeline for Target Observation", + "short_description": "_Target_Name_/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + } + } + }, + "version": 33, + "id": 22, + "state_value": "legacy", + "purpose_value": "production" + }, + { + "description": "This observation strategy template defines a single-beam HBA imaging strategy with a Calibrator-Target-Calibrator observation chain, plus a preprocessing pipeline for each and ingest of pipeline data only.", + "name": "IM HBA - 1 Beam", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "legacy", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Observation Description", + "refs": [ + "#/tasks/Target Observation/short_description" + ] + }, + { + "name": "Target Pipeline Description", + "refs": [ + "#/tasks/Target Pipeline/short_description" + ] + }, + { + "name": "Target Pointing", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing", + "#/tasks/Target Observation/specifications_doc/station_configuration/tile_beam" + ] + }, + { + "name": "Subbands", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/subbands" + ] + }, + { + "name": "Target Duration", + "refs": [ + "#/tasks/Target Observation/specifications_doc/duration" + ] + }, + { + "name": "Calibrator Observation 1 Description", + "refs": [ + "#/tasks/Calibrator Observation 1/short_description" + ] + }, + { + "name": "Calibrator Pipeline 1 Description", + "refs": [ + "#/tasks/Calibrator Pipeline 1/short_description" + ] + }, + { + "name": "Calibrator Observation 1 Pointing ", + "refs": [ + "#/tasks/Calibrator Observation 1/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Calibrator Observation 1 Duration", + "refs": [ + "#/tasks/Calibrator Observation 1/specifications_doc/duration" + ] + }, + { + "name": "Calibrator Observation 2 Description", + "refs": [ + "#/tasks/Calibrator Observation 2/short_description" + ] + }, + { + "name": "Calibrator Pipeline 2 Description", + "refs": [ + "#/tasks/Calibrator Pipeline 2/short_description" + ] + }, + { + "name": "Calibrator Observation 2 Pointing", + "refs": [ + "#/tasks/Calibrator Observation 2/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Calibrator Observation 2 Duration", + "refs": [ + "#/tasks/Calibrator Observation 2/specifications_doc/duration" + ] + }, + { + "name": "Run Adder", + "refs": [ + "#/tasks/Target Observation/specifications_doc/QA/plots/enabled", + "#/tasks/Calibrator Observation 1/specifications_doc/QA/plots/enabled", + "#/tasks/Calibrator Observation 2/specifications_doc/QA/plots/enabled", + "#/tasks/Target Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Calibrator Observation 1/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Calibrator Observation 2/specifications_doc/QA/file_conversion/enabled" + ] + } + ], + "scheduling_constraints_doc": { + "scheduler": "dynamic", + "sky": { + "min_elevation": { + "calibrator": 0.5235987756, + "target": 0.5235987756 + }, + "transit_offset": { + "from": -1440, + "to": 1440 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Calibrator Pipeline 1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Calibrator Pipeline 2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Target Pipeline", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": { + "sap": [ + "target" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Target Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Target Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [ + { + "first": "Calibrator Observation 1", + "placement": "before", + "second": "Target Observation", + "time_offset": 60 + }, + { + "first": "Calibrator Observation 2", + "placement": "after", + "second": "Target Observation", + "time_offset": 60 + } + ], + "tasks": { + "Calibrator Observation 1": { + "description": "Calibrator Observation 1. Before the Target Observation", + "short_description": "Cal1 3Cabc", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator1", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cabc" + } + }, + "duration": 600 + }, + "specifications_template": { + "name": "calibrator observation", + "version": 9 + } + }, + "Calibrator Observation 2": { + "description": "Calibrator Observation 2. After the Target Observation", + "short_description": "Cal2 3Cdef", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator2", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cdef" + } + }, + "duration": 600 + }, + "specifications_template": { + "name": "calibrator observation", + "version": 9 + } + }, + "Calibrator Pipeline 1": { + "description": "Preprocessing Pipeline for Calibrator Observation 1", + "short_description": "Cal1 3Cabc/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Calibrator Pipeline 2": { + "description": "Preprocessing Pipeline for Calibrator Observation 2", + "short_description": "Cal2 3Cdef/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Cleanup": { + "description": "Clean up all dataproducts from disk after ingest", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Target Observation": { + "description": "Target Observation", + "short_description": "_Target_Name_", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4" + }, + "duration": 28800, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "target1" + }, + "name": "target", + "subbands": [ + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 182, + 183, + 184, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 212, + 213, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 349, + 364, + 372, + 380, + 388, + 396, + 404, + 413, + 421, + 430, + 438, + 447 + ] + } + ], + "antenna_set": "HBA_DUAL_INNER", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "target1" + } + } + }, + "specifications_template": { + "name": "target observation", + "version": 8 + } + }, + "Target Pipeline": { + "description": "Preprocessing Pipeline for Target Observation", + "short_description": "_Target_Name_/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + } + } + }, + "version": 34, + "id": 23, + "state_value": "legacy", + "purpose_value": "production" + }, + { + "description": "This observation strategy template defines a single-beam HBA imaging strategy with a Calibrator-Target-Calibrator observation chain, plus a preprocessing pipeline for each and ingest of pipeline data only.", + "name": "IM HBA - 1 Beam", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "active", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Observation Description", + "refs": [ + "#/tasks/Target Observation/short_description" + ] + }, + { + "name": "Target Pipeline Description", + "refs": [ + "#/tasks/Target Pipeline/short_description" + ] + }, + { + "name": "Target Pointing", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing", + "#/tasks/Target Observation/specifications_doc/station_configuration/tile_beam" + ] + }, + { + "name": "Subbands", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/subbands" + ] + }, + { + "name": "Target Duration", + "refs": [ + "#/tasks/Target Observation/specifications_doc/duration" + ] + }, + { + "name": "Calibrator Observation 1 Description", + "refs": [ + "#/tasks/Calibrator Observation 1/short_description" + ] + }, + { + "name": "Calibrator Pipeline 1 Description", + "refs": [ + "#/tasks/Calibrator Pipeline 1/short_description" + ] + }, + { + "name": "Calibrator Observation 1 Pointing ", + "refs": [ + "#/tasks/Calibrator Observation 1/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Calibrator Observation 1 Duration", + "refs": [ + "#/tasks/Calibrator Observation 1/specifications_doc/duration" + ] + }, + { + "name": "Calibrator Observation 2 Description", + "refs": [ + "#/tasks/Calibrator Observation 2/short_description" + ] + }, + { + "name": "Calibrator Pipeline 2 Description", + "refs": [ + "#/tasks/Calibrator Pipeline 2/short_description" + ] + }, + { + "name": "Calibrator Observation 2 Pointing", + "refs": [ + "#/tasks/Calibrator Observation 2/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Calibrator Observation 2 Duration", + "refs": [ + "#/tasks/Calibrator Observation 2/specifications_doc/duration" + ] + }, + { + "name": "Run Adder", + "refs": [ + "#/tasks/Target Observation/specifications_doc/QA/plots/enabled", + "#/tasks/Calibrator Observation 1/specifications_doc/QA/plots/enabled", + "#/tasks/Calibrator Observation 2/specifications_doc/QA/plots/enabled", + "#/tasks/Target Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Calibrator Observation 1/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Calibrator Observation 2/specifications_doc/QA/file_conversion/enabled" + ] + } + ], + "scheduling_constraints_doc": { + "scheduler": "dynamic", + "sky": { + "min_elevation": { + "calibrator": 0.5235987756, + "target": 0.5235987756 + }, + "transit_offset": { + "from": -1440, + "to": 1440 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Calibrator Pipeline 1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Calibrator Pipeline 2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Target Pipeline", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": { + "sap": [ + "target" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Target Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Target Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [ + { + "first": "Calibrator Observation 1", + "placement": "before", + "second": "Target Observation", + "time_offset": 60 + }, + { + "first": "Calibrator Observation 2", + "placement": "after", + "second": "Target Observation", + "time_offset": 60 + } + ], + "tasks": { + "Calibrator Observation 1": { + "description": "Calibrator Observation 1. Before the Target Observation", + "short_description": "Cal1 3Cabc", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator1", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cabc" + } + }, + "duration": 600 + }, + "specifications_template": { + "name": "calibrator observation", + "version": 9 + } + }, + "Calibrator Observation 2": { + "description": "Calibrator Observation 2. After the Target Observation", + "short_description": "Cal2 3Cdef", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator2", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cdef" + } + }, + "duration": 600 + }, + "specifications_template": { + "name": "calibrator observation", + "version": 9 + } + }, + "Calibrator Pipeline 1": { + "description": "Preprocessing Pipeline for Calibrator Observation 1", + "short_description": "Cal1 3Cabc/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Calibrator Pipeline 2": { + "description": "Preprocessing Pipeline for Calibrator Observation 2", + "short_description": "Cal2 3Cdef/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Cleanup": { + "description": "Clean up all dataproducts from disk after ingest", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Target Observation": { + "description": "Target Observation", + "short_description": "_Target_Name_", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4" + }, + "duration": 28800, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "target1" + }, + "name": "target", + "subbands": [ + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 182, + 183, + 184, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 212, + 213, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 349, + 364, + 372, + 380, + 388, + 396, + 404, + 413, + 421, + 430, + 438, + 447 + ] + } + ], + "antenna_set": "HBA_DUAL_INNER", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "target1" + } + } + }, + "specifications_template": { + "name": "target observation", + "version": 9 + } + }, + "Target Pipeline": { + "description": "Preprocessing Pipeline for Target Observation", + "short_description": "_Target_Name_/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + } + } + }, + "version": 35, + "id": 24, + "state_value": "active", + "purpose_value": "production" + }, + { + "description": "This observation strategy template defines a LoTSS (Co-)observing run with a Calibrator-Target-Calibrator observation chain, plus a preprocessing pipeline for each and ingest of pipeline data only. Added cleanup.", + "name": "IM HBA LoTSS - 2 Beams", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "legacy", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Target Pointing 1", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" + ] + }, + { + "name": "Target Pointing 2", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/1/digital_pointing" + ] + }, + { + "name": "Tile Beam", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/tile_beam" + ] + }, + { + "name": "Target Duration", + "refs": [ + "#/tasks/Target Observation/specifications_doc/duration" + ] + }, + { + "name": "Observation Description", + "refs": [ + "#/tasks/Target Observation/short_description" + ] + }, + { + "name": "Pipeline 1 Description", + "refs": [ + "#/tasks/Pipeline target1/short_description" + ] + }, + { + "name": "Pipeline 2 Description", + "refs": [ + "#/tasks/Pipeline target2/short_description" + ] + }, + { + "name": "Calibrator Observation 1 Description", + "refs": [ + "#/tasks/Calibrator Observation 1/short_description" + ] + }, + { + "name": "Calibrator Observation 1 Pointing", + "refs": [ + "#/tasks/Calibrator Observation 1/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Calibrator Pipeline 1 Description", + "refs": [ + "#/tasks/Calibrator Pipeline 1/short_description" + ] + }, + { + "name": "Calibrator Observation 2 Description", + "refs": [ + "#/tasks/Calibrator Observation 2/short_description" + ] + }, + { + "name": "Calibrator Observation 2 Pointing", + "refs": [ + "#/tasks/Calibrator Observation 2/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Calibrator Pipeline 2 Description", + "refs": [ + "#/tasks/Calibrator Pipeline 2/short_description" + ] + }, + { + "name": "Run Adder", + "refs": [ + "#/tasks/Target Observation/specifications_doc/QA/plots/enabled", + "#/tasks/Calibrator Observation 1/specifications_doc/QA/plots/enabled", + "#/tasks/Calibrator Observation 2/specifications_doc/QA/plots/enabled", + "#/tasks/Target Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Calibrator Observation 1/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Calibrator Observation 2/specifications_doc/QA/file_conversion/enabled" + ] + } + ], + "scheduling_constraints_doc": { + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0.26179938779, + "moon": 0.5235987755982988, + "sun": 0.5235987755982988 + }, + "min_elevation": { + "calibrator": 0.5235987755982988, + "target": 0.5235987755982988 + }, + "transit_offset": { + "from": -1440, + "to": 1440 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Calibrator Pipeline 1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Calibrator Pipeline 2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Pipeline target1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": { + "sap": [ + "sap1" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": { + "sap": [ + "sap2" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [ + { + "first": "Calibrator Observation 1", + "placement": "before", + "second": "Target Observation", + "time_offset": 60 + }, + { + "first": "Calibrator Observation 2", + "placement": "after", + "second": "Target Observation", + "time_offset": 60 + } + ], + "tasks": { + "Calibrator Observation 1": { + "description": "Calibrator Observation 1. Before the Target Observation", + "short_description": "Cal1 3Cabc", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator1", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cabc" + } + }, + "duration": 600 + }, + "specifications_template": { + "name": "calibrator observation", + "version": 8 + } + }, + "Calibrator Observation 2": { + "description": "Calibrator Observation 2. After the Target Observation", + "short_description": "Cal2 3Cdef", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator1", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cdef" + } + }, + "duration": 600 + }, + "specifications_template": { + "name": "calibrator observation", + "version": 8 + } + }, + "Calibrator Pipeline 1": { + "description": "Preprocessing Pipeline for Calibrator Observation 1", + "short_description": "Cal1 3Cabc/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 61, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Calibrator Pipeline 2": { + "description": "Preprocessing Pipeline for Calibrator Observation 2", + "short_description": "Cal2 3Cdef/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 61, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Cleanup": { + "description": "Clean up all dataproducts from disk after ingest", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Pipeline target1": { + "description": "Preprocessing Pipeline for Target Observation target1, SAP000, 120-168 MHz, 1s, 16ch/sb", + "short_description": "Paaa+01/TP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 61, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target2": { + "description": "Preprocessing Pipeline for Target Observation target2, SAP001, 120-168 MHz, 1s, 16ch/sb", + "short_description": "Paaa+02/TP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 61, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Target Observation": { + "description": "Target Observation for LoTSS scheduling unit. HBA_DUAL_INNER, 120-168 MHz, 1s, 64ch/sb ", + "short_description": "Paaa+01 & Paaa+02", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4" + }, + "duration": 28800, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+01" + }, + "name": "sap1", + "subbands": [ + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 182, + 183, + 184, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 212, + 213, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 349, + 364, + 372, + 380, + 388, + 396, + 404, + 413, + 421, + 430, + 438, + 447 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+02" + }, + "name": "sap2", + "subbands": [ + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 182, + 183, + 184, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 212, + 213, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 349, + 364, + 372, + 380, + 388, + 396, + 404, + 413, + 421, + 430, + 438, + 447 + ] + } + ], + "antenna_set": "HBA_DUAL_INNER", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+01Paaa+02REF" + } + } + }, + "specifications_template": { + "name": "target observation", + "version": 7 + } + } + } + }, + "version": 13, + "id": 25, + "state_value": "legacy", + "purpose_value": "production" + }, + { + "description": "This observation strategy template defines a LoTSS (Co-)observing run with a Calibrator-Target-Calibrator observation chain, plus a preprocessing pipeline for each and ingest of pipeline data only. Added cleanup.", + "name": "IM HBA LoTSS - 2 Beams", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "legacy", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Target Pointing 1", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" + ] + }, + { + "name": "Target Pointing 2", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/1/digital_pointing" + ] + }, + { + "name": "Tile Beam", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/tile_beam" + ] + }, + { + "name": "Target Duration", + "refs": [ + "#/tasks/Target Observation/specifications_doc/duration" + ] + }, + { + "name": "Observation Description", + "refs": [ + "#/tasks/Target Observation/short_description" + ] + }, + { + "name": "Pipeline 1 Description", + "refs": [ + "#/tasks/Pipeline target1/short_description" + ] + }, + { + "name": "Pipeline 2 Description", + "refs": [ + "#/tasks/Pipeline target2/short_description" + ] + }, + { + "name": "Calibrator Observation 1 Description", + "refs": [ + "#/tasks/Calibrator Observation 1/short_description" + ] + }, + { + "name": "Calibrator Observation 1 Pointing", + "refs": [ + "#/tasks/Calibrator Observation 1/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Calibrator Pipeline 1 Description", + "refs": [ + "#/tasks/Calibrator Pipeline 1/short_description" + ] + }, + { + "name": "Calibrator Observation 2 Description", + "refs": [ + "#/tasks/Calibrator Observation 2/short_description" + ] + }, + { + "name": "Calibrator Observation 2 Pointing", + "refs": [ + "#/tasks/Calibrator Observation 2/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Calibrator Pipeline 2 Description", + "refs": [ + "#/tasks/Calibrator Pipeline 2/short_description" + ] + }, + { + "name": "Run Adder", + "refs": [ + "#/tasks/Target Observation/specifications_doc/QA/plots/enabled", + "#/tasks/Calibrator Observation 1/specifications_doc/QA/plots/enabled", + "#/tasks/Calibrator Observation 2/specifications_doc/QA/plots/enabled", + "#/tasks/Target Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Calibrator Observation 1/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Calibrator Observation 2/specifications_doc/QA/file_conversion/enabled" + ] + } + ], + "scheduling_constraints_doc": { + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0.26179938779, + "moon": 0.5235987755982988, + "sun": 0.5235987755982988 + }, + "min_elevation": { + "calibrator": 0.5235987755982988, + "target": 0.5235987755982988 + }, + "transit_offset": { + "from": -1440, + "to": 1440 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Calibrator Pipeline 1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Calibrator Pipeline 2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Pipeline target1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": { + "sap": [ + "sap1" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": { + "sap": [ + "sap2" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [ + { + "first": "Calibrator Observation 1", + "placement": "before", + "second": "Target Observation", + "time_offset": 60 + }, + { + "first": "Calibrator Observation 2", + "placement": "after", + "second": "Target Observation", + "time_offset": 60 + } + ], + "tasks": { + "Calibrator Observation 1": { + "description": "Calibrator Observation 1. Before the Target Observation", + "short_description": "Cal1 3Cabc", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator1", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cabc" + } + }, + "duration": 600 + }, + "specifications_template": { + "name": "calibrator observation", + "version": 8 + } + }, + "Calibrator Observation 2": { + "description": "Calibrator Observation 2. After the Target Observation", + "short_description": "Cal2 3Cdef", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator1", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cdef" + } + }, + "duration": 600 + }, + "specifications_template": { + "name": "calibrator observation", + "version": 8 + } + }, + "Calibrator Pipeline 1": { + "description": "Preprocessing Pipeline for Calibrator Observation 1", + "short_description": "Cal1 3Cabc/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 61, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Calibrator Pipeline 2": { + "description": "Preprocessing Pipeline for Calibrator Observation 2", + "short_description": "Cal2 3Cdef/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 61, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Cleanup": { + "description": "Clean up all dataproducts from disk after ingest", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Pipeline target1": { + "description": "Preprocessing Pipeline for Target Observation target1, SAP000, 120-168 MHz, 1s, 16ch/sb", + "short_description": "Paaa+01/TP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 61, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target2": { + "description": "Preprocessing Pipeline for Target Observation target2, SAP001, 120-168 MHz, 1s, 16ch/sb", + "short_description": "Paaa+02/TP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 61, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Target Observation": { + "description": "Target Observation for LoTSS scheduling unit. HBA_DUAL_INNER, 120-168 MHz, 1s, 64ch/sb ", + "short_description": "Paaa+01 & Paaa+02", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4" + }, + "duration": 28800, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+01" + }, + "name": "sap1", + "subbands": [ + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 182, + 183, + 184, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 212, + 213, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 349, + 364, + 372, + 380, + 388, + 396, + 404, + 413, + 421, + 430, + 438, + 447 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+02" + }, + "name": "sap2", + "subbands": [ + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 182, + 183, + 184, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 212, + 213, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 349, + 364, + 372, + 380, + 388, + 396, + 404, + 413, + 421, + 430, + 438, + 447 + ] + } + ], + "antenna_set": "HBA_DUAL_INNER", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+01Paaa+02REF" + } + } + }, + "specifications_template": { + "name": "target observation", + "version": 8 + } + } + } + }, + "version": 14, + "id": 26, + "state_value": "legacy", + "purpose_value": "production" + }, + { + "description": "This observation strategy template defines a LoTSS (Co-)observing run with a Calibrator-Target-Calibrator observation chain, plus a preprocessing pipeline for each and ingest of pipeline data only. Added cleanup.", + "name": "IM HBA LoTSS - 2 Beams", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "legacy", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Target Pointing 1", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" + ] + }, + { + "name": "Target Pointing 2", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/1/digital_pointing" + ] + }, + { + "name": "Tile Beam", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/tile_beam" + ] + }, + { + "name": "Target Duration", + "refs": [ + "#/tasks/Target Observation/specifications_doc/duration" + ] + }, + { + "name": "Observation Description", + "refs": [ + "#/tasks/Target Observation/short_description" + ] + }, + { + "name": "Pipeline 1 Description", + "refs": [ + "#/tasks/Pipeline target1/short_description" + ] + }, + { + "name": "Pipeline 2 Description", + "refs": [ + "#/tasks/Pipeline target2/short_description" + ] + }, + { + "name": "Calibrator Observation 1 Description", + "refs": [ + "#/tasks/Calibrator Observation 1/short_description" + ] + }, + { + "name": "Calibrator Observation 1 Pointing", + "refs": [ + "#/tasks/Calibrator Observation 1/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Calibrator Pipeline 1 Description", + "refs": [ + "#/tasks/Calibrator Pipeline 1/short_description" + ] + }, + { + "name": "Calibrator Observation 2 Description", + "refs": [ + "#/tasks/Calibrator Observation 2/short_description" + ] + }, + { + "name": "Calibrator Observation 2 Pointing", + "refs": [ + "#/tasks/Calibrator Observation 2/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Calibrator Pipeline 2 Description", + "refs": [ + "#/tasks/Calibrator Pipeline 2/short_description" + ] + }, + { + "name": "Run Adder", + "refs": [ + "#/tasks/Target Observation/specifications_doc/QA/plots/enabled", + "#/tasks/Calibrator Observation 1/specifications_doc/QA/plots/enabled", + "#/tasks/Calibrator Observation 2/specifications_doc/QA/plots/enabled", + "#/tasks/Target Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Calibrator Observation 1/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Calibrator Observation 2/specifications_doc/QA/file_conversion/enabled" + ] + } + ], + "scheduling_constraints_doc": { + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0.26179938779, + "moon": 0.5235987755982988, + "sun": 0.5235987755982988 + }, + "min_elevation": { + "calibrator": 0.5235987755982988, + "target": 0.5235987755982988 + }, + "transit_offset": { + "from": -1440, + "to": 1440 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Calibrator Pipeline 1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Calibrator Pipeline 2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Pipeline target1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": { + "sap": [ + "sap1" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": { + "sap": [ + "sap2" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [ + { + "first": "Calibrator Observation 1", + "placement": "before", + "second": "Target Observation", + "time_offset": 60 + }, + { + "first": "Calibrator Observation 2", + "placement": "after", + "second": "Target Observation", + "time_offset": 60 + } + ], + "tasks": { + "Calibrator Observation 1": { + "description": "Calibrator Observation 1. Before the Target Observation", + "short_description": "Cal1 3Cabc", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator1", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cabc" + } + }, + "duration": 600 + }, + "specifications_template": { + "name": "calibrator observation", + "version": 8 + } + }, + "Calibrator Observation 2": { + "description": "Calibrator Observation 2. After the Target Observation", + "short_description": "Cal2 3Cdef", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator1", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cdef" + } + }, + "duration": 600 + }, + "specifications_template": { + "name": "calibrator observation", + "version": 8 + } + }, + "Calibrator Pipeline 1": { + "description": "Preprocessing Pipeline for Calibrator Observation 1", + "short_description": "Cal1 3Cabc/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 61, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Calibrator Pipeline 2": { + "description": "Preprocessing Pipeline for Calibrator Observation 2", + "short_description": "Cal2 3Cdef/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 61, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Cleanup": { + "description": "Clean up all dataproducts from disk after ingest", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Pipeline target1": { + "description": "Preprocessing Pipeline for Target Observation target1, SAP000, 120-168 MHz, 1s, 16ch/sb", + "short_description": "Paaa+01/TP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 61, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target2": { + "description": "Preprocessing Pipeline for Target Observation target2, SAP001, 120-168 MHz, 1s, 16ch/sb", + "short_description": "Paaa+02/TP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 61, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Target Observation": { + "description": "Target Observation for LoTSS scheduling unit. HBA_DUAL_INNER, 120-168 MHz, 1s, 64ch/sb ", + "short_description": "Paaa+01 & Paaa+02", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4" + }, + "duration": 28800, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+01" + }, + "name": "sap1", + "subbands": [ + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 182, + 183, + 184, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 212, + 213, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 349, + 364, + 372, + 380, + 388, + 396, + 404, + 413, + 421, + 430, + 438, + 447 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+02" + }, + "name": "sap2", + "subbands": [ + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 182, + 183, + 184, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 212, + 213, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 349, + 364, + 372, + 380, + 388, + 396, + 404, + 413, + 421, + 430, + 438, + 447 + ] + } + ], + "antenna_set": "HBA_DUAL_INNER", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+01Paaa+02REF" + } + } + }, + "specifications_template": { + "name": "target observation", + "version": 8 + } + } + } + }, + "version": 15, + "id": 27, + "state_value": "legacy", + "purpose_value": "production" + }, + { + "description": "This observation strategy template defines a LoTSS (Co-)observing run with a Calibrator-Target-Calibrator observation chain, plus a preprocessing pipeline for each and ingest of pipeline data only. Added cleanup.", + "name": "IM HBA LoTSS - 2 Beams", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "active", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Target Pointing 1", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" + ] + }, + { + "name": "Target Pointing 2", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/1/digital_pointing" + ] + }, + { + "name": "Tile Beam", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/tile_beam" + ] + }, + { + "name": "Target Duration", + "refs": [ + "#/tasks/Target Observation/specifications_doc/duration" + ] + }, + { + "name": "Observation Description", + "refs": [ + "#/tasks/Target Observation/short_description" + ] + }, + { + "name": "Pipeline 1 Description", + "refs": [ + "#/tasks/Pipeline target1/short_description" + ] + }, + { + "name": "Pipeline 2 Description", + "refs": [ + "#/tasks/Pipeline target2/short_description" + ] + }, + { + "name": "Calibrator Observation 1 Description", + "refs": [ + "#/tasks/Calibrator Observation 1/short_description" + ] + }, + { + "name": "Calibrator Observation 1 Pointing", + "refs": [ + "#/tasks/Calibrator Observation 1/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Calibrator Pipeline 1 Description", + "refs": [ + "#/tasks/Calibrator Pipeline 1/short_description" + ] + }, + { + "name": "Calibrator Observation 2 Description", + "refs": [ + "#/tasks/Calibrator Observation 2/short_description" + ] + }, + { + "name": "Calibrator Observation 2 Pointing", + "refs": [ + "#/tasks/Calibrator Observation 2/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Calibrator Pipeline 2 Description", + "refs": [ + "#/tasks/Calibrator Pipeline 2/short_description" + ] + }, + { + "name": "Run Adder", + "refs": [ + "#/tasks/Target Observation/specifications_doc/QA/plots/enabled", + "#/tasks/Calibrator Observation 1/specifications_doc/QA/plots/enabled", + "#/tasks/Calibrator Observation 2/specifications_doc/QA/plots/enabled", + "#/tasks/Target Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Calibrator Observation 1/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Calibrator Observation 2/specifications_doc/QA/file_conversion/enabled" + ] + } + ], + "scheduling_constraints_doc": { + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0.26179938779, + "moon": 0.5235987755982988, + "sun": 0.5235987755982988 + }, + "min_elevation": { + "calibrator": 0.5235987755982988, + "target": 0.5235987755982988 + }, + "transit_offset": { + "from": -1440, + "to": 1440 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Calibrator Pipeline 1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Calibrator Pipeline 2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Pipeline target1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": { + "sap": [ + "sap1" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": { + "sap": [ + "sap2" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Calibrator Observation 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [ + { + "first": "Calibrator Observation 1", + "placement": "before", + "second": "Target Observation", + "time_offset": 60 + }, + { + "first": "Calibrator Observation 2", + "placement": "after", + "second": "Target Observation", + "time_offset": 60 + } + ], + "tasks": { + "Calibrator Observation 1": { + "description": "Calibrator Observation 1. Before the Target Observation", + "short_description": "Cal1 3Cabc", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator1", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cabc" + } + }, + "duration": 600 + }, + "specifications_template": { + "name": "calibrator observation", + "version": 8 + } + }, + "Calibrator Observation 2": { + "description": "Calibrator Observation 2. After the Target Observation", + "short_description": "Cal2 3Cdef", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator1", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cdef" + } + }, + "duration": 600 + }, + "specifications_template": { + "name": "calibrator observation", + "version": 8 + } + }, + "Calibrator Pipeline 1": { + "description": "Preprocessing Pipeline for Calibrator Observation 1", + "short_description": "Cal1 3Cabc/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 61, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Calibrator Pipeline 2": { + "description": "Preprocessing Pipeline for Calibrator Observation 2", + "short_description": "Cal2 3Cdef/PP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 61, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Cleanup": { + "description": "Clean up all dataproducts from disk after ingest", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Pipeline target1": { + "description": "Preprocessing Pipeline for Target Observation target1, SAP000, 120-168 MHz, 1s, 16ch/sb", + "short_description": "Paaa+01/TP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 61, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target2": { + "description": "Preprocessing Pipeline for Target Observation target2, SAP001, 120-168 MHz, 1s, 16ch/sb", + "short_description": "Paaa+02/TP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 61, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Target Observation": { + "description": "Target Observation for LoTSS scheduling unit. HBA_DUAL_INNER, 120-168 MHz, 1s, 64ch/sb ", + "short_description": "Paaa+01 & Paaa+02", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4" + }, + "duration": 28800, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+01" + }, + "name": "sap1", + "subbands": [ + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 182, + 183, + 184, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 212, + 213, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 349, + 364, + 372, + 380, + 388, + 396, + 404, + 413, + 421, + 430, + 438, + 447 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+02" + }, + "name": "sap2", + "subbands": [ + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 182, + 183, + 184, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 212, + 213, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 349, + 364, + 372, + 380, + 388, + 396, + 404, + 413, + 421, + 430, + 438, + 447 + ] + } + ], + "antenna_set": "HBA_DUAL_INNER", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+01Paaa+02REF" + } + } + }, + "specifications_template": { + "name": "target observation", + "version": 9 + } + } + } + }, + "version": 16, + "id": 28, + "state_value": "active", + "purpose_value": "production" + }, + { + "description": "LBA Imaging Observing Strategy using 1 Beam and a parallel Calibrator Beam with a preprocessing pipeline for each.", + "name": "IM LBA - 1 Beam", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "legacy", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/duration" + ] + }, + { + "name": "Subbands", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/subbands" + ] + }, + { + "name": "Filter", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/filter" + ] + }, + { + "name": "Antenna Set", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/antenna_set" + ] + }, + { + "name": "Run ADDER QA", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Combined Observation/specifications_doc/QA/plots/enabled" + ] + }, + { + "name": "Observation description", + "refs": [ + "#/tasks/Combined Observation/short_description" + ] + }, + { + "name": "Pipeline description", + "refs": [ + "#/tasks/Pipeline target/short_description" + ] + }, + { + "name": "Pipeline Calibrator description", + "refs": [ + "#/tasks/Calibrator Pipeline/short_description" + ] + }, + { + "name": "Target Pointing", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" + ] + }, + { + "name": "Calibrator Pointing", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Time averaging steps", + "refs": [ + "#/tasks/Pipeline target/specifications_doc/average/time_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/time_steps" + ] + }, + { + "name": "Frequency averaging steps", + "refs": [ + "#/tasks/Pipeline target/specifications_doc/average/frequency_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/frequency_steps" + ] + }, + { + "name": "Demix Pipeline Target", + "refs": [ + "#/tasks/Pipeline target/specifications_doc/demix" + ] + }, + { + "name": "Demix Pipeline Calibrator", + "refs": [ + "#/tasks/Calibrator Pipeline/specifications_doc/demix" + ] + } + ], + "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0.52359877559, + "moon": 0.52359877559, + "sun": 0.52359877559 + }, + "min_elevation": { + "calibrator": 0.52359877559, + "target": 0.69813170079 + }, + "transit_offset": { + "from": -7200, + "to": 7200 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Calibrator Pipeline", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "calibrator" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target1" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Calibrator Pipeline": { + "description": "Preprocessing Pipeline for Calibrator Observation", + "short_description": "oOOO.O 3Cabc", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 2 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Cleanup": { + "description": "Clean up all dataproducts from disk after ingest", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Combined Observation": { + "description": "Combined parallel Calibrator & Target Observation for LBA with 1 target beam", + "short_description": "OOO.O _Target_name_", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": true, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": true + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cabc" + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4" + }, + "duration": 120, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_Target_name_" + }, + "name": "target1", + "subbands": [ + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353 + ] + } + ], + "antenna_set": "LBA_SPARSE_EVEN", + "filter": "LBA_10_90", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 1, + "stations": [ + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 0, + "stations": [ + "RS310", + "RS210" + ] + }, + { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + } + ] + } + }, + "specifications_template": { + "name": "parallel calibrator target observation", + "version": 9 + } + }, + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Pipeline target": { + "description": "Preprocessing Pipeline for Target Observation target beam", + "short_description": "oOOO.O _Target_name_", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 2 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + } + } + }, + "version": 11, + "id": 29, + "state_value": "legacy", + "purpose_value": "production" + }, + { + "description": "LBA Imaging Observing Strategy using 1 Beam and a parallel Calibrator Beam with a preprocessing pipeline for each.", + "name": "IM LBA - 1 Beam", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "active", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/duration" + ] + }, + { + "name": "Subbands", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/subbands" + ] + }, + { + "name": "Filter", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/filter" + ] + }, + { + "name": "Antenna Set", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/antenna_set" + ] + }, + { + "name": "Run ADDER QA", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Combined Observation/specifications_doc/QA/plots/enabled" + ] + }, + { + "name": "Observation description", + "refs": [ + "#/tasks/Combined Observation/short_description" + ] + }, + { + "name": "Pipeline description", + "refs": [ + "#/tasks/Pipeline target/short_description" + ] + }, + { + "name": "Pipeline Calibrator description", + "refs": [ + "#/tasks/Calibrator Pipeline/short_description" + ] + }, + { + "name": "Target Pointing", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" + ] + }, + { + "name": "Calibrator Pointing", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Time averaging steps", + "refs": [ + "#/tasks/Pipeline target/specifications_doc/average/time_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/time_steps" + ] + }, + { + "name": "Frequency averaging steps", + "refs": [ + "#/tasks/Pipeline target/specifications_doc/average/frequency_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/frequency_steps" + ] + }, + { + "name": "Demix Pipeline Target", + "refs": [ + "#/tasks/Pipeline target/specifications_doc/demix" + ] + }, + { + "name": "Demix Pipeline Calibrator", + "refs": [ + "#/tasks/Calibrator Pipeline/specifications_doc/demix" + ] + } + ], + "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0.52359877559, + "moon": 0.52359877559, + "sun": 0.52359877559 + }, + "min_elevation": { + "calibrator": 0.52359877559, + "target": 0.69813170079 + }, + "transit_offset": { + "from": -7200, + "to": 7200 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Calibrator Pipeline", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "calibrator" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target1" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Calibrator Pipeline": { + "description": "Preprocessing Pipeline for Calibrator Observation", + "short_description": "oOOO.O 3Cabc", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 2 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Cleanup": { + "description": "Clean up all dataproducts from disk after ingest", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Combined Observation": { + "description": "Combined parallel Calibrator & Target Observation for LBA with 1 target beam", + "short_description": "OOO.O _Target_name_", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": true, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": true + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cabc" + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4" + }, + "duration": 120, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_Target_name_" + }, + "name": "target1", + "subbands": [ + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353 + ] + } + ], + "antenna_set": "LBA_SPARSE_EVEN", + "filter": "LBA_10_90", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 1, + "stations": [ + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 0, + "stations": [ + "RS310", + "RS210" + ] + }, + { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + } + ] + } + }, + "specifications_template": { + "name": "parallel calibrator target observation", + "version": 10 + } + }, + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Pipeline target": { + "description": "Preprocessing Pipeline for Target Observation target beam", + "short_description": "oOOO.O _Target_name_", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 2 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + } + } + }, + "version": 12, + "id": 30, + "state_value": "active", + "purpose_value": "production" + }, + { + "description": "LBA Imaging Observing Strategy using 2 Target Beams and a parallel Calibrator Beam with a preprocessing pipeline for each.", + "name": "IM LBA - 2 Beams", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "active", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/duration" + ] + }, + { + "name": "Antenna Set", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/antenna_set" + ] + }, + { + "name": "Filter", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/filter" + ] + }, + { + "name": "Subbands", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/subbands", + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/1/subbands" + ] + }, + { + "name": "Run ADDER QA", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Combined Observation/specifications_doc/QA/plots/enabled" + ] + }, + { + "name": "Observation description", + "refs": [ + "#/tasks/Combined Observation/short_description" + ] + }, + { + "name": "Pipeline 1 description", + "refs": [ + "#/tasks/Pipeline target1/short_description" + ] + }, + { + "name": "Pipeline 2 description", + "refs": [ + "#/tasks/Pipeline target2/short_description" + ] + }, + { + "name": "Pipeline Calibrator description", + "refs": [ + "#/tasks/Calibrator Pipeline/short_description" + ] + }, + { + "name": "Target Pointing 1", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" + ] + }, + { + "name": "Target Pointing 2", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/1/digital_pointing" + ] + }, + { + "name": "Calibrator Pointing", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Time averaging steps", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/average/time_steps", + "#/tasks/Pipeline target2/specifications_doc/average/time_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/time_steps" + ] + }, + { + "name": "Time averaging steps demix", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/demix/time_steps", + "#/tasks/Pipeline target2/specifications_doc/demix/time_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/demix/time_steps" + ] + }, + { + "name": "Frequency averaging steps", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/average/frequency_steps", + "#/tasks/Pipeline target2/specifications_doc/average/frequency_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/frequency_steps" + ] + }, + { + "name": "Frequency averaging steps demix", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/demix/frequency_steps", + "#/tasks/Pipeline target2/specifications_doc/demix/frequency_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/demix/frequency_steps" + ] + }, + { + "name": "Demix sources Pipeline Target 1", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/demix/sources" + ] + }, + { + "name": "Demix sources Pipeline Target 2", + "refs": [ + "#/tasks/Pipeline target2/specifications_doc/demix/sources" + ] + }, + { + "name": "Demix sources Pipeline Calibrator", + "refs": [ + "#/tasks/Calibrator Pipeline/specifications_doc/demix/sources" + ] + } + ], + "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0.26179938779, + "moon": 0.52359877559, + "sun": 0.52359877559 + }, + "min_elevation": { + "calibrator": 0.52359877559, + "target": 0.87266462599 + }, + "transit_offset": { + "from": -43200, + "to": 43200 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Calibrator Pipeline", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "calibrator" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target1" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target2" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Calibrator Pipeline": { + "description": "Preprocessing Pipeline for Calibrator Observation", + "short_description": "3Cabc/1.0/CP", + "specifications_doc": { + "average": { + "frequency_steps": 16, + "time_steps": 4 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Cleanup": { + "description": "Clean up all output dataproducts from disk after ingest", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Combined Observation": { + "description": "Combined parallel Calibrator & Target Observation for LBA with 2 target beams", + "short_description": "_observation_name_", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": true, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": true + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cabc" + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4" + }, + "duration": 120, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_target_1_name_" + }, + "name": "target1", + "subbands": [ + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_target_2_name_" + }, + "name": "target2", + "subbands": [ + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338 + ] + } + ], + "antenna_set": "LBA_OUTER", + "filter": "LBA_30_90", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 1, + "stations": [ + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 0, + "stations": [ + "RS310", + "RS210" + ] + } + ] + } + }, + "specifications_template": { + "name": "parallel calibrator target observation", + "version": 10 + } + }, + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Pipeline target1": { + "description": "Preprocessing Pipeline for Target Observation target1", + "short_description": "_target_1_name_/1.0/TP", + "specifications_doc": { + "average": { + "frequency_steps": 2, + "time_steps": 2 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target2": { + "description": "Preprocessing Pipeline for Target Observation target2", + "short_description": "_target_2_name_/1.1/TP", + "specifications_doc": { + "average": { + "frequency_steps": 2, + "time_steps": 2 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + } + } + }, + "version": 22, + "id": 31, + "state_value": "active", + "purpose_value": "production" + }, + { + "description": "LBA Imaging Observing Strategy using 2 Target Beams and a parallel Calibrator Beam with a preprocessing pipeline for each.", + "name": "IM LBA - 2 Beams", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "legacy", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/duration" + ] + }, + { + "name": "Antenna Set", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/antenna_set" + ] + }, + { + "name": "Filter", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/filter" + ] + }, + { + "name": "Subbands", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/subbands", + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/1/subbands" + ] + }, + { + "name": "Run ADDER QA", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Combined Observation/specifications_doc/QA/plots/enabled" + ] + }, + { + "name": "Observation description", + "refs": [ + "#/tasks/Combined Observation/short_description" + ] + }, + { + "name": "Pipeline 1 description", + "refs": [ + "#/tasks/Pipeline target1/short_description" + ] + }, + { + "name": "Pipeline 2 description", + "refs": [ + "#/tasks/Pipeline target2/short_description" + ] + }, + { + "name": "Pipeline Calibrator description", + "refs": [ + "#/tasks/Calibrator Pipeline/short_description" + ] + }, + { + "name": "Target Pointing 1", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" + ] + }, + { + "name": "Target Pointing 2", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/1/digital_pointing" + ] + }, + { + "name": "Calibrator Pointing", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Time averaging steps", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/average/time_steps", + "#/tasks/Pipeline target2/specifications_doc/average/time_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/time_steps" + ] + }, + { + "name": "Time averaging steps demix", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/demix/time_steps", + "#/tasks/Pipeline target2/specifications_doc/demix/time_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/demix/time_steps" + ] + }, + { + "name": "Frequency averaging steps", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/average/frequency_steps", + "#/tasks/Pipeline target2/specifications_doc/average/frequency_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/frequency_steps" + ] + }, + { + "name": "Frequency averaging steps demix", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/demix/frequency_steps", + "#/tasks/Pipeline target2/specifications_doc/demix/frequency_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/demix/frequency_steps" + ] + }, + { + "name": "Demix sources Pipeline Target 1", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/demix/sources" + ] + }, + { + "name": "Demix sources Pipeline Target 2", + "refs": [ + "#/tasks/Pipeline target2/specifications_doc/demix/sources" + ] + }, + { + "name": "Demix sources Pipeline Calibrator", + "refs": [ + "#/tasks/Calibrator Pipeline/specifications_doc/demix/sources" + ] + } + ], + "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0.26179938779, + "moon": 0.52359877559, + "sun": 0.52359877559 + }, + "min_elevation": { + "calibrator": 0.52359877559, + "target": 0.87266462599 + }, + "transit_offset": { + "from": -43200, + "to": 43200 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Calibrator Pipeline", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "calibrator" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target1" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target2" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Calibrator Pipeline": { + "description": "Preprocessing Pipeline for Calibrator Observation", + "short_description": "3Cabc/1.0/CP", + "specifications_doc": { + "average": { + "frequency_steps": 16, + "time_steps": 4 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Cleanup": { + "description": "Clean up all output dataproducts from disk after ingest", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Combined Observation": { + "description": "Combined parallel Calibrator & Target Observation for LBA with 2 target beams", + "short_description": "_observation_name_", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": true, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": true + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cabc" + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4" + }, + "duration": 120, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_target_1_name_" + }, + "name": "target1", + "subbands": [ + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_target_2_name_" + }, + "name": "target2", + "subbands": [ + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338 + ] + } + ], + "antenna_set": "LBA_OUTER", + "filter": "LBA_30_90", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 1, + "stations": [ + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 0, + "stations": [ + "RS310", + "RS210" + ] + } + ] + } + }, + "specifications_template": { + "name": "parallel calibrator target observation", + "version": 9 + } + }, + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Pipeline target1": { + "description": "Preprocessing Pipeline for Target Observation target1", + "short_description": "_target_1_name_/1.0/TP", + "specifications_doc": { + "average": { + "frequency_steps": 2, + "time_steps": 2 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target2": { + "description": "Preprocessing Pipeline for Target Observation target2", + "short_description": "_target_2_name_/1.1/TP", + "specifications_doc": { + "average": { + "frequency_steps": 2, + "time_steps": 2 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + } + } + }, + "version": 8, + "id": 32, + "state_value": "legacy", + "purpose_value": "production" + }, + { + "description": "LBA Imaging Observing Strategy using 5 Beams and a parallel Calibrator Beam with a preprocessing pipeline for each, used for the LOFAR Decametre Sky Survey. LBA Sparse Even, 14.4-30.1 MHz, 1s, 64ch/sb", + "name": "IM LBA LoDSS - 5 Beams", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "legacy", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/duration" + ] + }, + { + "name": "Run ADDER QA", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Combined Observation/specifications_doc/QA/plots/enabled" + ] + }, + { + "name": "Observation description", + "refs": [ + "#/tasks/Combined Observation/short_description" + ] + }, + { + "name": "Pipeline 1 description", + "refs": [ + "#/tasks/Pipeline target1/short_description" + ] + }, + { + "name": "Pipeline 2 description", + "refs": [ + "#/tasks/Pipeline target2/short_description" + ] + }, + { + "name": "Pipeline 3 description", + "refs": [ + "#/tasks/Pipeline target3/short_description" + ] + }, + { + "name": "Pipeline 4 description", + "refs": [ + "#/tasks/Pipeline target4/short_description" + ] + }, + { + "name": "Pipeline 5 description", + "refs": [ + "#/tasks/Pipeline target5/short_description" + ] + }, + { + "name": "Pipeline Calibrator description", + "refs": [ + "#/tasks/Calibrator Pipeline/short_description" + ] + }, + { + "name": "Target Pointing 1", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" + ] + }, + { + "name": "Target Pointing 2", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/1/digital_pointing" + ] + }, + { + "name": "Target Pointing 3", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/2/digital_pointing" + ] + }, + { + "name": "Target Pointing 4", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/3/digital_pointing" + ] + }, + { + "name": "Target Pointing 5", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/4/digital_pointing" + ] + }, + { + "name": "Calibrator Pointing", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Time averaging steps", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/average/time_steps", + "#/tasks/Pipeline target2/specifications_doc/average/time_steps", + "#/tasks/Pipeline target3/specifications_doc/average/time_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/time_steps" + ] + }, + { + "name": "Frequency averaging steps", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/average/frequency_steps", + "#/tasks/Pipeline target2/specifications_doc/average/frequency_steps", + "#/tasks/Pipeline target3/specifications_doc/average/frequency_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/frequency_steps" + ] + } + ], + "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0.52359877559, + "moon": 0.52359877559, + "sun": 0.52359877559 + }, + "min_elevation": { + "calibrator": 0.52359877559, + "target": 0.87266462599 + }, + "transit_offset": { + "from": -14400, + "to": 14400 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Calibrator Pipeline", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "calibrator" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target1" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target2" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target3", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target3" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target4", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target4" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target5", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target5" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target3", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target4", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target5", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target3", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target4", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target5", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Calibrator Pipeline": { + "description": "Preprocessing Pipeline for Calibrator Observation. No demix, Flagging LBA_default, Dysco=enabled", + "short_description": "3Cabc/1.0/CP", + "specifications_doc": { + "average": { + "frequency_steps": 1, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 41, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Cleanup": { + "description": "Clean up all dataproducts from disk after ingest", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Combined Observation": { + "description": "Combined parallel Calibrator & Target Observation for LBA with 5 target beams. Dutch stations only, 200 MHz, 10-90 MHz filter", + "short_description": "oXXX Paaa+01 3Cabc", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_calibrator_name_" + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4" + }, + "duration": 120, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+01" + }, + "name": "target1", + "subbands": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+02" + }, + "name": "target2", + "subbands": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+03" + }, + "name": "target3", + "subbands": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+04" + }, + "name": "target4", + "subbands": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+05" + }, + "name": "target5", + "subbands": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154 + ] + } + ], + "antenna_set": "LBA_SPARSE_EVEN", + "filter": "LBA_10_90", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 1, + "stations": [ + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 0, + "stations": [ + "RS310", + "RS210" + ] + } + ] + } + }, + "specifications_template": { + "name": "parallel calibrator target observation", + "version": 8 + } + }, + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Pipeline target1": { + "description": "Preprocessing Pipeline for Target Observation target1. No demix, Flagging LBA_default, Dysco=enabled", + "short_description": "Paaa+01/1.0/TP", + "specifications_doc": { + "average": { + "frequency_steps": 1, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 41, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target2": { + "description": "Preprocessing Pipeline for Target Observation target2. No demix, Flagging LBA_default, Dysco=enabled", + "short_description": "Paaa+02/1.1/TP", + "specifications_doc": { + "average": { + "frequency_steps": 1, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 41, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target3": { + "description": "Preprocessing Pipeline for Target Observation target3. No demix, Flagging LBA_default, Dysco=enabled", + "short_description": "Paaa+03/1.2/TP", + "specifications_doc": { + "average": { + "frequency_steps": 1, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 41, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target4": { + "description": "Preprocessing Pipeline for Target Observation target4. No demix, Flagging LBA_default, Dysco=enabled", + "short_description": "Paaa+04/1.3/TP", + "specifications_doc": { + "average": { + "frequency_steps": 1, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 41, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target5": { + "description": "Preprocessing Pipeline for Target Observation target5. No demix, Flagging LBA_default, Dysco=enabled", + "short_description": "Paaa+05/1.4/TP", + "specifications_doc": { + "average": { + "frequency_steps": 1, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 41, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + } + } + }, + "version": 45, + "id": 33, + "state_value": "legacy", + "purpose_value": "production" + }, + { + "description": "LBA Imaging Observing Strategy using 5 Beams and a parallel Calibrator Beam with a preprocessing pipeline for each, used for the LOFAR Decametre Sky Survey. LBA Sparse Even, 14.4-30.1 MHz, 1s, 64ch/sb", + "name": "IM LBA LoDSS - 5 Beams", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "legacy", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/duration" + ] + }, + { + "name": "Run ADDER QA", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Combined Observation/specifications_doc/QA/plots/enabled" + ] + }, + { + "name": "Observation description", + "refs": [ + "#/tasks/Combined Observation/short_description" + ] + }, + { + "name": "Pipeline 1 description", + "refs": [ + "#/tasks/Pipeline target1/short_description" + ] + }, + { + "name": "Pipeline 2 description", + "refs": [ + "#/tasks/Pipeline target2/short_description" + ] + }, + { + "name": "Pipeline 3 description", + "refs": [ + "#/tasks/Pipeline target3/short_description" + ] + }, + { + "name": "Pipeline 4 description", + "refs": [ + "#/tasks/Pipeline target4/short_description" + ] + }, + { + "name": "Pipeline 5 description", + "refs": [ + "#/tasks/Pipeline target5/short_description" + ] + }, + { + "name": "Pipeline Calibrator description", + "refs": [ + "#/tasks/Calibrator Pipeline/short_description" + ] + }, + { + "name": "Target Pointing 1", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" + ] + }, + { + "name": "Target Pointing 2", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/1/digital_pointing" + ] + }, + { + "name": "Target Pointing 3", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/2/digital_pointing" + ] + }, + { + "name": "Target Pointing 4", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/3/digital_pointing" + ] + }, + { + "name": "Target Pointing 5", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/4/digital_pointing" + ] + }, + { + "name": "Calibrator Pointing", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Time averaging steps", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/average/time_steps", + "#/tasks/Pipeline target2/specifications_doc/average/time_steps", + "#/tasks/Pipeline target3/specifications_doc/average/time_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/time_steps" + ] + }, + { + "name": "Frequency averaging steps", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/average/frequency_steps", + "#/tasks/Pipeline target2/specifications_doc/average/frequency_steps", + "#/tasks/Pipeline target3/specifications_doc/average/frequency_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/frequency_steps" + ] + } + ], + "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0.52359877559, + "moon": 0.52359877559, + "sun": 0.52359877559 + }, + "min_elevation": { + "calibrator": 0.52359877559, + "target": 0.87266462599 + }, + "transit_offset": { + "from": -14400, + "to": 14400 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Calibrator Pipeline", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "calibrator" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target1" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target2" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target3", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target3" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target4", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target4" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target5", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target5" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target3", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target4", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target5", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target3", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target4", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target5", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Calibrator Pipeline": { + "description": "Preprocessing Pipeline for Calibrator Observation. No demix, Flagging LBA_default, Dysco=enabled", + "short_description": "3Cabc/1.0/CP", + "specifications_doc": { + "average": { + "frequency_steps": 1, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 41, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Cleanup": { + "description": "Clean up all dataproducts from disk after ingest", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Combined Observation": { + "description": "Combined parallel Calibrator & Target Observation for LBA with 5 target beams. Dutch stations only, 200 MHz, 10-90 MHz filter", + "short_description": "oXXX Paaa+01 3Cabc", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_calibrator_name_" + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4" + }, + "duration": 120, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+01" + }, + "name": "target1", + "subbands": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+02" + }, + "name": "target2", + "subbands": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+03" + }, + "name": "target3", + "subbands": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+04" + }, + "name": "target4", + "subbands": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+05" + }, + "name": "target5", + "subbands": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154 + ] + } + ], + "antenna_set": "LBA_SPARSE_EVEN", + "filter": "LBA_10_90", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 1, + "stations": [ + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 0, + "stations": [ + "RS310", + "RS210" + ] + } + ] + } + }, + "specifications_template": { + "name": "parallel calibrator target observation", + "version": 9 + } + }, + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Pipeline target1": { + "description": "Preprocessing Pipeline for Target Observation target1. No demix, Flagging LBA_default, Dysco=enabled", + "short_description": "Paaa+01/1.0/TP", + "specifications_doc": { + "average": { + "frequency_steps": 1, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 41, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target2": { + "description": "Preprocessing Pipeline for Target Observation target2. No demix, Flagging LBA_default, Dysco=enabled", + "short_description": "Paaa+02/1.1/TP", + "specifications_doc": { + "average": { + "frequency_steps": 1, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 41, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target3": { + "description": "Preprocessing Pipeline for Target Observation target3. No demix, Flagging LBA_default, Dysco=enabled", + "short_description": "Paaa+03/1.2/TP", + "specifications_doc": { + "average": { + "frequency_steps": 1, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 41, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target4": { + "description": "Preprocessing Pipeline for Target Observation target4. No demix, Flagging LBA_default, Dysco=enabled", + "short_description": "Paaa+04/1.3/TP", + "specifications_doc": { + "average": { + "frequency_steps": 1, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 41, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target5": { + "description": "Preprocessing Pipeline for Target Observation target5. No demix, Flagging LBA_default, Dysco=enabled", + "short_description": "Paaa+05/1.4/TP", + "specifications_doc": { + "average": { + "frequency_steps": 1, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 41, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + } + } + }, + "version": 46, + "id": 34, + "state_value": "legacy", + "purpose_value": "production" + }, + { + "description": "LBA Imaging Observing Strategy using 5 Beams and a parallel Calibrator Beam with a preprocessing pipeline for each, used for the LOFAR Decametre Sky Survey. LBA Sparse Even, 14.4-30.1 MHz, 1s, 64ch/sb", + "name": "IM LBA LoDSS - 5 Beams", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "active", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/duration" + ] + }, + { + "name": "Run ADDER QA", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Combined Observation/specifications_doc/QA/plots/enabled" + ] + }, + { + "name": "Observation description", + "refs": [ + "#/tasks/Combined Observation/short_description" + ] + }, + { + "name": "Pipeline 1 description", + "refs": [ + "#/tasks/Pipeline target1/short_description" + ] + }, + { + "name": "Pipeline 2 description", + "refs": [ + "#/tasks/Pipeline target2/short_description" + ] + }, + { + "name": "Pipeline 3 description", + "refs": [ + "#/tasks/Pipeline target3/short_description" + ] + }, + { + "name": "Pipeline 4 description", + "refs": [ + "#/tasks/Pipeline target4/short_description" + ] + }, + { + "name": "Pipeline 5 description", + "refs": [ + "#/tasks/Pipeline target5/short_description" + ] + }, + { + "name": "Pipeline Calibrator description", + "refs": [ + "#/tasks/Calibrator Pipeline/short_description" + ] + }, + { + "name": "Target Pointing 1", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" + ] + }, + { + "name": "Target Pointing 2", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/1/digital_pointing" + ] + }, + { + "name": "Target Pointing 3", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/2/digital_pointing" + ] + }, + { + "name": "Target Pointing 4", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/3/digital_pointing" + ] + }, + { + "name": "Target Pointing 5", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/4/digital_pointing" + ] + }, + { + "name": "Calibrator Pointing", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Time averaging steps", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/average/time_steps", + "#/tasks/Pipeline target2/specifications_doc/average/time_steps", + "#/tasks/Pipeline target3/specifications_doc/average/time_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/time_steps" + ] + }, + { + "name": "Frequency averaging steps", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/average/frequency_steps", + "#/tasks/Pipeline target2/specifications_doc/average/frequency_steps", + "#/tasks/Pipeline target3/specifications_doc/average/frequency_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/frequency_steps" + ] + } + ], + "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0.52359877559, + "moon": 0.52359877559, + "sun": 0.52359877559 + }, + "min_elevation": { + "calibrator": 0.52359877559, + "target": 0.87266462599 + }, + "transit_offset": { + "from": -14400, + "to": 14400 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Calibrator Pipeline", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "calibrator" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target1" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target2" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target3", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target3" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target4", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target4" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target5", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target5" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target3", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target4", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target5", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target3", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target4", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target5", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Calibrator Pipeline": { + "description": "Preprocessing Pipeline for Calibrator Observation. No demix, Flagging LBA_default, Dysco=enabled", + "short_description": "3Cabc/1.0/CP", + "specifications_doc": { + "average": { + "frequency_steps": 1, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 41, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Cleanup": { + "description": "Clean up all dataproducts from disk after ingest", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Combined Observation": { + "description": "Combined parallel Calibrator & Target Observation for LBA with 5 target beams. Dutch stations only, 200 MHz, 10-90 MHz filter", + "short_description": "oXXX Paaa+01 3Cabc", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_calibrator_name_" + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4" + }, + "duration": 120, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+01" + }, + "name": "target1", + "subbands": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+02" + }, + "name": "target2", + "subbands": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+03" + }, + "name": "target3", + "subbands": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+04" + }, + "name": "target4", + "subbands": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+05" + }, + "name": "target5", + "subbands": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154 + ] + } + ], + "antenna_set": "LBA_SPARSE_EVEN", + "filter": "LBA_10_90", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 1, + "stations": [ + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 0, + "stations": [ + "RS310", + "RS210" + ] + } + ] + } + }, + "specifications_template": { + "name": "parallel calibrator target observation", + "version": 10 + } + }, + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Pipeline target1": { + "description": "Preprocessing Pipeline for Target Observation target1. No demix, Flagging LBA_default, Dysco=enabled", + "short_description": "Paaa+01/1.0/TP", + "specifications_doc": { + "average": { + "frequency_steps": 1, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 41, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target2": { + "description": "Preprocessing Pipeline for Target Observation target2. No demix, Flagging LBA_default, Dysco=enabled", + "short_description": "Paaa+02/1.1/TP", + "specifications_doc": { + "average": { + "frequency_steps": 1, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 41, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target3": { + "description": "Preprocessing Pipeline for Target Observation target3. No demix, Flagging LBA_default, Dysco=enabled", + "short_description": "Paaa+03/1.2/TP", + "specifications_doc": { + "average": { + "frequency_steps": 1, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 41, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target4": { + "description": "Preprocessing Pipeline for Target Observation target4. No demix, Flagging LBA_default, Dysco=enabled", + "short_description": "Paaa+04/1.3/TP", + "specifications_doc": { + "average": { + "frequency_steps": 1, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 41, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target5": { + "description": "Preprocessing Pipeline for Target Observation target5. No demix, Flagging LBA_default, Dysco=enabled", + "short_description": "Paaa+05/1.4/TP", + "specifications_doc": { + "average": { + "frequency_steps": 1, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 41, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + } + } + }, + "version": 49, + "id": 35, + "state_value": "active", + "purpose_value": "production" + }, + { + "description": "LBA Imaging Observing Strategy using 3 Beams and a parallel Calibrator Beam with a preprocessing pipeline for each, used for the LOFAR LBA High Survey and LBA Co-observing.", + "name": "IM LBA Survey - 3 Beams", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "legacy", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/duration" + ] + }, + { + "name": "Run ADDER QA", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Combined Observation/specifications_doc/QA/plots/enabled" + ] + }, + { + "name": "Observation description", + "refs": [ + "#/tasks/Combined Observation/short_description" + ] + }, + { + "name": "Pipeline 1 description", + "refs": [ + "#/tasks/Pipeline target1/short_description" + ] + }, + { + "name": "Pipeline 2 description", + "refs": [ + "#/tasks/Pipeline target2/short_description" + ] + }, + { + "name": "Pipeline 3 description", + "refs": [ + "#/tasks/Pipeline target3/short_description" + ] + }, + { + "name": "Pipeline Calibrator description", + "refs": [ + "#/tasks/Calibrator Pipeline/short_description" + ] + }, + { + "name": "Target Pointing 1", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" + ] + }, + { + "name": "Target Pointing 2", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/1/digital_pointing" + ] + }, + { + "name": "Target Pointing 3", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/2/digital_pointing" + ] + }, + { + "name": "Calibrator Pointing", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Time averaging steps", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/average/time_steps", + "#/tasks/Pipeline target2/specifications_doc/average/time_steps", + "#/tasks/Pipeline target3/specifications_doc/average/time_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/time_steps" + ] + }, + { + "name": "Frequency averaging steps", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/average/frequency_steps", + "#/tasks/Pipeline target2/specifications_doc/average/frequency_steps", + "#/tasks/Pipeline target3/specifications_doc/average/frequency_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/frequency_steps" + ] + }, + { + "name": "Demix sources Pipeline Target 1", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/demix/sources" + ] + }, + { + "name": "Demix ignore target Pipeline Target 1", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/demix/ignore_target" + ] + }, + { + "name": "Demix sources Pipeline Target 2", + "refs": [ + "#/tasks/Pipeline target2/specifications_doc/demix/sources" + ] + }, + { + "name": "Demix ignore target Pipeline Target 2", + "refs": [ + "#/tasks/Pipeline target2/specifications_doc/demix/ignore_target" + ] + }, + { + "name": "Demix sources Pipeline Target 3", + "refs": [ + "#/tasks/Pipeline target3/specifications_doc/demix/sources" + ] + }, + { + "name": "Demix ignore target Pipeline Target 3", + "refs": [ + "#/tasks/Pipeline target3/specifications_doc/demix/ignore_target" + ] + }, + { + "name": "Demix sources Pipeline Calibrator", + "refs": [ + "#/tasks/Calibrator Pipeline/specifications_doc/demix/sources" + ] + } + ], + "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0.26179938779, + "moon": 0.52359877559, + "sun": 0.52359877559 + }, + "min_elevation": { + "calibrator": 0.52359877559, + "target": 0.87266462599 + }, + "transit_offset": { + "from": -14400, + "to": 14400 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Calibrator Pipeline", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "calibrator" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target1" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target2" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target3", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target3" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target3", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target3", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Calibrator Pipeline": { + "description": "Preprocessing Pipeline for Calibrator Observation", + "short_description": "c17 oOOO.O 3Cabc", + "specifications_doc": { + "average": { + "frequency_steps": 8, + "time_steps": 4 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Cleanup": { + "description": "Clean up all dataproducts from disk after ingest", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Combined Observation": { + "description": "Combined parallel Calibrator & Target Observation for LBA with 3 target beams", + "short_description": "OOO.O Paaa+01 Paaa+02 Paaa+03", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": true, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": true + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cabc" + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4" + }, + "duration": 120, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+01" + }, + "name": "target1", + "subbands": [ + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+02" + }, + "name": "target2", + "subbands": [ + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+03" + }, + "name": "target3", + "subbands": [ + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338 + ] + } + ], + "antenna_set": "LBA_SPARSE_EVEN", + "filter": "LBA_30_90", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 1, + "stations": [ + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 0, + "stations": [ + "RS310", + "RS210" + ] + } + ] + } + }, + "specifications_template": { + "name": "parallel calibrator target observation", + "version": 8 + } + }, + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Pipeline target1": { + "description": "Preprocessing Pipeline for Target Observation target1", + "short_description": "c17 oOOO.O Paaa+01", + "specifications_doc": { + "average": { + "frequency_steps": 8, + "time_steps": 4 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target2": { + "description": "Preprocessing Pipeline for Target Observation target2", + "short_description": "c17 oOOO.O Paaa+02", + "specifications_doc": { + "average": { + "frequency_steps": 8, + "time_steps": 4 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target3": { + "description": "Preprocessing Pipeline for Target Observation target3", + "short_description": "c17 oOOO.O Paaa+03", + "specifications_doc": { + "average": { + "frequency_steps": 8, + "time_steps": 4 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + } + } + }, + "version": 28, + "id": 36, + "state_value": "legacy", + "purpose_value": "production" + }, + { + "description": "LBA Imaging Observing Strategy using 3 Beams and a parallel Calibrator Beam with a preprocessing pipeline for each, used for the LOFAR LBA High Survey and LBA Co-observing.", + "name": "IM LBA Survey - 3 Beams", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "legacy", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/duration" + ] + }, + { + "name": "Run ADDER QA", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Combined Observation/specifications_doc/QA/plots/enabled" + ] + }, + { + "name": "Observation description", + "refs": [ + "#/tasks/Combined Observation/short_description" + ] + }, + { + "name": "Pipeline 1 description", + "refs": [ + "#/tasks/Pipeline target1/short_description" + ] + }, + { + "name": "Pipeline 2 description", + "refs": [ + "#/tasks/Pipeline target2/short_description" + ] + }, + { + "name": "Pipeline 3 description", + "refs": [ + "#/tasks/Pipeline target3/short_description" + ] + }, + { + "name": "Pipeline Calibrator description", + "refs": [ + "#/tasks/Calibrator Pipeline/short_description" + ] + }, + { + "name": "Target Pointing 1", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" + ] + }, + { + "name": "Target Pointing 2", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/1/digital_pointing" + ] + }, + { + "name": "Target Pointing 3", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/2/digital_pointing" + ] + }, + { + "name": "Calibrator Pointing", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Time averaging steps", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/average/time_steps", + "#/tasks/Pipeline target2/specifications_doc/average/time_steps", + "#/tasks/Pipeline target3/specifications_doc/average/time_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/time_steps" + ] + }, + { + "name": "Frequency averaging steps", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/average/frequency_steps", + "#/tasks/Pipeline target2/specifications_doc/average/frequency_steps", + "#/tasks/Pipeline target3/specifications_doc/average/frequency_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/frequency_steps" + ] + }, + { + "name": "Demix sources Pipeline Target 1", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/demix/sources" + ] + }, + { + "name": "Demix ignore target Pipeline Target 1", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/demix/ignore_target" + ] + }, + { + "name": "Demix sources Pipeline Target 2", + "refs": [ + "#/tasks/Pipeline target2/specifications_doc/demix/sources" + ] + }, + { + "name": "Demix ignore target Pipeline Target 2", + "refs": [ + "#/tasks/Pipeline target2/specifications_doc/demix/ignore_target" + ] + }, + { + "name": "Demix sources Pipeline Target 3", + "refs": [ + "#/tasks/Pipeline target3/specifications_doc/demix/sources" + ] + }, + { + "name": "Demix ignore target Pipeline Target 3", + "refs": [ + "#/tasks/Pipeline target3/specifications_doc/demix/ignore_target" + ] + }, + { + "name": "Demix sources Pipeline Calibrator", + "refs": [ + "#/tasks/Calibrator Pipeline/specifications_doc/demix/sources" + ] + } + ], + "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0.26179938779, + "moon": 0.52359877559, + "sun": 0.52359877559 + }, + "min_elevation": { + "calibrator": 0.52359877559, + "target": 0.87266462599 + }, + "transit_offset": { + "from": -14400, + "to": 14400 + } + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Calibrator Pipeline", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "calibrator" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target1", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target1" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target2" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target3", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target3" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target3", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target3", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Calibrator Pipeline": { + "description": "Preprocessing Pipeline for Calibrator Observation", + "short_description": "c17 oOOO.O 3Cabc", + "specifications_doc": { + "average": { + "frequency_steps": 8, + "time_steps": 4 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Cleanup": { + "description": "Clean up all dataproducts from disk after ingest", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Combined Observation": { + "description": "Combined parallel Calibrator & Target Observation for LBA with 3 target beams", + "short_description": "OOO.O Paaa+01 Paaa+02 Paaa+03", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": true, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": true + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cabc" + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4" + }, + "duration": 120, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+01" + }, + "name": "target1", + "subbands": [ + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+02" + }, + "name": "target2", + "subbands": [ + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+03" + }, + "name": "target3", + "subbands": [ + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338 + ] + } + ], + "antenna_set": "LBA_SPARSE_EVEN", + "filter": "LBA_30_90", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 1, + "stations": [ + "RS508", + "RS509" + ] + }, + { + "max_nr_missing": 0, + "stations": [ + "RS310", + "RS210" + ] + } + ] + } + }, + "specifications_template": { + "name": "parallel calibrator target observation", + "version": 9 + } + }, + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Pipeline target1": { + "description": "Preprocessing Pipeline for Target Observation target1", + "short_description": "c17 oOOO.O Paaa+01", + "specifications_doc": { + "average": { + "frequency_steps": 8, + "time_steps": 4 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target2": { + "description": "Preprocessing Pipeline for Target Observation target2", + "short_description": "c17 oOOO.O Paaa+02", + "specifications_doc": { + "average": { + "frequency_steps": 8, + "time_steps": 4 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target3": { + "description": "Preprocessing Pipeline for Target Observation target3", + "short_description": "c17 oOOO.O Paaa+03", + "specifications_doc": { + "average": { + "frequency_steps": 8, + "time_steps": 4 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + } + } + }, + "version": 29, + "id": 37, + "state_value": "legacy", + "purpose_value": "production" + }, + { + "description": "LBA Imaging Observing Strategy using 3 Beams and a parallel Calibrator Beam with a preprocessing pipeline for each, used for the LOFAR LBA High Survey and LBA Co-observing.", + "name": "IM LBA Survey - 3 Beams", + "purpose": "production", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "legacy", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/duration" + ] + }, + { + "name": "Run ADDER QA", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Combined Observation/specifications_doc/QA/plots/enabled" + ] + }, + { + "name": "Observation description", + "refs": [ + "#/tasks/Combined Observation/short_description" + ] + }, + { + "name": "Pipeline 1 description", + "refs": [ + "#/tasks/Pipeline target1/short_description" + ] + }, + { + "name": "Pipeline 2 description", + "refs": [ + "#/tasks/Pipeline target2/short_description" + ] + }, + { + "name": "Pipeline 3 description", + "refs": [ + "#/tasks/Pipeline target3/short_description" + ] }, { - "name": "Calibrator Pipeline 1 Description", + "name": "Pipeline Calibrator description", "refs": [ - "#/tasks/Calibrator Pipeline 1/short_description" + "#/tasks/Calibrator Pipeline/short_description" ] }, { - "name": "Calibrator Observation 2 Description", + "name": "Target Pointing 1", "refs": [ - "#/tasks/Calibrator Observation 2/short_description" + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" ] }, { - "name": "Calibrator Observation 2 Pointing", + "name": "Target Pointing 2", "refs": [ - "#/tasks/Calibrator Observation 2/specifications_doc/calibrator/pointing" + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/1/digital_pointing" ] }, { - "name": "Calibrator Pipeline 2 Description", + "name": "Target Pointing 3", "refs": [ - "#/tasks/Calibrator Pipeline 2/short_description" + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/2/digital_pointing" ] }, { - "name": "Run Adder", + "name": "Calibrator Pointing", "refs": [ - "#/tasks/Target Observation/specifications_doc/QA/plots/enabled", - "#/tasks/Calibrator Observation 1/specifications_doc/QA/plots/enabled", - "#/tasks/Calibrator Observation 2/specifications_doc/QA/plots/enabled", - "#/tasks/Target Observation/specifications_doc/QA/file_conversion/enabled", - "#/tasks/Calibrator Observation 1/specifications_doc/QA/file_conversion/enabled", - "#/tasks/Calibrator Observation 2/specifications_doc/QA/file_conversion/enabled" + "#/tasks/Combined Observation/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Time averaging steps", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/average/time_steps", + "#/tasks/Pipeline target2/specifications_doc/average/time_steps", + "#/tasks/Pipeline target3/specifications_doc/average/time_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/time_steps" + ] + }, + { + "name": "Frequency averaging steps", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/average/frequency_steps", + "#/tasks/Pipeline target2/specifications_doc/average/frequency_steps", + "#/tasks/Pipeline target3/specifications_doc/average/frequency_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/frequency_steps" + ] + }, + { + "name": "Demix sources Pipeline Target 1", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/demix/sources" + ] + }, + { + "name": "Demix ignore target Pipeline Target 1", + "refs": [ + "#/tasks/Pipeline target1/specifications_doc/demix/ignore_target" + ] + }, + { + "name": "Demix sources Pipeline Target 2", + "refs": [ + "#/tasks/Pipeline target2/specifications_doc/demix/sources" + ] + }, + { + "name": "Demix ignore target Pipeline Target 2", + "refs": [ + "#/tasks/Pipeline target2/specifications_doc/demix/ignore_target" + ] + }, + { + "name": "Demix sources Pipeline Target 3", + "refs": [ + "#/tasks/Pipeline target3/specifications_doc/demix/sources" + ] + }, + { + "name": "Demix ignore target Pipeline Target 3", + "refs": [ + "#/tasks/Pipeline target3/specifications_doc/demix/ignore_target" + ] + }, + { + "name": "Demix sources Pipeline Calibrator", + "refs": [ + "#/tasks/Calibrator Pipeline/specifications_doc/demix/sources" ] } ], "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, "scheduler": "dynamic", "sky": { "min_distance": { "jupiter": 0.26179938779, - "moon": 0.5235987755982988, - "sun": 0.5235987755982988 + "moon": 0.52359877559, + "sun": 0.52359877559 }, "min_elevation": { - "calibrator": 0.5235987755982988, - "target": 0.5235987755982988 + "calibrator": 0.52359877559, + "target": 0.87266462599 }, "transit_offset": { - "from": -1440, - "to": 1440 + "from": -14400, + "to": 14400 } } }, "scheduling_constraints_template": { "name": "constraints", - "version": 8 + "version": 7 }, "task_relations": [ { - "consumer": "Calibrator Pipeline 1", + "consumer": "Calibrator Pipeline", "input": { "dataformat": "MeasurementSet", "datatype": "visibilities", @@ -10196,30 +37550,15 @@ "datatype": "visibilities", "role": "correlator" }, - "producer": "Calibrator Observation 1", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, - { - "consumer": "Calibrator Pipeline 2", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "calibrator" + ] }, - "producer": "Calibrator Observation 2", - "selection_doc": {}, "selection_template": { - "name": "all", - "version": 9 + "name": "SAP", + "version": 6 } }, { @@ -10234,15 +37573,15 @@ "datatype": "visibilities", "role": "correlator" }, - "producer": "Target Observation", + "producer": "Combined Observation", "selection_doc": { "sap": [ - "sap1" + "target1" ] }, "selection_template": { "name": "SAP", - "version": 7 + "version": 6 } }, { @@ -10257,19 +37596,19 @@ "datatype": "visibilities", "role": "correlator" }, - "producer": "Target Observation", + "producer": "Combined Observation", "selection_doc": { "sap": [ - "sap2" + "target2" ] }, "selection_template": { "name": "SAP", - "version": 7 + "version": 6 } }, { - "consumer": "Ingest", + "consumer": "Pipeline target3", "input": { "dataformat": "MeasurementSet", "datatype": "visibilities", @@ -10278,13 +37617,17 @@ "output": { "dataformat": "MeasurementSet", "datatype": "visibilities", - "role": "any" + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target3" + ] }, - "producer": "Calibrator Pipeline 1", - "selection_doc": {}, "selection_template": { - "name": "all", - "version": 9 + "name": "SAP", + "version": 6 } }, { @@ -10299,11 +37642,11 @@ "datatype": "visibilities", "role": "any" }, - "producer": "Calibrator Pipeline 2", + "producer": "Calibrator Pipeline", "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -10322,7 +37665,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -10341,45 +37684,26 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { - "consumer": "Cleanup", + "consumer": "Ingest", "input": { "dataformat": "MeasurementSet", "datatype": "visibilities", "role": "any" }, "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" - }, - "producer": "Target Observation", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, - { - "consumer": "Cleanup", - "input": { "dataformat": "MeasurementSet", "datatype": "visibilities", "role": "any" }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" - }, - "producer": "Calibrator Observation 1", + "producer": "Pipeline target3", "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -10394,11 +37718,11 @@ "datatype": "visibilities", "role": "correlator" }, - "producer": "Calibrator Observation 2", + "producer": "Combined Observation", "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -10417,7 +37741,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -10436,7 +37760,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -10451,11 +37775,11 @@ "datatype": "visibilities", "role": "any" }, - "producer": "Calibrator Pipeline 1", + "producer": "Pipeline target3", "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -10470,159 +37794,34 @@ "datatype": "visibilities", "role": "any" }, - "producer": "Calibrator Pipeline 2", + "producer": "Calibrator Pipeline", "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } } ], - "task_scheduling_relations": [ - { - "first": "Calibrator Observation 1", - "placement": "before", - "second": "Target Observation", - "time_offset": 60 - }, - { - "first": "Calibrator Observation 2", - "placement": "after", - "second": "Target Observation", - "time_offset": 60 - } - ], + "task_scheduling_relations": [], "tasks": { - "Calibrator Observation 1": { - "description": "Calibrator Observation 1. Before the Target Observation", - "short_description": "Cal1 3Cabc", - "specifications_doc": { - "QA": { - "file_conversion": { - "enabled": false, - "nr_of_subbands": -1, - "nr_of_timestamps": 256 - }, - "inspection_plots": "msplots", - "plots": { - "autocorrelation": true, - "crosscorrelation": true, - "enabled": false - } - }, - "calibrator": { - "autoselect": false, - "name": "calibrator1", - "pointing": { - "angle1": 0.6624317181687094, - "angle2": 1.5579526427549426, - "direction_type": "J2000", - "target": "3Cabc" - } - }, - "duration": 600, - "use_target_beamformer": true - }, - "specifications_template": { - "name": "calibrator observation", - "version": 10 - } - }, - "Calibrator Observation 2": { - "description": "Calibrator Observation 2. After the Target Observation", - "short_description": "Cal2 3Cdef", - "specifications_doc": { - "QA": { - "file_conversion": { - "enabled": false, - "nr_of_subbands": -1, - "nr_of_timestamps": 256 - }, - "inspection_plots": "msplots", - "plots": { - "autocorrelation": true, - "crosscorrelation": true, - "enabled": false - } - }, - "calibrator": { - "autoselect": false, - "name": "calibrator1", - "pointing": { - "angle1": 0.6624317181687094, - "angle2": 1.5579526427549426, - "direction_type": "J2000", - "target": "3Cdef" - } - }, - "duration": 600, - "use_target_beamformer": true - }, - "specifications_template": { - "name": "calibrator observation", - "version": 10 - } - }, - "Calibrator Pipeline 1": { - "description": "Preprocessing Pipeline for Calibrator Observation 1", - "short_description": "Cal1 3Cabc/PP", - "specifications_doc": { - "average": { - "frequency_steps": 4, - "time_steps": 1 - }, - "cluster_resources": { - "cores_per_task": 2, - "parallel_tasks": 61, - "where": { - "cluster": "CEP4", - "partition": "cpu" - } - }, - "demix": { - "frequency_steps": 64, - "ignore_target": false, - "sources": [], - "time_steps": 10 - }, - "flag": { - "autocorrelations": true, - "outerchannels": true, - "rfi_strategy": "HBAdefault" - }, - "storagemanager": "dysco" - }, - "specifications_template": { - "name": "preprocessing pipeline", - "version": 8 - } - }, - "Calibrator Pipeline 2": { - "description": "Preprocessing Pipeline for Calibrator Observation 2", - "short_description": "Cal2 3Cdef/PP", + "Calibrator Pipeline": { + "description": "Preprocessing Pipeline for Calibrator Observation", + "short_description": "c17 oOOO.O 3Cabc", "specifications_doc": { "average": { - "frequency_steps": 4, - "time_steps": 1 - }, - "cluster_resources": { - "cores_per_task": 2, - "parallel_tasks": 61, - "where": { - "cluster": "CEP4", - "partition": "cpu" - } + "frequency_steps": 8, + "time_steps": 4 }, "demix": { "frequency_steps": 64, "ignore_target": false, "sources": [], - "time_steps": 10 + "time_steps": 8 }, "flag": { "autocorrelations": true, "outerchannels": true, - "rfi_strategy": "HBAdefault" + "rfi_strategy": "LBAdefault" }, "storagemanager": "dysco" }, @@ -10639,89 +37838,13 @@ "version": 7 } }, - "Ingest": { - "description": "Ingest all preprocessed dataproducts", - "specifications_doc": {}, - "specifications_template": { - "name": "ingest", - "version": 7 - } - }, - "Pipeline target1": { - "description": "Preprocessing Pipeline for Target Observation target1, SAP000, 120-168 MHz, 1s, 16ch/sb", - "short_description": "Paaa+01/TP", - "specifications_doc": { - "average": { - "frequency_steps": 4, - "time_steps": 1 - }, - "cluster_resources": { - "cores_per_task": 2, - "parallel_tasks": 61, - "where": { - "cluster": "CEP4", - "partition": "cpu" - } - }, - "demix": { - "frequency_steps": 64, - "ignore_target": false, - "sources": [], - "time_steps": 10 - }, - "flag": { - "autocorrelations": true, - "outerchannels": true, - "rfi_strategy": "HBAdefault" - }, - "storagemanager": "dysco" - }, - "specifications_template": { - "name": "preprocessing pipeline", - "version": 8 - } - }, - "Pipeline target2": { - "description": "Preprocessing Pipeline for Target Observation target2, SAP001, 120-168 MHz, 1s, 16ch/sb", - "short_description": "Paaa+02/TP", - "specifications_doc": { - "average": { - "frequency_steps": 4, - "time_steps": 1 - }, - "cluster_resources": { - "cores_per_task": 2, - "parallel_tasks": 61, - "where": { - "cluster": "CEP4", - "partition": "cpu" - } - }, - "demix": { - "frequency_steps": 64, - "ignore_target": false, - "sources": [], - "time_steps": 10 - }, - "flag": { - "autocorrelations": true, - "outerchannels": true, - "rfi_strategy": "HBAdefault" - }, - "storagemanager": "dysco" - }, - "specifications_template": { - "name": "preprocessing pipeline", - "version": 8 - } - }, - "Target Observation": { - "description": "Target Observation for LoTSS scheduling unit. HBA_DUAL_INNER, 120-168 MHz, 1s, 64ch/sb ", - "short_description": "Paaa+01 & Paaa+02", + "Combined Observation": { + "description": "Combined parallel Calibrator & Target Observation for LBA with 3 target beams", + "short_description": "OOO.O Paaa+01 Paaa+02 Paaa+03", "specifications_doc": { "QA": { "file_conversion": { - "enabled": false, + "enabled": true, "nr_of_subbands": -1, "nr_of_timestamps": 256 }, @@ -10729,7 +37852,17 @@ "plots": { "autocorrelation": true, "crosscorrelation": true, - "enabled": false + "enabled": true + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cabc" } }, "correlator": { @@ -10737,7 +37870,7 @@ "integration_time": 1, "storage_cluster": "CEP4" }, - "duration": 28800, + "duration": 120, "station_configuration": { "SAPs": [ { @@ -10745,115 +37878,143 @@ "angle1": 0.6624317181687094, "angle2": 1.5579526427549426, "direction_type": "J2000", - "target": "Paaa+01" + "target": "Paaa+01" + }, + "name": "target1", + "subbands": [ + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+02" }, - "name": "sap1", + "name": "target2", "subbands": [ - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 182, - 183, - 184, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 212, - 213, - 215, - 216, 217, 218, 219, @@ -10878,6 +38039,7 @@ 238, 239, 240, + 241, 242, 243, 244, @@ -10892,6 +38054,7 @@ 253, 254, 255, + 256, 257, 258, 259, @@ -10909,6 +38072,7 @@ 271, 272, 273, + 274, 275, 276, 277, @@ -10935,6 +38099,7 @@ 298, 299, 300, + 301, 302, 303, 304, @@ -10962,6 +38127,7 @@ 326, 327, 328, + 329, 330, 331, 332, @@ -10970,28 +38136,7 @@ 335, 336, 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 349, - 364, - 372, - 380, - 388, - 396, - 404, - 413, - 421, - 430, - 438, - 447 + 338 ] }, { @@ -10999,115 +38144,10 @@ "angle1": 0.6624317181687094, "angle2": 1.5579526427549426, "direction_type": "J2000", - "target": "Paaa+02" + "target": "Paaa+03" }, - "name": "sap2", + "name": "target3", "subbands": [ - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 182, - 183, - 184, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 212, - 213, - 215, - 216, 217, 218, 219, @@ -11132,6 +38172,7 @@ 238, 239, 240, + 241, 242, 243, 244, @@ -11146,6 +38187,7 @@ 253, 254, 255, + 256, 257, 258, 259, @@ -11163,6 +38205,7 @@ 271, 272, 273, + 274, 275, 276, 277, @@ -11189,6 +38232,7 @@ 298, 299, 300, + 301, 302, 303, 304, @@ -11216,6 +38260,7 @@ 326, 327, 328, + 329, 330, 331, 332, @@ -11224,33 +38269,12 @@ 335, 336, 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 349, - 364, - 372, - 380, - 388, - 396, - 404, - 413, - 421, - 430, - 438, - 447 + 338 ] } ], - "antenna_set": "HBA_DUAL_INNER", - "filter": "HBA_110_190", + "antenna_set": "LBA_SPARSE_EVEN", + "filter": "LBA_30_90", "station_groups": [ { "max_nr_missing": 4, @@ -11295,55 +38319,123 @@ ] }, { - "max_nr_missing": 2, + "max_nr_missing": 1, "stations": [ - "DE601", - "DE602", - "DE603", - "DE604", - "DE605", - "DE609", - "FR606", - "SE607", - "UK608", - "PL610", - "PL611", - "PL612", - "IE613", - "LV614" + "RS508", + "RS509" ] }, { - "max_nr_missing": 1, + "max_nr_missing": 0, "stations": [ - "DE601", - "DE605" + "RS310", + "RS210" ] } - ], - "tile_beam": { - "angle1": 0.6624317181687094, - "angle2": 1.5579526427549426, - "direction_type": "J2000", - "target": "Paaa+01Paaa+02REF" - } + ] } }, "specifications_template": { - "name": "target observation", + "name": "parallel calibrator target observation", + "version": 9 + } + }, + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Pipeline target1": { + "description": "Preprocessing Pipeline for Target Observation target1", + "short_description": "c17 oOOO.O Paaa+01", + "specifications_doc": { + "average": { + "frequency_steps": 8, + "time_steps": 4 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target2": { + "description": "Preprocessing Pipeline for Target Observation target2", + "short_description": "c17 oOOO.O Paaa+02", + "specifications_doc": { + "average": { + "frequency_steps": 8, + "time_steps": 4 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target3": { + "description": "Preprocessing Pipeline for Target Observation target3", + "short_description": "c17 oOOO.O Paaa+03", + "specifications_doc": { + "average": { + "frequency_steps": 8, + "time_steps": 4 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", "version": 8 } } } }, - "version": 14, - "id": 10, - "state_value": "active", + "version": 30, + "id": 38, + "state_value": "legacy", "purpose_value": "production" }, { - "description": "LBA Imaging Observing Strategy using 1 Beam and a parallel Calibrator Beam with a preprocessing pipeline for each.", - "name": "IM LBA - 1 Beam", + "description": "LBA Imaging Observing Strategy using 3 Beams and a parallel Calibrator Beam with a preprocessing pipeline for each, used for the LOFAR LBA High Survey and LBA Co-observing.", + "name": "IM LBA Survey - 3 Beams", "purpose": "production", "scheduling_unit_template": { "name": "scheduling unit", @@ -11351,7 +38443,7 @@ }, "state": "active", "template": { - "$schema": "http://localhost:3000/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", "parameters": [ { "name": "Stations", @@ -11366,90 +38458,130 @@ ] }, { - "name": "Duration", + "name": "Duration", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/duration" + ] + }, + { + "name": "Run ADDER QA", + "refs": [ + "#/tasks/Combined Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Combined Observation/specifications_doc/QA/plots/enabled" + ] + }, + { + "name": "Observation description", + "refs": [ + "#/tasks/Combined Observation/short_description" + ] + }, + { + "name": "Pipeline 1 description", + "refs": [ + "#/tasks/Pipeline target1/short_description" + ] + }, + { + "name": "Pipeline 2 description", + "refs": [ + "#/tasks/Pipeline target2/short_description" + ] + }, + { + "name": "Pipeline 3 description", + "refs": [ + "#/tasks/Pipeline target3/short_description" + ] + }, + { + "name": "Pipeline Calibrator description", "refs": [ - "#/tasks/Combined Observation/specifications_doc/duration" + "#/tasks/Calibrator Pipeline/short_description" ] }, { - "name": "Subbands", + "name": "Target Pointing 1", "refs": [ - "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/subbands" + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" ] }, { - "name": "Filter", + "name": "Target Pointing 2", "refs": [ - "#/tasks/Combined Observation/specifications_doc/station_configuration/filter" + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/1/digital_pointing" ] }, { - "name": "Antenna Set", + "name": "Target Pointing 3", "refs": [ - "#/tasks/Combined Observation/specifications_doc/station_configuration/antenna_set" + "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/2/digital_pointing" ] }, { - "name": "Run ADDER QA", + "name": "Calibrator Pointing", "refs": [ - "#/tasks/Combined Observation/specifications_doc/QA/file_conversion/enabled", - "#/tasks/Combined Observation/specifications_doc/QA/plots/enabled" + "#/tasks/Combined Observation/specifications_doc/calibrator/pointing" ] }, { - "name": "Observation description", + "name": "Time averaging steps", "refs": [ - "#/tasks/Combined Observation/short_description" + "#/tasks/Pipeline target1/specifications_doc/average/time_steps", + "#/tasks/Pipeline target2/specifications_doc/average/time_steps", + "#/tasks/Pipeline target3/specifications_doc/average/time_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/time_steps" ] }, { - "name": "Pipeline description", + "name": "Frequency averaging steps", "refs": [ - "#/tasks/Pipeline target/short_description" + "#/tasks/Pipeline target1/specifications_doc/average/frequency_steps", + "#/tasks/Pipeline target2/specifications_doc/average/frequency_steps", + "#/tasks/Pipeline target3/specifications_doc/average/frequency_steps", + "#/tasks/Calibrator Pipeline/specifications_doc/average/frequency_steps" ] }, { - "name": "Pipeline Calibrator description", + "name": "Demix sources Pipeline Target 1", "refs": [ - "#/tasks/Calibrator Pipeline/short_description" + "#/tasks/Pipeline target1/specifications_doc/demix/sources" ] }, { - "name": "Target Pointing", + "name": "Demix ignore target Pipeline Target 1", "refs": [ - "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" + "#/tasks/Pipeline target1/specifications_doc/demix/ignore_target" ] }, { - "name": "Calibrator Pointing", + "name": "Demix sources Pipeline Target 2", "refs": [ - "#/tasks/Combined Observation/specifications_doc/calibrator/pointing" + "#/tasks/Pipeline target2/specifications_doc/demix/sources" ] }, { - "name": "Time averaging steps", + "name": "Demix ignore target Pipeline Target 2", "refs": [ - "#/tasks/Pipeline target/specifications_doc/average/time_steps", - "#/tasks/Calibrator Pipeline/specifications_doc/average/time_steps" + "#/tasks/Pipeline target2/specifications_doc/demix/ignore_target" ] }, { - "name": "Frequency averaging steps", + "name": "Demix sources Pipeline Target 3", "refs": [ - "#/tasks/Pipeline target/specifications_doc/average/frequency_steps", - "#/tasks/Calibrator Pipeline/specifications_doc/average/frequency_steps" + "#/tasks/Pipeline target3/specifications_doc/demix/sources" ] }, { - "name": "Demix Pipeline Target", + "name": "Demix ignore target Pipeline Target 3", "refs": [ - "#/tasks/Pipeline target/specifications_doc/demix" + "#/tasks/Pipeline target3/specifications_doc/demix/ignore_target" ] }, { - "name": "Demix Pipeline Calibrator", + "name": "Demix sources Pipeline Calibrator", "refs": [ - "#/tasks/Calibrator Pipeline/specifications_doc/demix" + "#/tasks/Calibrator Pipeline/specifications_doc/demix/sources" ] } ], @@ -11462,23 +38594,23 @@ "scheduler": "dynamic", "sky": { "min_distance": { - "jupiter": 0.52359877559, + "jupiter": 0.26179938779, "moon": 0.52359877559, "sun": 0.52359877559 }, "min_elevation": { "calibrator": 0.52359877559, - "target": 0.69813170079 + "target": 0.87266462599 }, "transit_offset": { - "from": -7200, - "to": 7200 + "from": -14400, + "to": 14400 } } }, "scheduling_constraints_template": { "name": "constraints", - "version": 8 + "version": 7 }, "task_relations": [ { @@ -11501,11 +38633,11 @@ }, "selection_template": { "name": "SAP", - "version": 7 + "version": 6 } }, { - "consumer": "Pipeline target", + "consumer": "Pipeline target1", "input": { "dataformat": "MeasurementSet", "datatype": "visibilities", @@ -11524,7 +38656,53 @@ }, "selection_template": { "name": "SAP", - "version": 7 + "version": 6 + } + }, + { + "consumer": "Pipeline target2", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target2" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 + } + }, + { + "consumer": "Pipeline target3", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Combined Observation", + "selection_doc": { + "sap": [ + "target3" + ] + }, + "selection_template": { + "name": "SAP", + "version": 6 } }, { @@ -11543,7 +38721,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -11558,11 +38736,49 @@ "datatype": "visibilities", "role": "any" }, - "producer": "Pipeline target", + "producer": "Pipeline target1", "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target3", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 } }, { @@ -11581,7 +38797,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -11596,11 +38812,68 @@ "datatype": "visibilities", "role": "any" }, - "producer": "Pipeline target", + "producer": "Pipeline target1", "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Pipeline target3", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Calibrator Pipeline", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 } } ], @@ -11608,11 +38881,11 @@ "tasks": { "Calibrator Pipeline": { "description": "Preprocessing Pipeline for Calibrator Observation", - "short_description": "oOOO.O 3Cabc", + "short_description": "c17 oOOO.O 3Cabc", "specifications_doc": { "average": { - "frequency_steps": 4, - "time_steps": 2 + "frequency_steps": 8, + "time_steps": 4 }, "demix": { "frequency_steps": 64, @@ -11641,8 +38914,8 @@ } }, "Combined Observation": { - "description": "Combined parallel Calibrator & Target Observation for LBA with 1 target beam", - "short_description": "OOO.O _Target_name_", + "description": "Combined parallel Calibrator & Target Observation for LBA with 3 target beams", + "short_description": "OOO.O Paaa+01 Paaa+02 Paaa+03", "specifications_doc": { "QA": { "file_conversion": { @@ -11680,117 +38953,10 @@ "angle1": 0.6624317181687094, "angle2": 1.5579526427549426, "direction_type": "J2000", - "target": "_Target_name_" + "target": "Paaa+01" }, "name": "target1", "subbands": [ - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, 217, 218, 219, @@ -11912,27 +39078,278 @@ 335, 336, 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353 + 338 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+02" + }, + "name": "target2", + "subbands": [ + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338 + ] + }, + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+03" + }, + "name": "target3", + "subbands": [ + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338 ] } ], "antenna_set": "LBA_SPARSE_EVEN", - "filter": "LBA_10_90", + "filter": "LBA_30_90", "station_groups": [ { "max_nr_missing": 4, @@ -11989,39 +39406,13 @@ "RS310", "RS210" ] - }, - { - "max_nr_missing": 2, - "stations": [ - "DE601", - "DE602", - "DE603", - "DE604", - "DE605", - "DE609", - "FR606", - "SE607", - "UK608", - "PL610", - "PL611", - "PL612", - "IE613", - "LV614" - ] - }, - { - "max_nr_missing": 1, - "stations": [ - "DE601", - "DE605" - ] } ] } }, "specifications_template": { "name": "parallel calibrator target observation", - "version": 9 + "version": 10 } }, "Ingest": { @@ -12032,13 +39423,65 @@ "version": 7 } }, - "Pipeline target": { - "description": "Preprocessing Pipeline for Target Observation target beam", - "short_description": "oOOO.O _Target_name_", + "Pipeline target1": { + "description": "Preprocessing Pipeline for Target Observation target1", + "short_description": "c17 oOOO.O Paaa+01", "specifications_doc": { "average": { - "frequency_steps": 4, - "time_steps": 2 + "frequency_steps": 8, + "time_steps": 4 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target2": { + "description": "Preprocessing Pipeline for Target Observation target2", + "short_description": "c17 oOOO.O Paaa+02", + "specifications_doc": { + "average": { + "frequency_steps": 8, + "time_steps": 4 + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 8 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "LBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target3": { + "description": "Preprocessing Pipeline for Target Observation target3", + "short_description": "c17 oOOO.O Paaa+03", + "specifications_doc": { + "average": { + "frequency_steps": 8, + "time_steps": 4 }, "demix": { "frequency_steps": 64, @@ -12060,14 +39503,14 @@ } } }, - "version": 8, - "id": 11, + "version": 38, + "id": 39, "state_value": "active", "purpose_value": "production" }, { - "description": "LBA Imaging Observing Strategy using 5 Beams and a parallel Calibrator Beam with a preprocessing pipeline for each, used for the LOFAR Decametre Sky Survey. LBA Sparse Even, 14.4-30.1 MHz, 1s, 64ch/sb", - "name": "IM LBA LoDSS - 5 Beams", + "description": "This observation strategy template defines a LoTSS (Co-)observing run for short observations or RT mode with a Target-Calibrator observation chain, plus a preprocessing pipeline for each and ingest of pipeline data only.", + "name": "IM RT HBA LoTSS - 2 Beams", "purpose": "production", "scheduling_unit_template": { "name": "scheduling unit", @@ -12075,12 +39518,12 @@ }, "state": "active", "template": { - "$schema": "http://localhost:3000/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", "parameters": [ { "name": "Stations", "refs": [ - "#/tasks/Combined Observation/specifications_doc/station_configuration/station_groups" + "#/tasks/Target Observation/specifications_doc/station_configuration/station_groups" ] }, { @@ -12090,321 +39533,100 @@ ] }, { - "name": "Duration", - "refs": [ - "#/tasks/Combined Observation/specifications_doc/duration" - ] - }, - { - "name": "Run ADDER QA", - "refs": [ - "#/tasks/Combined Observation/specifications_doc/QA/file_conversion/enabled", - "#/tasks/Combined Observation/specifications_doc/QA/plots/enabled" - ] - }, - { - "name": "Observation description", - "refs": [ - "#/tasks/Combined Observation/short_description" - ] - }, - { - "name": "Pipeline 1 description", - "refs": [ - "#/tasks/Pipeline target1/short_description" - ] - }, - { - "name": "Pipeline 2 description", - "refs": [ - "#/tasks/Pipeline target2/short_description" - ] - }, - { - "name": "Pipeline 3 description", - "refs": [ - "#/tasks/Pipeline target3/short_description" - ] - }, - { - "name": "Pipeline 4 description", + "name": "Target Pointing 1", "refs": [ - "#/tasks/Pipeline target4/short_description" + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" ] }, { - "name": "Pipeline 5 description", + "name": "Target Pointing 2", "refs": [ - "#/tasks/Pipeline target5/short_description" + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/1/digital_pointing" ] }, { - "name": "Pipeline Calibrator description", + "name": "Tile Beam", "refs": [ - "#/tasks/Calibrator Pipeline/short_description" + "#/tasks/Target Observation/specifications_doc/station_configuration/tile_beam" ] }, { - "name": "Target Pointing 1", + "name": "Target Duration", "refs": [ - "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" + "#/tasks/Target Observation/specifications_doc/duration" ] }, { - "name": "Target Pointing 2", + "name": "Observation Description", "refs": [ - "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/1/digital_pointing" + "#/tasks/Target Observation/short_description" ] }, { - "name": "Target Pointing 3", + "name": "Pipeline 1 Description", "refs": [ - "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/2/digital_pointing" + "#/tasks/Pipeline target1/short_description" ] }, { - "name": "Target Pointing 4", + "name": "Pipeline 2 Description", "refs": [ - "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/3/digital_pointing" + "#/tasks/Pipeline target2/short_description" ] }, { - "name": "Target Pointing 5", + "name": "Calibrator Observation Description", "refs": [ - "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/4/digital_pointing" + "#/tasks/Calibrator Observation/short_description" ] }, { - "name": "Calibrator Pointing", + "name": "Calibrator Observation Pointing", "refs": [ - "#/tasks/Combined Observation/specifications_doc/calibrator/pointing" + "#/tasks/Calibrator Observation/specifications_doc/calibrator/pointing" ] }, { - "name": "Time averaging steps", + "name": "Calibrator Pipeline Description", "refs": [ - "#/tasks/Pipeline target1/specifications_doc/average/time_steps", - "#/tasks/Pipeline target2/specifications_doc/average/time_steps", - "#/tasks/Pipeline target3/specifications_doc/average/time_steps", - "#/tasks/Calibrator Pipeline/specifications_doc/average/time_steps" + "#/tasks/Calibrator Pipeline/short_description" ] }, { - "name": "Frequency averaging steps", + "name": "Run Adder", "refs": [ - "#/tasks/Pipeline target1/specifications_doc/average/frequency_steps", - "#/tasks/Pipeline target2/specifications_doc/average/frequency_steps", - "#/tasks/Pipeline target3/specifications_doc/average/frequency_steps", - "#/tasks/Calibrator Pipeline/specifications_doc/average/frequency_steps" + "#/tasks/Target Observation/specifications_doc/QA/plots/enabled", + "#/tasks/Calibrator Observation/specifications_doc/QA/plots/enabled", + "#/tasks/Target Observation/specifications_doc/QA/file_conversion/enabled", + "#/tasks/Calibrator Observation/specifications_doc/QA/file_conversion/enabled" ] } ], "scheduling_constraints_doc": { - "daily": { - "avoid_twilight": false, - "require_day": false, - "require_night": false - }, "scheduler": "dynamic", "sky": { "min_distance": { - "jupiter": 0.52359877559, - "moon": 0.52359877559, - "sun": 0.52359877559 + "jupiter": 0.26179938779, + "moon": 0.5235987755982988, + "sun": 0.5235987755982988 }, "min_elevation": { - "calibrator": 0.52359877559, - "target": 0.87266462599 + "calibrator": 0.5235987755982988, + "target": 0.5235987755982988 }, "transit_offset": { - "from": -14400, - "to": 14400 + "from": -1440, + "to": 1440 } } }, "scheduling_constraints_template": { - "name": "constraints", - "version": 8 - }, - "task_relations": [ - { - "consumer": "Calibrator Pipeline", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" - }, - "producer": "Combined Observation", - "selection_doc": { - "sap": [ - "calibrator" - ] - }, - "selection_template": { - "name": "SAP", - "version": 7 - } - }, - { - "consumer": "Pipeline target1", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" - }, - "producer": "Combined Observation", - "selection_doc": { - "sap": [ - "target1" - ] - }, - "selection_template": { - "name": "SAP", - "version": 7 - } - }, - { - "consumer": "Pipeline target2", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" - }, - "producer": "Combined Observation", - "selection_doc": { - "sap": [ - "target2" - ] - }, - "selection_template": { - "name": "SAP", - "version": 7 - } - }, - { - "consumer": "Pipeline target3", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" - }, - "producer": "Combined Observation", - "selection_doc": { - "sap": [ - "target3" - ] - }, - "selection_template": { - "name": "SAP", - "version": 7 - } - }, - { - "consumer": "Pipeline target4", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" - }, - "producer": "Combined Observation", - "selection_doc": { - "sap": [ - "target4" - ] - }, - "selection_template": { - "name": "SAP", - "version": 7 - } - }, - { - "consumer": "Pipeline target5", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" - }, - "producer": "Combined Observation", - "selection_doc": { - "sap": [ - "target5" - ] - }, - "selection_template": { - "name": "SAP", - "version": 7 - } - }, - { - "consumer": "Ingest", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "producer": "Calibrator Pipeline", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, - { - "consumer": "Ingest", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "producer": "Pipeline target1", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, + "name": "constraints", + "version": 7 + }, + "task_relations": [ { - "consumer": "Ingest", + "consumer": "Calibrator Pipeline", "input": { "dataformat": "MeasurementSet", "datatype": "visibilities", @@ -12413,17 +39635,17 @@ "output": { "dataformat": "MeasurementSet", "datatype": "visibilities", - "role": "any" + "role": "correlator" }, - "producer": "Pipeline target2", + "producer": "Calibrator Observation", "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { - "consumer": "Ingest", + "consumer": "Pipeline target1", "input": { "dataformat": "MeasurementSet", "datatype": "visibilities", @@ -12432,17 +39654,21 @@ "output": { "dataformat": "MeasurementSet", "datatype": "visibilities", - "role": "any" + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": { + "sap": [ + "sap1" + ] }, - "producer": "Pipeline target3", - "selection_doc": {}, "selection_template": { - "name": "all", - "version": 9 + "name": "SAP", + "version": 6 } }, { - "consumer": "Ingest", + "consumer": "Pipeline target2", "input": { "dataformat": "MeasurementSet", "datatype": "visibilities", @@ -12451,13 +39677,17 @@ "output": { "dataformat": "MeasurementSet", "datatype": "visibilities", - "role": "any" + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": { + "sap": [ + "sap2" + ] }, - "producer": "Pipeline target4", - "selection_doc": {}, "selection_template": { - "name": "all", - "version": 9 + "name": "SAP", + "version": 6 } }, { @@ -12472,15 +39702,15 @@ "datatype": "visibilities", "role": "any" }, - "producer": "Pipeline target5", + "producer": "Calibrator Pipeline", "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { - "consumer": "Cleanup", + "consumer": "Ingest", "input": { "dataformat": "MeasurementSet", "datatype": "visibilities", @@ -12489,17 +39719,17 @@ "output": { "dataformat": "MeasurementSet", "datatype": "visibilities", - "role": "correlator" + "role": "any" }, - "producer": "Combined Observation", + "producer": "Pipeline target1", "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { - "consumer": "Cleanup", + "consumer": "Ingest", "input": { "dataformat": "MeasurementSet", "datatype": "visibilities", @@ -12510,11 +39740,11 @@ "datatype": "visibilities", "role": "any" }, - "producer": "Pipeline target1", + "producer": "Pipeline target2", "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -12527,13 +39757,13 @@ "output": { "dataformat": "MeasurementSet", "datatype": "visibilities", - "role": "any" + "role": "correlator" }, - "producer": "Pipeline target2", + "producer": "Target Observation", "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -12546,13 +39776,13 @@ "output": { "dataformat": "MeasurementSet", "datatype": "visibilities", - "role": "any" + "role": "correlator" }, - "producer": "Pipeline target3", + "producer": "Calibrator Observation", "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -12567,11 +39797,11 @@ "datatype": "visibilities", "role": "any" }, - "producer": "Pipeline target4", + "producer": "Pipeline target1", "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -12586,11 +39816,11 @@ "datatype": "visibilities", "role": "any" }, - "producer": "Pipeline target5", + "producer": "Pipeline target2", "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } }, { @@ -12609,23 +39839,64 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 9 + "version": 6 } } ], - "task_scheduling_relations": [], + "task_scheduling_relations": [ + { + "first": "Calibrator Observation", + "placement": "after", + "second": "Target Observation", + "time_offset": 60 + } + ], "tasks": { + "Calibrator Observation": { + "description": "Calibrator Observation. After the Target Observation", + "short_description": "Cal 3Cdef", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "calibrator": { + "autoselect": false, + "name": "calibrator", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "3Cdef" + } + }, + "duration": 600 + }, + "specifications_template": { + "name": "calibrator observation", + "version": 8 + } + }, "Calibrator Pipeline": { - "description": "Preprocessing Pipeline for Calibrator Observation. No demix, Flagging LBA_default, Dysco=enabled", - "short_description": "3Cabc/1.0/CP", + "description": "Preprocessing Pipeline for Calibrator Observation", + "short_description": "Cal 3Cdef/PP", "specifications_doc": { "average": { - "frequency_steps": 1, + "frequency_steps": 4, "time_steps": 1 }, "cluster_resources": { "cores_per_task": 2, - "parallel_tasks": 41, + "parallel_tasks": 61, "where": { "cluster": "CEP4", "partition": "cpu" @@ -12640,7 +39911,7 @@ "flag": { "autocorrelations": true, "outerchannels": true, - "rfi_strategy": "LBAdefault" + "rfi_strategy": "HBAdefault" }, "storagemanager": "dysco" }, @@ -12657,9 +39928,85 @@ "version": 7 } }, - "Combined Observation": { - "description": "Combined parallel Calibrator & Target Observation for LBA with 5 target beams. Dutch stations only, 200 MHz, 10-90 MHz filter", - "short_description": "oXXX Paaa+01 3Cabc", + "Ingest": { + "description": "Ingest all preprocessed dataproducts", + "specifications_doc": {}, + "specifications_template": { + "name": "ingest", + "version": 7 + } + }, + "Pipeline target1": { + "description": "Preprocessing Pipeline for Target Observation target1, SAP000, 120-168 MHz, 1s, 16ch/sb", + "short_description": "Paaa+01/TP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 61, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Pipeline target2": { + "description": "Preprocessing Pipeline for Target Observation target2, SAP001, 120-168 MHz, 1s, 16ch/sb", + "short_description": "Paaa+02/TP", + "specifications_doc": { + "average": { + "frequency_steps": 4, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 61, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } + }, + "demix": { + "frequency_steps": 64, + "ignore_target": false, + "sources": [], + "time_steps": 10 + }, + "flag": { + "autocorrelations": true, + "outerchannels": true, + "rfi_strategy": "HBAdefault" + }, + "storagemanager": "dysco" + }, + "specifications_template": { + "name": "preprocessing pipeline", + "version": 8 + } + }, + "Target Observation": { + "description": "Target Observation for LoTSS scheduling unit. HBA_DUAL_INNER, 120-168 MHz, 1s, 64ch/sb ", + "short_description": "Paaa+01 & Paaa+02", "specifications_doc": { "QA": { "file_conversion": { @@ -12674,22 +40021,12 @@ "enabled": false } }, - "calibrator": { - "autoselect": false, - "name": "calibrator", - "pointing": { - "angle1": 0.6624317181687094, - "angle2": 1.5579526427549426, - "direction_type": "J2000", - "target": "_calibrator_name_" - } - }, "correlator": { "channels_per_subband": 64, "integration_time": 1, "storage_cluster": "CEP4" }, - "duration": 120, + "duration": 28800, "station_configuration": { "SAPs": [ { @@ -12699,130 +40036,8 @@ "direction_type": "J2000", "target": "Paaa+01" }, - "name": "target1", - "subbands": [ - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154 - ] - }, - { - "digital_pointing": { - "angle1": 0.6624317181687094, - "angle2": 1.5579526427549426, - "direction_type": "J2000", - "target": "Paaa+02" - }, - "name": "target2", + "name": "sap1", "subbands": [ - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, 104, 105, 106, @@ -12856,7 +40071,6 @@ 134, 135, 136, - 137, 138, 139, 140, @@ -12873,7 +40087,200 @@ 151, 152, 153, - 154 + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 182, + 183, + 184, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 212, + 213, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 349, + 364, + 372, + 380, + 388, + 396, + 404, + 413, + 421, + 430, + 438, + 447 ] }, { @@ -12881,40 +40288,10 @@ "angle1": 0.6624317181687094, "angle2": 1.5579526427549426, "direction_type": "J2000", - "target": "Paaa+03" + "target": "Paaa+02" }, - "name": "target3", + "name": "sap2", "subbands": [ - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, 104, 105, 106, @@ -12948,7 +40325,6 @@ 134, 135, 136, - 137, 138, 139, 140, @@ -12965,140 +40341,454 @@ 151, 152, 153, - 154 + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 182, + 183, + 184, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 212, + 213, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 349, + 364, + 372, + 380, + 388, + 396, + 404, + 413, + 421, + 430, + 438, + 447 + ] + } + ], + "antenna_set": "HBA_DUAL_INNER", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" ] }, { - "digital_pointing": { - "angle1": 0.6624317181687094, - "angle2": 1.5579526427549426, - "direction_type": "J2000", - "target": "Paaa+04" - }, - "name": "target4", - "subbands": [ - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154 + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" ] }, + { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "Paaa+01Paaa+02REF" + } + } + }, + "specifications_template": { + "name": "target observation", + "version": 9 + } + } + } + }, + "version": 1, + "id": 40, + "state_value": "active", + "purpose_value": "production" + }, + { + "description": "lofar2 test observation - IM HBA 1 beam", + "name": "Lofar2 IM HBA 1 beam", + "purpose": "technical_commissioning", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "development", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Observation Description", + "refs": [ + "#/tasks/Target Observation/short_description" + ] + }, + { + "name": "Target Pointing", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing", + "#/tasks/Target Observation/specifications_doc/station_configuration/tile_beam" + ] + }, + { + "name": "Subbands", + "refs": [ + "#/tasks/Target Observation/specifications_doc/station_configuration/SAPs/0/subbands" + ] + }, + { + "name": "Target Duration", + "refs": [ + "#/tasks/Target Observation/specifications_doc/duration" + ] + }, + { + "name": "Run Adder", + "refs": [ + "#/tasks/Target Observation/specifications_doc/QA/plots/enabled", + "#/tasks/Target Observation/specifications_doc/QA/file_conversion/enabled" + ] + } + ], + "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, + "location": "center", + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0, + "moon": 0, + "sun": 0 + }, + "min_elevation": { + "calibrator": 0.05235987755982988, + "target": 0.05235987755982988 + }, + "reference_pointing": { + "enabled": false + }, + "transit_offset": { + "from": -43200, + "to": 43200 + } + }, + "time": { + "between": [], + "not_between": [] + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "Target Observation", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 6 + } + } + ], + "task_scheduling_relations": [], + "tasks": { + "Cleanup": { + "description": "Clean up all dataproducts from disk after ingest", + "short_description": "", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 7 + } + }, + "Target Observation": { + "description": "Target Observation", + "short_description": "_Target_Name_", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "correlator": { + "channels_per_subband": 64, + "integration_time": 1, + "storage_cluster": "CEP4", + "topocentric_frequency_correction": false + }, + "duration": 60, + "station_configuration": { + "SAPs": [ { "digital_pointing": { - "angle1": 0.6624317181687094, + "angle1": 3.280425596160204, "angle2": 1.5579526427549426, "direction_type": "J2000", - "target": "Paaa+05" + "target": "target1" }, - "name": "target5", + "name": "target", "subbands": [ - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, 104, 105, 106, @@ -13132,7 +40822,6 @@ 134, 135, 136, - 137, 138, 139, 140, @@ -13149,773 +40838,4925 @@ 151, 152, 153, - 154 + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 182, + 183, + 184, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 212, + 213, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 349, + 364, + 372, + 380, + 388, + 396, + 404, + 413, + 421, + 430, + 438, + 447 ] } ], - "antenna_set": "LBA_SPARSE_EVEN", - "filter": "LBA_10_90", + "antenna_set": "HBA_ZERO", + "filter": "HBA_110_190", "station_groups": [ - { - "max_nr_missing": 4, - "stations": [ - "CS002", - "CS003", - "CS004", - "CS005", - "CS006", - "CS007", - "CS011", - "CS013", - "CS017", - "CS021", - "CS024", - "CS026", - "CS028", - "CS030", - "CS031", - "CS032", - "CS101", - "CS103", - "CS201", - "CS301", - "CS302", - "CS401", - "CS501", - "RS106", - "RS205", - "RS208", - "RS210", - "RS305", - "RS306", - "RS307", - "RS310", - "RS406", - "RS407", - "RS409", - "RS503", - "RS508", - "RS509" - ] - }, - { - "max_nr_missing": 1, - "stations": [ - "RS508", - "RS509" - ] - }, { "max_nr_missing": 0, "stations": [ - "RS310", - "RS210" + "CS001" ] } - ] + ], + "tile_beam": { + "angle1": 3.280425596160204, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "target1" + } } }, - "specifications_template": { - "name": "parallel calibrator target observation", - "version": 9 + "specifications_template": { + "name": "target observation", + "version": 9 + } + } + } + }, + "version": 1, + "id": 41, + "state_value": "development", + "purpose_value": "technical_commissioning" + }, + { + "description": "Solar observing strategy. Imaging + Beamformed observation on the Sun and a calibrator with 127 tied-array beams and a preprocessing pipeline for each SAP. In parallel single station BF spectra in LBA and HBA and 4 consecutive FE observations.", + "name": "Solar Campaign", + "purpose": "technical_commissioning", + "scheduling_unit_template": { + "name": "scheduling unit", + "version": 8 + }, + "state": "legacy", + "template": { + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", + "parameters": [ + { + "name": "Stations - BF 1 station HBA", + "refs": [ + "#/tasks/BF 1 station HBA/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Stations - BF 1 station LBA", + "refs": [ + "#/tasks/BF 1 station LBA/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Stations - FE (1..4)", + "refs": [ + "#/tasks/FE 1/specifications_doc/station_configuration/station_groups", + "#/tasks/FE 2/specifications_doc/station_configuration/station_groups", + "#/tasks/FE 3/specifications_doc/station_configuration/station_groups", + "#/tasks/FE 4/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Stations - IM+BF", + "refs": [ + "#/tasks/IM+BF/specifications_doc/station_configuration/station_groups" + ] + }, + { + "name": "Scheduling Constraints", + "refs": [ + "#/scheduling_constraints_doc" + ] + }, + { + "name": "Duration (IM+BF, Sun LBA, Sun HBA)", + "refs": [ + "#/tasks/IM+BF/specifications_doc/duration", + "#/tasks/BF 1 station LBA/specifications_doc/duration", + "#/tasks/BF 1 station HBA/specifications_doc/duration" + ] + }, + { + "name": "Description IM+BF", + "refs": [ + "#/tasks/IM+BF/short_description" + ] + }, + { + "name": "Description Preprecessing Sun", + "refs": [ + "#/tasks/Preprocessing of Target/short_description" + ] + }, + { + "name": "Description Preprecessing Calibrator", + "refs": [ + "#/tasks/Preprocessing of Calibrator/short_description" + ] + }, + { + "name": "Description LBA Sun Spectrum", + "refs": [ + "#/tasks/BF 1 station LBA/short_description" + ] + }, + { + "name": "Description HBA Sun Spectrum", + "refs": [ + "#/tasks/BF 1 station HBA/short_description" + ] + }, + { + "name": "Pointing Sun J2000 (IM+BF)", + "refs": [ + "#/tasks/IM+BF/specifications_doc/station_configuration/SAPs/0/digital_pointing" + ] + }, + { + "name": "Pointing Calibrator (IM+BF)", + "refs": [ + "#/tasks/IM+BF/specifications_doc/calibrator/pointing" + ] + }, + { + "name": "Description FE1", + "refs": [ + "#/tasks/FE 1/short_description" + ] + }, + { + "name": "Duration FE1", + "refs": [ + "#/tasks/FE 1/specifications_doc/duration" + ] + }, + { + "name": "Pointing FE1", + "refs": [ + "#/tasks/FE 1/specifications_doc/station_configuration/SAPs/0/digital_pointing", + "#/tasks/FE 1/specifications_doc/station_configuration/tile_beam" + ] + }, + { + "name": "Description FE2", + "refs": [ + "#/tasks/FE 2/short_description" + ] + }, + { + "name": "Duration FE2", + "refs": [ + "#/tasks/FE 2/specifications_doc/duration" + ] + }, + { + "name": "Pointing FE2", + "refs": [ + "#/tasks/FE 2/specifications_doc/station_configuration/SAPs/0/digital_pointing", + "#/tasks/FE 2/specifications_doc/station_configuration/tile_beam" + ] + }, + { + "name": "Description FE3", + "refs": [ + "#/tasks/FE 3/short_description" + ] + }, + { + "name": "Duration FE3", + "refs": [ + "#/tasks/FE 3/specifications_doc/duration" + ] + }, + { + "name": "Pointing FE3", + "refs": [ + "#/tasks/FE 3/specifications_doc/station_configuration/SAPs/0/digital_pointing", + "#/tasks/FE 3/specifications_doc/station_configuration/tile_beam" + ] + }, + { + "name": "Description FE4", + "refs": [ + "#/tasks/FE 4/short_description" + ] + }, + { + "name": "Duration FE4", + "refs": [ + "#/tasks/FE 4/specifications_doc/duration" + ] + }, + { + "name": "Pointing FE4", + "refs": [ + "#/tasks/FE 4/specifications_doc/station_configuration/SAPs/0/digital_pointing", + "#/tasks/FE 4/specifications_doc/station_configuration/tile_beam" + ] + } + ], + "scheduling_constraints_doc": { + "daily": { + "avoid_twilight": false, + "require_day": false, + "require_night": false + }, + "scheduler": "dynamic", + "sky": { + "min_distance": { + "jupiter": 0, + "moon": 0, + "sun": 0 + }, + "min_elevation": { + "calibrator": 0.1745329252, + "target": 0.1745329252 + }, + "transit_offset": { + "from": -43200, + "to": 43200 } }, - "Ingest": { - "description": "Ingest all preprocessed dataproducts", - "specifications_doc": {}, - "specifications_template": { - "name": "ingest", - "version": 7 + "time": { + "between": [], + "not_between": [] + } + }, + "scheduling_constraints_template": { + "name": "constraints", + "version": 7 + }, + "task_relations": [ + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "any" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "BF 1 station HBA", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 4 } }, - "Pipeline target1": { - "description": "Preprocessing Pipeline for Target Observation target1. No demix, Flagging LBA_default, Dysco=enabled", - "short_description": "Paaa+01/1.0/TP", - "specifications_doc": { - "average": { - "frequency_steps": 1, - "time_steps": 1 - }, - "cluster_resources": { - "cores_per_task": 2, - "parallel_tasks": 41, - "where": { - "cluster": "CEP4", - "partition": "cpu" - } - }, - "demix": { - "frequency_steps": 64, - "ignore_target": false, - "sources": [], - "time_steps": 10 - }, - "flag": { - "autocorrelations": true, - "outerchannels": true, - "rfi_strategy": "LBAdefault" - }, - "storagemanager": "dysco" + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "any" }, - "specifications_template": { - "name": "preprocessing pipeline", - "version": 8 + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "BF 1 station LBA", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 4 } }, - "Pipeline target2": { - "description": "Preprocessing Pipeline for Target Observation target2. No demix, Flagging LBA_default, Dysco=enabled", - "short_description": "Paaa+02/1.1/TP", - "specifications_doc": { - "average": { - "frequency_steps": 1, - "time_steps": 1 - }, - "cluster_resources": { - "cores_per_task": 2, - "parallel_tasks": 41, - "where": { - "cluster": "CEP4", - "partition": "cpu" - } - }, - "demix": { - "frequency_steps": 64, - "ignore_target": false, - "sources": [], - "time_steps": 10 - }, - "flag": { - "autocorrelations": true, - "outerchannels": true, - "rfi_strategy": "LBAdefault" - }, - "storagemanager": "dysco" + { + "consumer": "Preprocessing of Calibrator", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" }, - "specifications_template": { - "name": "preprocessing pipeline", - "version": 8 + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "IM+BF", + "selection_doc": { + "sap": [ + "calibrator" + ] + }, + "selection_template": { + "name": "SAP", + "version": 4 } }, - "Pipeline target3": { - "description": "Preprocessing Pipeline for Target Observation target3. No demix, Flagging LBA_default, Dysco=enabled", - "short_description": "Paaa+03/1.2/TP", - "specifications_doc": { - "average": { - "frequency_steps": 1, - "time_steps": 1 - }, - "cluster_resources": { - "cores_per_task": 2, - "parallel_tasks": 41, - "where": { - "cluster": "CEP4", - "partition": "cpu" - } - }, - "demix": { - "frequency_steps": 64, - "ignore_target": false, - "sources": [], - "time_steps": 10 - }, - "flag": { - "autocorrelations": true, - "outerchannels": true, - "rfi_strategy": "LBAdefault" - }, - "storagemanager": "dysco" + { + "consumer": "Preprocessing of Target", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" }, - "specifications_template": { - "name": "preprocessing pipeline", - "version": 8 + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "IM+BF", + "selection_doc": { + "sap": [ + "IMBF_Sun" + ] + }, + "selection_template": { + "name": "SAP", + "version": 4 } }, - "Pipeline target4": { - "description": "Preprocessing Pipeline for Target Observation target4. No demix, Flagging LBA_default, Dysco=enabled", - "short_description": "Paaa+04/1.3/TP", - "specifications_doc": { - "average": { - "frequency_steps": 1, - "time_steps": 1 - }, - "cluster_resources": { - "cores_per_task": 2, - "parallel_tasks": 41, - "where": { - "cluster": "CEP4", - "partition": "cpu" - } - }, - "demix": { - "frequency_steps": 64, - "ignore_target": false, - "sources": [], - "time_steps": 10 - }, - "flag": { - "autocorrelations": true, - "outerchannels": true, - "rfi_strategy": "LBAdefault" - }, - "storagemanager": "dysco" + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "any" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "FE 1", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 4 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "any" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "FE 2", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 4 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "any" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "FE 3", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 4 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "any" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "FE 4", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 4 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "correlator" + }, + "producer": "IM+BF", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 4 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "any" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "IM+BF", + "selection_doc": { + "sap": [ + "IMBF_Sun" + ] + }, + "selection_template": { + "name": "SAP", + "version": 4 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Preprocessing of Calibrator", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 4 + } + }, + { + "consumer": "Cleanup", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Preprocessing of Target", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 4 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Preprocessing of Calibrator", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 4 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "output": { + "dataformat": "MeasurementSet", + "datatype": "visibilities", + "role": "any" + }, + "producer": "Preprocessing of Target", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 4 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "IM+BF", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 4 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "producer": "BF 1 station HBA", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 4 + } + }, + { + "consumer": "Ingest", + "input": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" + }, + "output": { + "dataformat": "Beamformed", + "datatype": "time series", + "role": "beamformer" }, - "specifications_template": { - "name": "preprocessing pipeline", - "version": 8 + "producer": "BF 1 station LBA", + "selection_doc": {}, + "selection_template": { + "name": "all", + "version": 4 } + } + ], + "task_scheduling_relations": [ + { + "first": "FE 1", + "placement": "before", + "second": "FE 2", + "time_offset": 60 }, - "Pipeline target5": { - "description": "Preprocessing Pipeline for Target Observation target5. No demix, Flagging LBA_default, Dysco=enabled", - "short_description": "Paaa+05/1.4/TP", + { + "first": "FE 2", + "placement": "before", + "second": "FE 3", + "time_offset": 60 + }, + { + "first": "FE 3", + "placement": "before", + "second": "FE 4", + "time_offset": 60 + }, + { + "first": "IM+BF", + "placement": "parallel", + "second": "BF 1 station HBA", + "time_offset": 0 + }, + { + "first": "IM+BF", + "placement": "parallel", + "second": "BF 1 station LBA", + "time_offset": 0 + }, + { + "first": "IM+BF", + "placement": "parallel", + "second": "FE 1", + "time_offset": 0 + } + ], + "tasks": { + "BF 1 station HBA": { + "description": "Beamformed observation with a single station in HBA on the Sun, 105-188 MHz, 16 ch/SB, 0.01s", + "short_description": "Sun_spectrum_HBA-202303??-run1", "specifications_doc": { - "average": { - "frequency_steps": 1, - "time_steps": 1 - }, - "cluster_resources": { - "cores_per_task": 2, - "parallel_tasks": 41, - "where": { - "cluster": "CEP4", - "partition": "cpu" - } - }, - "demix": { - "frequency_steps": 64, - "ignore_target": false, - "sources": [], - "time_steps": 10 - }, - "flag": { - "autocorrelations": true, - "outerchannels": true, - "rfi_strategy": "LBAdefault" + "beamformer": { + "pipelines": [ + { + "coherent": { + "SAPs": [ + { + "name": "SAP_Sun", + "subbands": { + "list": [ + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ], + "method": "copy" + }, + "tab_rings": { + "count": 0, + "width": 0.01 + }, + "tabs": [ + { + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "SUN", + "target": "Sun" + }, + "relative": true + } + ] + } + ], + "settings": { + "channels_per_subband": 16, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "IQUV", + "subbands_per_file": 488, + "time_integration_factor": 128 + } + }, + "flys eye": { + "enabled": false, + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "incoherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "name": "CS_Sun", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "RS508" + ] + } + ] + } + ], + "ppf": false }, - "storagemanager": "dysco" - }, - "specifications_template": { - "name": "preprocessing pipeline", - "version": 8 - } - } - } - }, - "version": 45, - "id": 12, - "state_value": "active", - "purpose_value": "production" - }, - { - "description": "LBA Imaging Observing Strategy using 3 Beams and a parallel Calibrator Beam with a preprocessing pipeline for each, used for the LOFAR LBA High Survey and LBA Co-observing.", - "name": "IM LBA Survey - 3 Beams", - "purpose": "production", - "scheduling_unit_template": { - "name": "scheduling unit", - "version": 8 - }, - "state": "active", - "template": { - "$schema": "http://localhost:3000/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", - "parameters": [ - { - "name": "Stations", - "refs": [ - "#/tasks/Combined Observation/specifications_doc/station_configuration/station_groups" - ] - }, - { - "name": "Scheduling Constraints", - "refs": [ - "#/scheduling_constraints_doc" - ] - }, - { - "name": "Duration", - "refs": [ - "#/tasks/Combined Observation/specifications_doc/duration" - ] - }, - { - "name": "Run ADDER QA", - "refs": [ - "#/tasks/Combined Observation/specifications_doc/QA/file_conversion/enabled", - "#/tasks/Combined Observation/specifications_doc/QA/plots/enabled" - ] - }, - { - "name": "Observation description", - "refs": [ - "#/tasks/Combined Observation/short_description" - ] - }, - { - "name": "Pipeline 1 description", - "refs": [ - "#/tasks/Pipeline target1/short_description" - ] - }, - { - "name": "Pipeline 2 description", - "refs": [ - "#/tasks/Pipeline target2/short_description" - ] - }, - { - "name": "Pipeline 3 description", - "refs": [ - "#/tasks/Pipeline target3/short_description" - ] - }, - { - "name": "Pipeline Calibrator description", - "refs": [ - "#/tasks/Calibrator Pipeline/short_description" - ] - }, - { - "name": "Target Pointing 1", - "refs": [ - "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/0/digital_pointing" - ] - }, - { - "name": "Target Pointing 2", - "refs": [ - "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/1/digital_pointing" - ] - }, - { - "name": "Target Pointing 3", - "refs": [ - "#/tasks/Combined Observation/specifications_doc/station_configuration/SAPs/2/digital_pointing" - ] - }, - { - "name": "Calibrator Pointing", - "refs": [ - "#/tasks/Combined Observation/specifications_doc/calibrator/pointing" - ] - }, - { - "name": "Time averaging steps", - "refs": [ - "#/tasks/Pipeline target1/specifications_doc/average/time_steps", - "#/tasks/Pipeline target2/specifications_doc/average/time_steps", - "#/tasks/Pipeline target3/specifications_doc/average/time_steps", - "#/tasks/Calibrator Pipeline/specifications_doc/average/time_steps" - ] - }, - { - "name": "Frequency averaging steps", - "refs": [ - "#/tasks/Pipeline target1/specifications_doc/average/frequency_steps", - "#/tasks/Pipeline target2/specifications_doc/average/frequency_steps", - "#/tasks/Pipeline target3/specifications_doc/average/frequency_steps", - "#/tasks/Calibrator Pipeline/specifications_doc/average/frequency_steps" - ] - }, - { - "name": "Demix sources Pipeline Target 1", - "refs": [ - "#/tasks/Pipeline target1/specifications_doc/demix/sources" - ] - }, - { - "name": "Demix ignore target Pipeline Target 1", - "refs": [ - "#/tasks/Pipeline target1/specifications_doc/demix/ignore_target" - ] - }, - { - "name": "Demix sources Pipeline Target 2", - "refs": [ - "#/tasks/Pipeline target2/specifications_doc/demix/sources" - ] - }, - { - "name": "Demix ignore target Pipeline Target 2", - "refs": [ - "#/tasks/Pipeline target2/specifications_doc/demix/ignore_target" - ] - }, - { - "name": "Demix sources Pipeline Target 3", - "refs": [ - "#/tasks/Pipeline target3/specifications_doc/demix/sources" - ] - }, - { - "name": "Demix ignore target Pipeline Target 3", - "refs": [ - "#/tasks/Pipeline target3/specifications_doc/demix/ignore_target" - ] - }, - { - "name": "Demix sources Pipeline Calibrator", - "refs": [ - "#/tasks/Calibrator Pipeline/specifications_doc/demix/sources" - ] - } - ], - "scheduling_constraints_doc": { - "daily": { - "avoid_twilight": false, - "require_day": false, - "require_night": false - }, - "scheduler": "dynamic", - "sky": { - "min_distance": { - "jupiter": 0.26179938779, - "moon": 0.52359877559, - "sun": 0.52359877559 - }, - "min_elevation": { - "calibrator": 0.52359877559, - "target": 0.87266462599 - }, - "transit_offset": { - "from": -14400, - "to": 14400 - } - } - }, - "scheduling_constraints_template": { - "name": "constraints", - "version": 8 - }, - "task_relations": [ - { - "consumer": "Calibrator Pipeline", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" - }, - "producer": "Combined Observation", - "selection_doc": { - "sap": [ - "calibrator" - ] - }, - "selection_template": { - "name": "SAP", - "version": 7 - } - }, - { - "consumer": "Pipeline target1", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" - }, - "producer": "Combined Observation", - "selection_doc": { - "sap": [ - "target1" - ] - }, - "selection_template": { - "name": "SAP", - "version": 7 - } - }, - { - "consumer": "Pipeline target2", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" - }, - "producer": "Combined Observation", - "selection_doc": { - "sap": [ - "target2" - ] - }, - "selection_template": { - "name": "SAP", - "version": 7 - } - }, - { - "consumer": "Pipeline target3", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" - }, - "producer": "Combined Observation", - "selection_doc": { - "sap": [ - "target3" - ] - }, - "selection_template": { - "name": "SAP", - "version": 7 - } - }, - { - "consumer": "Ingest", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "producer": "Calibrator Pipeline", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, - { - "consumer": "Ingest", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "producer": "Pipeline target1", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, - { - "consumer": "Ingest", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "producer": "Pipeline target2", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - }, - { - "consumer": "Ingest", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" + "duration": 660, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "SUN", + "target": "Sun" + }, + "name": "SAP_Sun", + "subbands": [ + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ] + } + ], + "antenna_set": "HBA_DUAL", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "RS508" + ] + } + ], + "tile_beam": { + "angle1": 0, + "angle2": 0, + "direction_type": "SUN", + "target": "Sun" + } + } }, - "producer": "Pipeline target3", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 + "specifications_template": { + "name": "beamforming observation", + "version": 6 } }, - { - "consumer": "Cleanup", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "correlator" + "BF 1 station LBA": { + "description": "Beamformed observation with a single station LBA on the Sun with a calibrator beam (default CasA), 5-88 MHz, 16 ch/SB, 0.01s", + "short_description": "Sun_spectrum_LBA-202303??-run1", + "specifications_doc": { + "beamformer": { + "pipelines": [ + { + "coherent": { + "SAPs": [ + { + "name": "SAP_Sun", + "subbands": { + "list": [ + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ], + "method": "copy" + }, + "tab_rings": { + "count": 0, + "width": 0.01 + }, + "tabs": [ + { + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "SUN", + "target": "Sun" + }, + "relative": true + } + ] + }, + { + "name": "SAP_Cal", + "subbands": { + "list": [ + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ], + "method": "copy" + }, + "tab_rings": { + "count": 0, + "width": 0.01 + }, + "tabs": [ + { + "pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "J2000", + "target": "Calibrator" + }, + "relative": true + } + ] + } + ], + "settings": { + "channels_per_subband": 16, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "IQUV", + "subbands_per_file": 488, + "time_integration_factor": 128 + } + }, + "flys eye": { + "enabled": false, + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "incoherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "name": "CS_Sun", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "RS210" + ] + } + ] + } + ], + "ppf": false + }, + "duration": 660, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0, + "angle2": 0, + "direction_type": "SUN", + "target": "Sun" + }, + "name": "SAP_Sun", + "subbands": [ + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ] + }, + { + "digital_pointing": { + "angle1": 6.123487680622106, + "angle2": 1.026515399560465, + "direction_type": "J2000", + "target": "CasA" + }, + "name": "SAP_Cal", + "subbands": [ + 54, + 80, + 84, + 88, + 92, + 96, + 100, + 104, + 108, + 112, + 116, + 120, + 124, + 128, + 132, + 136, + 140, + 144, + 148, + 152, + 156, + 160, + 164, + 168, + 172, + 176, + 180, + 184, + 188, + 192, + 196, + 200, + 204, + 208, + 212, + 216, + 220, + 224, + 228, + 232, + 236, + 240, + 244, + 248, + 252, + 256, + 260, + 264, + 268, + 272, + 276, + 280, + 284, + 288, + 292, + 296, + 300, + 304, + 308, + 312, + 316, + 320, + 324, + 328, + 332, + 336, + 340, + 344, + 348, + 352, + 356, + 360, + 364, + 368, + 372, + 376, + 380, + 384, + 388, + 392, + 394, + 396, + 400, + 404, + 408, + 412 + ] + } + ], + "antenna_set": "LBA_OUTER", + "filter": "LBA_10_90", + "station_groups": [ + { + "max_nr_missing": 0, + "stations": [ + "RS210" + ] + } + ], + "tile_beam": { + "angle1": 0, + "angle2": 0, + "direction_type": "SUN", + "target": "Sun" + } + } }, - "producer": "Combined Observation", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 + "specifications_template": { + "name": "beamforming observation", + "version": 6 } }, - { - "consumer": "Cleanup", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "producer": "Pipeline target1", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 + "Cleanup": { + "description": "Cleaning up all output dataproducts for this scheduling unit", + "short_description": "", + "specifications_doc": {}, + "specifications_template": { + "name": "cleanup", + "version": 4 } }, - { - "consumer": "Cleanup", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" + "FE 1": { + "description": "First Fly's Eye observation with International and some Remote stations with conversion to dynspec enabled, 105-188 MHz, 16ch/SB, 0.01s", + "short_description": "IPS FE1", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "dynspec", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "beamformer": { + "pipelines": [ + { + "coherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "flys eye": { + "enabled": true, + "settings": { + "channels_per_subband": 16, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 128 + } + }, + "incoherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "name": "FE", + "station_groups": [ + { + "max_nr_missing": 14, + "stations": [ + "RS310", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + } + ] + } + ], + "ppf": false + }, + "duration": 120, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_target_name_IPS_" + }, + "name": "FE_pointing", + "subbands": [ + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ] + } + ], + "antenna_set": "HBA_DUAL", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 14, + "stations": [ + "RS310", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_target_name_IPS_" + } + } }, - "producer": "Pipeline target2", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 + "specifications_template": { + "name": "beamforming observation", + "version": 6 } }, - { - "consumer": "Cleanup", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" + "FE 2": { + "description": "Second Fly's Eye observation with International and some Remote stations with conversion to dynspec enabled, 105-188 MHz, 16ch/SB, 0.01s", + "short_description": "IPS FE2", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "dynspec", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "beamformer": { + "pipelines": [ + { + "coherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "flys eye": { + "enabled": true, + "settings": { + "channels_per_subband": 16, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 128 + } + }, + "incoherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "name": "FE", + "station_groups": [ + { + "max_nr_missing": 14, + "stations": [ + "RS310", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + } + ] + } + ], + "ppf": false + }, + "duration": 120, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_target_name_IPS_" + }, + "name": "FE_pointing", + "subbands": [ + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ] + } + ], + "antenna_set": "HBA_DUAL", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 14, + "stations": [ + "RS310", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_target_name_IPS_" + } + } }, - "producer": "Pipeline target3", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 + "specifications_template": { + "name": "beamforming observation", + "version": 6 } }, - { - "consumer": "Cleanup", - "input": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "output": { - "dataformat": "MeasurementSet", - "datatype": "visibilities", - "role": "any" - }, - "producer": "Calibrator Pipeline", - "selection_doc": {}, - "selection_template": { - "name": "all", - "version": 9 - } - } - ], - "task_scheduling_relations": [], - "tasks": { - "Calibrator Pipeline": { - "description": "Preprocessing Pipeline for Calibrator Observation", - "short_description": "c17 oOOO.O 3Cabc", + "FE 3": { + "description": "Third Fly's Eye observation with International and some Remote stations with conversion to dynspec enabled, 105-188 MHz, 16ch/SB, 0.01s", + "short_description": "IPS FE3", "specifications_doc": { - "average": { - "frequency_steps": 8, - "time_steps": 4 - }, - "demix": { - "frequency_steps": 64, - "ignore_target": false, - "sources": [], - "time_steps": 8 + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "dynspec", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } }, - "flag": { - "autocorrelations": true, - "outerchannels": true, - "rfi_strategy": "LBAdefault" + "beamformer": { + "pipelines": [ + { + "coherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "flys eye": { + "enabled": true, + "settings": { + "channels_per_subband": 16, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 128 + } + }, + "incoherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "name": "FE", + "station_groups": [ + { + "max_nr_missing": 14, + "stations": [ + "RS310", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + } + ] + } + ], + "ppf": false }, - "storagemanager": "dysco" + "duration": 120, + "station_configuration": { + "SAPs": [ + { + "digital_pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_target_name_IPS_" + }, + "name": "FE_pointing", + "subbands": [ + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ] + } + ], + "antenna_set": "HBA_DUAL", + "filter": "HBA_110_190", + "station_groups": [ + { + "max_nr_missing": 14, + "stations": [ + "RS310", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_target_name_IPS_" + } + } }, "specifications_template": { - "name": "preprocessing pipeline", - "version": 8 - } - }, - "Cleanup": { - "description": "Clean up all dataproducts from disk after ingest", - "specifications_doc": {}, - "specifications_template": { - "name": "cleanup", - "version": 7 + "name": "beamforming observation", + "version": 6 } }, - "Combined Observation": { - "description": "Combined parallel Calibrator & Target Observation for LBA with 3 target beams", - "short_description": "OOO.O Paaa+01 Paaa+02 Paaa+03", + "FE 4": { + "description": "Fourth Fly's Eye observation with International and some Remote stations with conversion to dynspec enabled, 105-188 MHz, 16ch/SB, 0.01s", + "short_description": "IPS FE4", "specifications_doc": { "QA": { "file_conversion": { - "enabled": true, + "enabled": false, "nr_of_subbands": -1, "nr_of_timestamps": 256 }, - "inspection_plots": "msplots", + "inspection_plots": "dynspec", "plots": { "autocorrelation": true, "crosscorrelation": true, - "enabled": true - } - }, - "calibrator": { - "autoselect": false, - "name": "calibrator", - "pointing": { - "angle1": 0.6624317181687094, - "angle2": 1.5579526427549426, - "direction_type": "J2000", - "target": "3Cabc" + "enabled": false } }, - "correlator": { - "channels_per_subband": 64, - "integration_time": 1, - "storage_cluster": "CEP4" + "beamformer": { + "pipelines": [ + { + "coherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "flys eye": { + "enabled": true, + "settings": { + "channels_per_subband": 16, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 128 + } + }, + "incoherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "name": "FE", + "station_groups": [ + { + "max_nr_missing": 14, + "stations": [ + "RS310", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + } + ] + } + ], + "ppf": false }, "duration": 120, "station_configuration": { @@ -13925,10 +45766,173 @@ "angle1": 0.6624317181687094, "angle2": 1.5579526427549426, "direction_type": "J2000", - "target": "Paaa+01" + "target": "_target_name_IPS_" }, - "name": "target1", + "name": "FE_pointing", "subbands": [ + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, 217, 218, 219, @@ -14050,278 +46054,430 @@ 335, 336, 337, - 338 + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 ] - }, + } + ], + "antenna_set": "HBA_DUAL", + "filter": "HBA_110_190", + "station_groups": [ { - "digital_pointing": { - "angle1": 0.6624317181687094, - "angle2": 1.5579526427549426, - "direction_type": "J2000", - "target": "Paaa+02" - }, - "name": "target2", - "subbands": [ - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338 + "max_nr_missing": 14, + "stations": [ + "RS310", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + } + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_target_name_IPS_" + } + } + }, + "specifications_template": { + "name": "beamforming observation", + "version": 6 + } + }, + "IM+BF": { + "description": "Imaging + Beamformed Observation on the Sun with a calibrator beam. LBA_OUTER, 19-80 MHz (sparse), 127 TABs, IM 12.2kHz, 0.17s, BF: 12.2 kHz, 0.01s", + "short_description": "Sun-202303??-run1", + "specifications_doc": { + "QA": { + "file_conversion": { + "enabled": false, + "nr_of_subbands": -1, + "nr_of_timestamps": 256 + }, + "inspection_plots": "msplots", + "plots": { + "autocorrelation": true, + "crosscorrelation": true, + "enabled": false + } + }, + "beamformer": { + "pipelines": [ + { + "coherent": { + "SAPs": [ + { + "name": "IMBF_Sun", + "subbands": { + "list": [ + 96, + 104, + 106, + 110, + 117, + 121, + 126, + 131, + 136, + 141, + 146, + 150, + 156, + 161, + 172, + 178, + 183, + 189, + 194, + 201, + 206, + 211, + 216, + 221, + 232, + 237, + 244, + 249, + 255, + 263, + 269, + 274, + 279, + 283, + 295, + 300, + 302, + 312, + 316, + 320, + 328, + 330, + 333, + 338, + 340, + 347, + 351, + 356, + 360, + 366, + 370, + 376, + 380, + 385, + 389, + 391, + 394, + 400, + 404, + 410 + ], + "method": "copy" + }, + "tab_rings": { + "count": 6, + "width": 0.00174533 + }, + "tabs": [] + } + ], + "settings": { + "channels_per_subband": 16, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "IQUV", + "subbands_per_file": 488, + "time_integration_factor": 128 + } + }, + "flys eye": { + "enabled": false, + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "incoherent": { + "SAPs": [], + "settings": { + "channels_per_subband": 1, + "quantisation": { + "bits": 8, + "enabled": false, + "scale_max": 5, + "scale_min": -5 + }, + "stokes": "I", + "subbands_per_file": 488, + "time_integration_factor": 1 + } + }, + "name": "MultiRings_Beamformer", + "station_groups": [ + { + "max_nr_missing": 4, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS032", + "CS031", + "CS301", + "CS302", + "CS401", + "CS101", + "CS103", + "CS201", + "CS501" + ] + } ] - }, + } + ], + "ppf": false + }, + "calibrator": { + "autoselect": false, + "name": "calibrator", + "pointing": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_calibrator_name_" + } + }, + "correlator": { + "channels_per_subband": 16, + "integration_time": 0.166666, + "storage_cluster": "CEP4", + "topocentric_frequency_correction": false + }, + "duration": 660, + "station_configuration": { + "SAPs": [ { "digital_pointing": { "angle1": 0.6624317181687094, "angle2": 1.5579526427549426, "direction_type": "J2000", - "target": "Paaa+03" + "target": "_target_name_" }, - "name": "target3", + "name": "IMBF_Sun", "subbands": [ - 217, - 218, - 219, - 220, + 96, + 104, + 106, + 110, + 117, + 121, + 126, + 131, + 136, + 141, + 146, + 150, + 156, + 161, + 172, + 178, + 183, + 189, + 194, + 201, + 206, + 211, + 216, 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, 232, - 233, - 234, - 235, - 236, 237, - 238, - 239, - 240, - 241, - 242, - 243, 244, - 245, - 246, - 247, - 248, 249, - 250, - 251, - 252, - 253, - 254, 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, 263, - 264, - 265, - 266, - 267, - 268, 269, - 270, - 271, - 272, - 273, 274, - 275, - 276, - 277, - 278, 279, - 280, - 281, - 282, 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, 295, - 296, - 297, - 298, - 299, 300, - 301, 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, 312, - 313, - 314, - 315, 316, - 317, - 318, - 319, 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, 328, - 329, 330, - 331, - 332, 333, - 334, - 335, - 336, - 337, - 338 + 338, + 340, + 347, + 351, + 356, + 360, + 366, + 370, + 376, + 380, + 385, + 389, + 391, + 394, + 400, + 404, + 410 ] } ], - "antenna_set": "LBA_SPARSE_EVEN", - "filter": "LBA_30_90", + "antenna_set": "LBA_OUTER", + "filter": "LBA_10_90", "station_groups": [ { "max_nr_missing": 4, @@ -14341,7 +46497,6 @@ "CS028", "CS030", "CS031", - "CS032", "CS101", "CS103", "CS201", @@ -14352,133 +46507,112 @@ "RS106", "RS205", "RS208", - "RS210", "RS305", "RS306", "RS307", - "RS310", "RS406", "RS407", "RS409", - "RS503", - "RS508", - "RS509" - ] - }, - { - "max_nr_missing": 1, - "stations": [ - "RS508", - "RS509" - ] - }, - { - "max_nr_missing": 0, - "stations": [ - "RS310", - "RS210" + "RS503" ] } - ] + ], + "tile_beam": { + "angle1": 0.6624317181687094, + "angle2": 1.5579526427549426, + "direction_type": "J2000", + "target": "_target_name_" + } } }, "specifications_template": { - "name": "parallel calibrator target observation", - "version": 9 + "name": "parallel calibrator target and beamforming observation", + "version": 5 } }, "Ingest": { - "description": "Ingest all preprocessed dataproducts", + "description": "", + "short_description": "", "specifications_doc": {}, "specifications_template": { "name": "ingest", - "version": 7 + "version": 4 } }, - "Pipeline target1": { - "description": "Preprocessing Pipeline for Target Observation target1", - "short_description": "c17 oOOO.O Paaa+01", + "Preprocessing of Calibrator": { + "description": "Preprocessing of Calibrator for beamformed + imaging observation. 195kHz, 0.17s.", + "short_description": "_Cal_/1.0/CPT", "specifications_doc": { "average": { - "frequency_steps": 8, - "time_steps": 4 - }, - "demix": { - "frequency_steps": 64, - "ignore_target": false, - "sources": [], - "time_steps": 8 - }, - "flag": { - "autocorrelations": true, - "outerchannels": true, - "rfi_strategy": "LBAdefault" + "frequency_steps": 16, + "time_steps": 1 }, - "storagemanager": "dysco" - }, - "specifications_template": { - "name": "preprocessing pipeline", - "version": 8 - } - }, - "Pipeline target2": { - "description": "Preprocessing Pipeline for Target Observation target2", - "short_description": "c17 oOOO.O Paaa+02", - "specifications_doc": { - "average": { - "frequency_steps": 8, - "time_steps": 4 + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 110, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } }, "demix": { - "frequency_steps": 64, + "frequency_steps": 16, "ignore_target": false, "sources": [], - "time_steps": 8 + "time_steps": 10 }, "flag": { - "autocorrelations": true, + "autocorrelations": false, "outerchannels": true, - "rfi_strategy": "LBAdefault" + "rfi_strategy": "none" }, "storagemanager": "dysco" }, "specifications_template": { "name": "preprocessing pipeline", - "version": 8 + "version": 5 } }, - "Pipeline target3": { - "description": "Preprocessing Pipeline for Target Observation target3", - "short_description": "c17 oOOO.O Paaa+03", + "Preprocessing of Target": { + "description": "Preprocessing of Target Sun for beamformed + imaging observation. No flagging. 195kHz, 0.17s", + "short_description": "Sun/1.0/TP", "specifications_doc": { "average": { - "frequency_steps": 8, - "time_steps": 4 + "frequency_steps": 16, + "time_steps": 1 + }, + "cluster_resources": { + "cores_per_task": 2, + "parallel_tasks": 110, + "where": { + "cluster": "CEP4", + "partition": "cpu" + } }, "demix": { - "frequency_steps": 64, + "frequency_steps": 16, "ignore_target": false, "sources": [], - "time_steps": 8 + "time_steps": 10 }, "flag": { - "autocorrelations": true, + "autocorrelations": false, "outerchannels": true, - "rfi_strategy": "LBAdefault" + "rfi_strategy": "none" }, "storagemanager": "dysco" }, "specifications_template": { "name": "preprocessing pipeline", - "version": 8 + "version": 5 } } } }, - "version": 28, - "id": 13, - "state_value": "active", - "purpose_value": "production" + "version": 14, + "id": 42, + "state_value": "legacy", + "purpose_value": "technical_commissioning" }, { "description": "Solar observing strategy. Imaging + Beamformed observation on the Sun and a calibrator with 127 tied-array beams and a preprocessing pipeline for each SAP. In parallel single station BF spectra in LBA and HBA and 4 consecutive FE observations.", @@ -14486,11 +46620,11 @@ "purpose": "technical_commissioning", "scheduling_unit_template": { "name": "scheduling unit", - "version": 5 + "version": 8 }, "state": "active", "template": { - "$schema": "http://localhost:3000/schemas/schedulingunittemplate/scheduling%20unit/5/ref_resolved", + "$schema": "https://tmss.lofar.eu/api/schemas/schedulingunittemplate/scheduling%20unit/8/ref_resolved", "parameters": [ { "name": "Stations - BF 1 station HBA", @@ -14681,7 +46815,7 @@ }, "scheduling_constraints_template": { "name": "constraints", - "version": 8 + "version": 7 }, "task_relations": [ { @@ -14700,7 +46834,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 4 + "version": 6 } }, { @@ -14719,7 +46853,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 4 + "version": 6 } }, { @@ -14742,7 +46876,7 @@ }, "selection_template": { "name": "SAP", - "version": 4 + "version": 6 } }, { @@ -14765,7 +46899,7 @@ }, "selection_template": { "name": "SAP", - "version": 4 + "version": 6 } }, { @@ -14784,7 +46918,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 4 + "version": 6 } }, { @@ -14803,7 +46937,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 4 + "version": 6 } }, { @@ -14822,7 +46956,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 4 + "version": 6 } }, { @@ -14841,7 +46975,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 4 + "version": 6 } }, { @@ -14860,7 +46994,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 4 + "version": 6 } }, { @@ -14883,7 +47017,7 @@ }, "selection_template": { "name": "SAP", - "version": 4 + "version": 6 } }, { @@ -14902,7 +47036,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 4 + "version": 6 } }, { @@ -14921,7 +47055,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 4 + "version": 6 } }, { @@ -14940,7 +47074,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 4 + "version": 6 } }, { @@ -14959,7 +47093,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 4 + "version": 6 } }, { @@ -14978,7 +47112,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 4 + "version": 6 } }, { @@ -14997,7 +47131,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 4 + "version": 6 } }, { @@ -15016,7 +47150,7 @@ "selection_doc": {}, "selection_template": { "name": "all", - "version": 4 + "version": 6 } } ], @@ -15042,20 +47176,17 @@ { "first": "IM+BF", "placement": "parallel", - "second": "BF 1 station HBA", - "time_offset": 0 + "second": "BF 1 station HBA" }, { "first": "IM+BF", "placement": "parallel", - "second": "BF 1 station LBA", - "time_offset": 0 + "second": "BF 1 station LBA" }, { "first": "IM+BF", "placement": "parallel", - "second": "FE 1", - "time_offset": 0 + "second": "FE 1" } ], "tasks": { @@ -15983,7 +48114,7 @@ }, "specifications_template": { "name": "beamforming observation", - "version": 6 + "version": 8 } }, "BF 1 station LBA": { @@ -17430,7 +49561,7 @@ }, "specifications_template": { "name": "beamforming observation", - "version": 6 + "version": 8 } }, "Cleanup": { @@ -17439,11 +49570,11 @@ "specifications_doc": {}, "specifications_template": { "name": "cleanup", - "version": 4 + "version": 7 } }, "FE 1": { - "description": "First Fly's Eye observation with International and some Remote stations with conversion to dynspec enabled, 105-188 MHz, 64ch/SB, 0.04s", + "description": "First Fly's Eye observation with International and some Remote stations with conversion to dynspec enabled, 105-188 MHz, 16ch/SB, 0.01s", "short_description": "IPS FE1", "specifications_doc": { "QA": { @@ -17480,7 +49611,7 @@ "flys eye": { "enabled": true, "settings": { - "channels_per_subband": 64, + "channels_per_subband": 16, "quantisation": { "bits": 8, "enabled": false, @@ -17985,11 +50116,11 @@ }, "specifications_template": { "name": "beamforming observation", - "version": 6 + "version": 8 } }, "FE 2": { - "description": "Second Fly's Eye observation with International and some Remote stations with conversion to dynspec enabled, 105-188 MHz, 64ch/SB, 0.04s", + "description": "Second Fly's Eye observation with International and some Remote stations with conversion to dynspec enabled, 105-188 MHz, 16ch/SB, 0.01s", "short_description": "IPS FE2", "specifications_doc": { "QA": { @@ -18026,7 +50157,7 @@ "flys eye": { "enabled": true, "settings": { - "channels_per_subband": 64, + "channels_per_subband": 16, "quantisation": { "bits": 8, "enabled": false, @@ -18531,11 +50662,11 @@ }, "specifications_template": { "name": "beamforming observation", - "version": 6 + "version": 8 } }, "FE 3": { - "description": "Third Fly's Eye observation with International and some Remote stations with conversion to dynspec enabled, 105-188 MHz, 64ch/SB, 0.04s", + "description": "Third Fly's Eye observation with International and some Remote stations with conversion to dynspec enabled, 105-188 MHz, 16ch/SB, 0.01s", "short_description": "IPS FE3", "specifications_doc": { "QA": { @@ -18572,7 +50703,7 @@ "flys eye": { "enabled": true, "settings": { - "channels_per_subband": 64, + "channels_per_subband": 16, "quantisation": { "bits": 8, "enabled": false, @@ -19077,11 +51208,11 @@ }, "specifications_template": { "name": "beamforming observation", - "version": 6 + "version": 8 } }, "FE 4": { - "description": "Fourth Fly's Eye observation with International and some Remote stations with conversion to dynspec enabled, 105-188 MHz, 64ch/SB, 0.04s", + "description": "Fourth Fly's Eye observation with International and some Remote stations with conversion to dynspec enabled, 105-188 MHz, 16ch/SB, 0.01s", "short_description": "IPS FE4", "specifications_doc": { "QA": { @@ -19118,7 +51249,7 @@ "flys eye": { "enabled": true, "settings": { - "channels_per_subband": 64, + "channels_per_subband": 16, "quantisation": { "bits": 8, "enabled": false, @@ -19623,7 +51754,7 @@ }, "specifications_template": { "name": "beamforming observation", - "version": 6 + "version": 8 } }, "IM+BF": { @@ -19951,7 +52082,7 @@ "specifications_doc": {}, "specifications_template": { "name": "ingest", - "version": 4 + "version": 7 } }, "Preprocessing of Calibrator": { @@ -19979,13 +52110,13 @@ "flag": { "autocorrelations": false, "outerchannels": true, - "rfi_strategy": "LBAdefault" + "rfi_strategy": "none" }, "storagemanager": "dysco" }, "specifications_template": { "name": "preprocessing pipeline", - "version": 5 + "version": 8 } }, "Preprocessing of Target": { @@ -20019,13 +52150,13 @@ }, "specifications_template": { "name": "preprocessing pipeline", - "version": 5 + "version": 8 } } } }, - "version": 11, - "id": 14, + "version": 15, + "id": 43, "state_value": "active", "purpose_value": "technical_commissioning" } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/__mocks__/task_templates.json b/SAS/TMSS/frontend/tmss_webapp/src/__mocks__/task_templates.json index 357d247a19402ceba73cae0391b407a0aa2a9d85..ee125d2478a14e12ceec1556fa741bf536e71094 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/__mocks__/task_templates.json +++ b/SAS/TMSS/frontend/tmss_webapp/src/__mocks__/task_templates.json @@ -5,7 +5,7 @@ "name": "cleanup", "purpose": "technical_commissioning", "schema": { - "$id": "http://localhost:3000/schemas/task_template/cleanup-7.json#", + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/cleanup/2#", "$schema": "http://json-schema.org/draft-06/schema#", "additionalProperties": false, "description": "This schema defines the parameters to setup a dataproduct(s) cleanup task.", @@ -16,115 +16,13 @@ "required": [], "title": "cleanup", "type": "object", - "version": 7 + "version": 2 }, - "state": "active", - "version": 7, + "state": "legacy", + "version": 2, "id": 1, "ref_resolved_schema": { "definitions": { - "QA": { - "additionalProperties": false, - "default": {}, - "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", - "properties": { - "file_conversion": { - "$ref": "#/definitions/file_conversion", - "default": {} - }, - "inspection_plots": { - "$ref": "#/definitions/inspection_plots", - "default": "msplots" - }, - "plots": { - "$ref": "#/definitions/plots", - "default": {} - } - }, - "required": [ - "file_conversion", - "plots", - "inspection_plots" - ], - "title": "QA", - "type": "object" - }, - "file_conversion": { - "additionalProperties": false, - "default": {}, - "description": "Create a QA file for the observation", - "properties": { - "enabled": { - "default": true, - "description": "Do/Don't create a QA file for the observation", - "title": "enabled", - "type": "boolean" - }, - "nr_of_subbands": { - "default": -1, - "description": "Keep this number of subbands from the observation in the QA file, or all if -1", - "title": "#subbands", - "type": "integer" - }, - "nr_of_timestamps": { - "default": 256, - "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", - "minimum": 1, - "title": "#timestamps", - "type": "integer" - } - }, - "required": [ - "enabled", - "nr_of_subbands", - "nr_of_timestamps" - ], - "title": "File Conversion", - "type": "object" - }, - "inspection_plots": { - "decription": "Type of inspection plots to run", - "default": "msplots", - "enum": [ - "msplots", - "dynspec", - "none" - ], - "title": "Inspection Plots", - "type": "string" - }, - "plots": { - "additionalProperties": false, - "default": {}, - "description": "Create dynamic spectrum plots", - "properties": { - "autocorrelation": { - "default": true, - "description": "Create autocorrelation plots for all stations", - "title": "autocorrelation", - "type": "boolean" - }, - "crosscorrelation": { - "default": true, - "description": "Create crosscorrelation plots for all baselines", - "title": "crosscorrelation", - "type": "boolean" - }, - "enabled": { - "default": true, - "description": "Do/Don't create plots from the QA file from the observation", - "title": "enabled", - "type": "boolean" - } - }, - "required": [ - "enabled", - "autocorrelation", - "crosscorrelation" - ], - "title": "Plots", - "type": "object" - }, "beamformer": { "additionalProperties": false, "default": {}, @@ -236,12 +134,12 @@ "type": "integer" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {} }, "relative": { "default": false, - "description": "Angular offset applied to the TAB pointing", + "description": "The SAP pointing is added to the TAB pointing", "title": "Relative to SAP", "type": "boolean" } @@ -354,11 +252,12 @@ "type": "string" }, "station_groups": { - "$ref": "#/definitions/station_groups", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", "default": [ { "max_nr_missing": 1, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -546,7 +445,7 @@ "type": "string" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -581,7 +480,7 @@ "type": "integer" }, "integration_time": { - "$ref": "#/definitions/timedelta", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -704,6 +603,11 @@ ], "type": "string" }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, "pointing": { "additionalProperties": false, "properties": { @@ -765,71 +669,106 @@ ], "type": "string" }, - "station_configuration": { + "QA": { + "additionalProperties": false, "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", "properties": { - "SAPs": { - "$ref": "#/definitions/SAPs", - "default": [ - {} - ], - "minItems": 1 + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} }, - "antenna_set": { - "$ref": "#/definitions/antenna_set", - "default": "HBA_DUAL" + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" }, - "filter": { - "$ref": "#/definitions/filter", - "default": "HBA_110_190" + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" }, - "station_groups": { - "$ref": "#/definitions/station_groups", - "default": [ - { - "max_nr_missing": 4, - "stations": [ - "CS002", - "CS003", - "CS004", - "CS005", - "CS006", - "CS007", - "CS011", - "CS013", - "CS017", - "CS021", - "CS024", - "CS026", - "CS028", - "CS030", - "CS031", - "CS032", - "CS101", - "CS103", - "CS201", - "CS301", - "CS302", - "CS401", - "CS501" - ] - } - ] + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" }, - "tile_beam": { - "$ref": "#/definitions/pointing", - "default": {}, - "description": "HBA only", - "title": "Tile beam" + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" } }, "required": [ - "station_groups", - "antenna_set", - "filter", - "SAPs" + "enabled", + "nr_of_subbands", + "nr_of_timestamps" ], - "title": "station_configuration", + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", "type": "object" }, "SAPs": { @@ -845,7 +784,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -885,6 +824,17 @@ "title": "SAPs", "type": "array" }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, "antenna_set": { "default": "HBA_DUAL", "description": "Fields & antennas to use", @@ -904,6 +854,15 @@ "title": "Antenna set", "type": "string" }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, "antennas": { "description": "Structure to describe a set of specific antennafields", "properties": { @@ -977,7 +936,7 @@ "type": "integer" }, "station": { - "description": "These are all LOFAR (1 and 2) stations", + "description": "These are the LOFAR stations", "enum": [ "CS001", "CS002", @@ -1081,6 +1040,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -1115,6 +1075,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -1209,6 +1170,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -1257,6 +1219,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -1396,6 +1359,7 @@ "default": { "max_nr_missing": 6, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -1458,6 +1422,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -1525,7 +1490,7 @@ "default": { "max_nr_missing": 0, "stations": [ - "CS002" + "CS001" ] }, "description": "A custom group of stations which can be defined by the user", @@ -1543,35 +1508,6 @@ ], "title": "Custom", "type": "object" - }, - { - "additionalProperties": false, - "default": { - "max_nr_missing": 0, - "stations": [ - "CS001" - ] - }, - "description": "All LOFAR2 stations", - "properties": { - "max_nr_missing": { - "$ref": "#/definitions/max_number_of_missing_stations" - }, - "stations": { - "$ref": "#/definitions/station_list", - "enum": [ - [ - "CS001" - ] - ] - } - }, - "required": [ - "stations", - "max_nr_missing" - ], - "title": "LOFAR2", - "type": "object" } ], "default": { @@ -1624,6 +1560,74 @@ "type": "array", "uniqueItems": true }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, "task_connector": { "additionalProperties": false, "default": {}, @@ -1683,130 +1687,28 @@ "type_value": "cleanup" }, { - "description": "This schema defines the parameters to setup an ingest task.", - "name": "ingest", + "description": "This schema defines the parameters to setup a dataproduct(s) cleanup task.", + "name": "cleanup", "purpose": "technical_commissioning", "schema": { - "$id": "http://localhost:3000/schemas/task_template/ingest-7.json#", + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/cleanup/4#", "$schema": "http://json-schema.org/draft-06/schema#", "additionalProperties": false, - "description": "This schema defines the parameters to setup an ingest task.", + "description": "This schema defines the parameters to setup a dataproduct(s) cleanup task.", "patternProperties": { "^[$]schema$": {} }, "properties": {}, "required": [], - "title": "ingest", + "title": "cleanup", "type": "object", - "version": 7 + "version": 4 }, - "state": "active", - "version": 7, + "state": "legacy", + "version": 4, "id": 2, "ref_resolved_schema": { "definitions": { - "QA": { - "additionalProperties": false, - "default": {}, - "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", - "properties": { - "file_conversion": { - "$ref": "#/definitions/file_conversion", - "default": {} - }, - "inspection_plots": { - "$ref": "#/definitions/inspection_plots", - "default": "msplots" - }, - "plots": { - "$ref": "#/definitions/plots", - "default": {} - } - }, - "required": [ - "file_conversion", - "plots", - "inspection_plots" - ], - "title": "QA", - "type": "object" - }, - "file_conversion": { - "additionalProperties": false, - "default": {}, - "description": "Create a QA file for the observation", - "properties": { - "enabled": { - "default": true, - "description": "Do/Don't create a QA file for the observation", - "title": "enabled", - "type": "boolean" - }, - "nr_of_subbands": { - "default": -1, - "description": "Keep this number of subbands from the observation in the QA file, or all if -1", - "title": "#subbands", - "type": "integer" - }, - "nr_of_timestamps": { - "default": 256, - "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", - "minimum": 1, - "title": "#timestamps", - "type": "integer" - } - }, - "required": [ - "enabled", - "nr_of_subbands", - "nr_of_timestamps" - ], - "title": "File Conversion", - "type": "object" - }, - "inspection_plots": { - "decription": "Type of inspection plots to run", - "default": "msplots", - "enum": [ - "msplots", - "dynspec", - "none" - ], - "title": "Inspection Plots", - "type": "string" - }, - "plots": { - "additionalProperties": false, - "default": {}, - "description": "Create dynamic spectrum plots", - "properties": { - "autocorrelation": { - "default": true, - "description": "Create autocorrelation plots for all stations", - "title": "autocorrelation", - "type": "boolean" - }, - "crosscorrelation": { - "default": true, - "description": "Create crosscorrelation plots for all baselines", - "title": "crosscorrelation", - "type": "boolean" - }, - "enabled": { - "default": true, - "description": "Do/Don't create plots from the QA file from the observation", - "title": "enabled", - "type": "boolean" - } - }, - "required": [ - "enabled", - "autocorrelation", - "crosscorrelation" - ], - "title": "Plots", - "type": "object" - }, "beamformer": { "additionalProperties": false, "default": {}, @@ -1918,12 +1820,12 @@ "type": "integer" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {} }, "relative": { "default": false, - "description": "Angular offset applied to the TAB pointing", + "description": "The SAP pointing is added to the TAB pointing", "title": "Relative to SAP", "type": "boolean" } @@ -2036,11 +1938,12 @@ "type": "string" }, "station_groups": { - "$ref": "#/definitions/station_groups", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", "default": [ { "max_nr_missing": 1, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -2228,7 +2131,7 @@ "type": "string" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -2263,7 +2166,7 @@ "type": "integer" }, "integration_time": { - "$ref": "#/definitions/timedelta", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -2386,6 +2289,11 @@ ], "type": "string" }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, "pointing": { "additionalProperties": false, "properties": { @@ -2447,71 +2355,106 @@ ], "type": "string" }, - "station_configuration": { + "QA": { + "additionalProperties": false, "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", "properties": { - "SAPs": { - "$ref": "#/definitions/SAPs", - "default": [ - {} - ], - "minItems": 1 + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} }, - "antenna_set": { - "$ref": "#/definitions/antenna_set", - "default": "HBA_DUAL" + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" }, - "filter": { - "$ref": "#/definitions/filter", - "default": "HBA_110_190" + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" }, - "station_groups": { - "$ref": "#/definitions/station_groups", - "default": [ - { - "max_nr_missing": 4, - "stations": [ - "CS002", - "CS003", - "CS004", - "CS005", - "CS006", - "CS007", - "CS011", - "CS013", - "CS017", - "CS021", - "CS024", - "CS026", - "CS028", - "CS030", - "CS031", - "CS032", - "CS101", - "CS103", - "CS201", - "CS301", - "CS302", - "CS401", - "CS501" - ] - } - ] + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" }, - "tile_beam": { - "$ref": "#/definitions/pointing", - "default": {}, - "description": "HBA only", - "title": "Tile beam" + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" } }, "required": [ - "station_groups", - "antenna_set", - "filter", - "SAPs" + "enabled", + "nr_of_subbands", + "nr_of_timestamps" ], - "title": "station_configuration", + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", "type": "object" }, "SAPs": { @@ -2527,7 +2470,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -2567,6 +2510,17 @@ "title": "SAPs", "type": "array" }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, "antenna_set": { "default": "HBA_DUAL", "description": "Fields & antennas to use", @@ -2586,6 +2540,15 @@ "title": "Antenna set", "type": "string" }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, "antennas": { "description": "Structure to describe a set of specific antennafields", "properties": { @@ -2659,7 +2622,7 @@ "type": "integer" }, "station": { - "description": "These are all LOFAR (1 and 2) stations", + "description": "These are the LOFAR stations", "enum": [ "CS001", "CS002", @@ -2763,6 +2726,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -2797,6 +2761,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -2891,6 +2856,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -2939,6 +2905,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -3078,6 +3045,7 @@ "default": { "max_nr_missing": 6, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -3140,6 +3108,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -3207,7 +3176,7 @@ "default": { "max_nr_missing": 0, "stations": [ - "CS002" + "CS001" ] }, "description": "A custom group of stations which can be defined by the user", @@ -3225,35 +3194,6 @@ ], "title": "Custom", "type": "object" - }, - { - "additionalProperties": false, - "default": { - "max_nr_missing": 0, - "stations": [ - "CS001" - ] - }, - "description": "All LOFAR2 stations", - "properties": { - "max_nr_missing": { - "$ref": "#/definitions/max_number_of_missing_stations" - }, - "stations": { - "$ref": "#/definitions/station_list", - "enum": [ - [ - "CS001" - ] - ] - } - }, - "required": [ - "stations", - "max_nr_missing" - ], - "title": "LOFAR2", - "type": "object" } ], "default": { @@ -3306,6 +3246,74 @@ "type": "array", "uniqueItems": true }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, "task_connector": { "additionalProperties": false, "default": {}, @@ -3361,168 +3369,32 @@ }, "properties": {} }, - "type": "http://localhost:3000/api/task_type/ingest", - "type_value": "ingest" + "type": "http://localhost:3000/api/task_type/cleanup", + "type_value": "cleanup" }, { - "description": "This schema defines the parameters for an observation that forms tied-array beams in COBALT.", - "name": "beamforming observation", + "description": "This schema defines the parameters to setup a dataproduct(s) cleanup task.", + "name": "cleanup", "purpose": "technical_commissioning", "schema": { - "$id": "http://localhost:3000/schemas/tasktemplate/beamforming%20observation-8.json#", + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/cleanup/5#", "$schema": "http://json-schema.org/draft-06/schema#", "additionalProperties": false, - "default": {}, - "description": "This schema defines the parameters for an observation that forms tied-array beams in COBALT.", + "description": "This schema defines the parameters to setup a dataproduct(s) cleanup task.", "patternProperties": { "^[$]schema$": {} }, - "properties": { - "QA": { - "$ref": "#/definitions/QA", - "default": { - "file_conversion": { - "enabled": false - }, - "inspection_plots": "msplots", - "plots": { - "enabled": false - } - } - }, - "beamformer": { - "$ref": "#/definitions/beamformer", - "default": {} - }, - "duration": { - "$id": "#duration", - "$ref": "#/definitions/timedelta", - "default": 300, - "description": "Duration of this observation (seconds)", - "minimum": 1, - "title": "Duration" - }, - "station_configuration": { - "$ref": "#/definitions/station_configuration", - "default": {} - } - }, - "required": [ - "beamformer", - "duration", - "station_configuration" - ], - "title": "beamforming observation", + "properties": {}, + "required": [], + "title": "cleanup", "type": "object", - "version": 8 + "version": 5 }, - "state": "active", - "version": 8, + "state": "legacy", + "version": 5, "id": 3, "ref_resolved_schema": { "definitions": { - "QA": { - "additionalProperties": false, - "default": {}, - "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", - "properties": { - "file_conversion": { - "$ref": "#/definitions/file_conversion", - "default": {} - }, - "inspection_plots": { - "$ref": "#/definitions/inspection_plots", - "default": "msplots" - }, - "plots": { - "$ref": "#/definitions/plots", - "default": {} - } - }, - "required": [ - "file_conversion", - "plots", - "inspection_plots" - ], - "title": "QA", - "type": "object" - }, - "file_conversion": { - "additionalProperties": false, - "default": {}, - "description": "Create a QA file for the observation", - "properties": { - "enabled": { - "default": true, - "description": "Do/Don't create a QA file for the observation", - "title": "enabled", - "type": "boolean" - }, - "nr_of_subbands": { - "default": -1, - "description": "Keep this number of subbands from the observation in the QA file, or all if -1", - "title": "#subbands", - "type": "integer" - }, - "nr_of_timestamps": { - "default": 256, - "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", - "minimum": 1, - "title": "#timestamps", - "type": "integer" - } - }, - "required": [ - "enabled", - "nr_of_subbands", - "nr_of_timestamps" - ], - "title": "File Conversion", - "type": "object" - }, - "inspection_plots": { - "decription": "Type of inspection plots to run", - "default": "msplots", - "enum": [ - "msplots", - "dynspec", - "none" - ], - "title": "Inspection Plots", - "type": "string" - }, - "plots": { - "additionalProperties": false, - "default": {}, - "description": "Create dynamic spectrum plots", - "properties": { - "autocorrelation": { - "default": true, - "description": "Create autocorrelation plots for all stations", - "title": "autocorrelation", - "type": "boolean" - }, - "crosscorrelation": { - "default": true, - "description": "Create crosscorrelation plots for all baselines", - "title": "crosscorrelation", - "type": "boolean" - }, - "enabled": { - "default": true, - "description": "Do/Don't create plots from the QA file from the observation", - "title": "enabled", - "type": "boolean" - } - }, - "required": [ - "enabled", - "autocorrelation", - "crosscorrelation" - ], - "title": "Plots", - "type": "object" - }, "beamformer": { "additionalProperties": false, "default": {}, @@ -3634,12 +3506,12 @@ "type": "integer" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {} }, "relative": { "default": false, - "description": "Angular offset applied to the TAB pointing", + "description": "The SAP pointing is added to the TAB pointing", "title": "Relative to SAP", "type": "boolean" } @@ -3752,11 +3624,12 @@ "type": "string" }, "station_groups": { - "$ref": "#/definitions/station_groups", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", "default": [ { "max_nr_missing": 1, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -3944,7 +3817,7 @@ "type": "string" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -3979,7 +3852,7 @@ "type": "integer" }, "integration_time": { - "$ref": "#/definitions/timedelta", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -4102,6 +3975,11 @@ ], "type": "string" }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, "pointing": { "additionalProperties": false, "properties": { @@ -4163,71 +4041,106 @@ ], "type": "string" }, - "station_configuration": { + "QA": { + "additionalProperties": false, "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", "properties": { - "SAPs": { - "$ref": "#/definitions/SAPs", - "default": [ - {} - ], - "minItems": 1 + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} }, - "antenna_set": { - "$ref": "#/definitions/antenna_set", - "default": "HBA_DUAL" + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" }, - "filter": { - "$ref": "#/definitions/filter", - "default": "HBA_110_190" + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" }, - "station_groups": { - "$ref": "#/definitions/station_groups", - "default": [ - { - "max_nr_missing": 4, - "stations": [ - "CS002", - "CS003", - "CS004", - "CS005", - "CS006", - "CS007", - "CS011", - "CS013", - "CS017", - "CS021", - "CS024", - "CS026", - "CS028", - "CS030", - "CS031", - "CS032", - "CS101", - "CS103", - "CS201", - "CS301", - "CS302", - "CS401", - "CS501" - ] - } - ] + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" }, - "tile_beam": { - "$ref": "#/definitions/pointing", - "default": {}, - "description": "HBA only", - "title": "Tile beam" + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" } }, "required": [ - "station_groups", - "antenna_set", - "filter", - "SAPs" + "enabled", + "nr_of_subbands", + "nr_of_timestamps" ], - "title": "station_configuration", + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", "type": "object" }, "SAPs": { @@ -4243,7 +4156,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -4283,6 +4196,17 @@ "title": "SAPs", "type": "array" }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, "antenna_set": { "default": "HBA_DUAL", "description": "Fields & antennas to use", @@ -4302,6 +4226,15 @@ "title": "Antenna set", "type": "string" }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, "antennas": { "description": "Structure to describe a set of specific antennafields", "properties": { @@ -4375,7 +4308,7 @@ "type": "integer" }, "station": { - "description": "These are all LOFAR (1 and 2) stations", + "description": "These are the LOFAR stations", "enum": [ "CS001", "CS002", @@ -4479,6 +4412,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -4513,6 +4447,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -4607,6 +4542,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -4655,6 +4591,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -4794,6 +4731,7 @@ "default": { "max_nr_missing": 6, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -4856,6 +4794,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -4923,7 +4862,7 @@ "default": { "max_nr_missing": 0, "stations": [ - "CS002" + "CS001" ] }, "description": "A custom group of stations which can be defined by the user", @@ -4941,35 +4880,6 @@ ], "title": "Custom", "type": "object" - }, - { - "additionalProperties": false, - "default": { - "max_nr_missing": 0, - "stations": [ - "CS001" - ] - }, - "description": "All LOFAR2 stations", - "properties": { - "max_nr_missing": { - "$ref": "#/definitions/max_number_of_missing_stations" - }, - "stations": { - "$ref": "#/definitions/station_list", - "enum": [ - [ - "CS001" - ] - ] - } - }, - "required": [ - "stations", - "max_nr_missing" - ], - "title": "LOFAR2", - "type": "object" } ], "default": { @@ -5022,6 +4932,74 @@ "type": "array", "uniqueItems": true }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, "task_connector": { "additionalProperties": false, "default": {}, @@ -5075,192 +5053,34 @@ "type": "object" } }, - "properties": { - "QA": { - "$ref": "#/definitions/QA", - "default": { - "file_conversion": { - "enabled": false - }, - "inspection_plots": "msplots", - "plots": { - "enabled": false - } - } - }, - "beamformer": { - "$ref": "#/definitions/beamformer", - "default": {} - }, - "duration": { - "$id": "#duration", - "$ref": "#/definitions/timedelta", - "default": 300, - "description": "Duration of this observation (seconds)", - "minimum": 1, - "title": "Duration" - }, - "station_configuration": { - "$ref": "#/definitions/station_configuration", - "default": {} - } - } + "properties": {} }, - "type": "http://localhost:3000/api/task_type/observation", - "type_value": "observation" + "type": "http://localhost:3000/api/task_type/cleanup", + "type_value": "cleanup" }, { - "description": "This schema defines the (extra) parameters to setup a calibrator observation task, which uses all parameters from the target observation task which it is linked to, plus these calibrator overrides.", - "name": "calibrator observation", + "description": "This schema defines the parameters to setup a dataproduct(s) cleanup task.", + "name": "cleanup", "purpose": "technical_commissioning", "schema": { - "$id": "http://localhost:3000/schemas/tasktemplate/calibrator%20observation-9.json#", + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/cleanup/6#", "$schema": "http://json-schema.org/draft-06/schema#", "additionalProperties": false, - "default": {}, - "description": "This schema defines the (extra) parameters to setup a calibrator observation task, which uses all parameters from the target observation task which it is linked to, plus these calibrator overrides.", + "description": "This schema defines the parameters to setup a dataproduct(s) cleanup task.", "patternProperties": { "^[$]schema$": {} }, - "properties": { - "QA": { - "$ref": "#/definitions/QA", - "default": {} - }, - "calibrator": { - "$ref": "#/definitions/calibrator", - "default": {} - }, - "duration": { - "$id": "#duration", - "$ref": "#/definitions/timedelta", - "default": 600, - "description": "Duration of this observation (seconds)", - "minimum": 1, - "title": "Duration" - }, - "use_target_beamformer": { - "default": true, - "description": "Add same beamformer as on target?", - "title": "Beamformer", - "type": "boolean" - } - }, - "required": [ - "calibrator", - "duration", - "use_target_beamformer" - ], - "title": "calibrator observation", - "version": 10 + "properties": {}, + "required": [], + "title": "cleanup", + "type": "object", + "version": 6 }, - "state": "active", - "version": 10, + "state": "legacy", + "version": 6, "id": 4, "ref_resolved_schema": { "definitions": { - "QA": { - "additionalProperties": false, - "default": {}, - "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", - "properties": { - "file_conversion": { - "$ref": "#/definitions/file_conversion", - "default": {} - }, - "inspection_plots": { - "$ref": "#/definitions/inspection_plots", - "default": "msplots" - }, - "plots": { - "$ref": "#/definitions/plots", - "default": {} - } - }, - "required": [ - "file_conversion", - "plots", - "inspection_plots" - ], - "title": "QA", - "type": "object" - }, - "file_conversion": { - "additionalProperties": false, - "default": {}, - "description": "Create a QA file for the observation", - "properties": { - "enabled": { - "default": true, - "description": "Do/Don't create a QA file for the observation", - "title": "enabled", - "type": "boolean" - }, - "nr_of_subbands": { - "default": -1, - "description": "Keep this number of subbands from the observation in the QA file, or all if -1", - "title": "#subbands", - "type": "integer" - }, - "nr_of_timestamps": { - "default": 256, - "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", - "minimum": 1, - "title": "#timestamps", - "type": "integer" - } - }, - "required": [ - "enabled", - "nr_of_subbands", - "nr_of_timestamps" - ], - "title": "File Conversion", - "type": "object" - }, - "inspection_plots": { - "decription": "Type of inspection plots to run", - "default": "msplots", - "enum": [ - "msplots", - "dynspec", - "none" - ], - "title": "Inspection Plots", - "type": "string" - }, - "plots": { - "additionalProperties": false, - "default": {}, - "description": "Create dynamic spectrum plots", - "properties": { - "autocorrelation": { - "default": true, - "description": "Create autocorrelation plots for all stations", - "title": "autocorrelation", - "type": "boolean" - }, - "crosscorrelation": { - "default": true, - "description": "Create crosscorrelation plots for all baselines", - "title": "crosscorrelation", - "type": "boolean" - }, - "enabled": { - "default": true, - "description": "Do/Don't create plots from the QA file from the observation", - "title": "enabled", - "type": "boolean" - } - }, - "required": [ - "enabled", - "autocorrelation", - "crosscorrelation" - ], - "title": "Plots", - "type": "object" - }, "beamformer": { "additionalProperties": false, "default": {}, @@ -5372,12 +5192,12 @@ "type": "integer" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {} }, "relative": { "default": false, - "description": "Angular offset applied to the TAB pointing", + "description": "The SAP pointing is added to the TAB pointing", "title": "Relative to SAP", "type": "boolean" } @@ -5490,11 +5310,12 @@ "type": "string" }, "station_groups": { - "$ref": "#/definitions/station_groups", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", "default": [ { "max_nr_missing": 1, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -5682,7 +5503,7 @@ "type": "string" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -5717,7 +5538,7 @@ "type": "integer" }, "integration_time": { - "$ref": "#/definitions/timedelta", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -5840,6 +5661,11 @@ ], "type": "string" }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, "pointing": { "additionalProperties": false, "properties": { @@ -5901,71 +5727,106 @@ ], "type": "string" }, - "station_configuration": { + "QA": { + "additionalProperties": false, "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", "properties": { - "SAPs": { - "$ref": "#/definitions/SAPs", - "default": [ - {} - ], - "minItems": 1 + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} }, - "antenna_set": { - "$ref": "#/definitions/antenna_set", - "default": "HBA_DUAL" + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" }, - "filter": { - "$ref": "#/definitions/filter", - "default": "HBA_110_190" + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" }, - "station_groups": { - "$ref": "#/definitions/station_groups", - "default": [ - { - "max_nr_missing": 4, - "stations": [ - "CS002", - "CS003", - "CS004", - "CS005", - "CS006", - "CS007", - "CS011", - "CS013", - "CS017", - "CS021", - "CS024", - "CS026", - "CS028", - "CS030", - "CS031", - "CS032", - "CS101", - "CS103", - "CS201", - "CS301", - "CS302", - "CS401", - "CS501" - ] - } - ] + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" }, - "tile_beam": { - "$ref": "#/definitions/pointing", - "default": {}, - "description": "HBA only", - "title": "Tile beam" + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" } }, "required": [ - "station_groups", - "antenna_set", - "filter", - "SAPs" + "enabled", + "nr_of_subbands", + "nr_of_timestamps" ], - "title": "station_configuration", + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", "type": "object" }, "SAPs": { @@ -5981,7 +5842,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -6021,6 +5882,17 @@ "title": "SAPs", "type": "array" }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, "antenna_set": { "default": "HBA_DUAL", "description": "Fields & antennas to use", @@ -6040,6 +5912,15 @@ "title": "Antenna set", "type": "string" }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, "antennas": { "description": "Structure to describe a set of specific antennafields", "properties": { @@ -6113,7 +5994,7 @@ "type": "integer" }, "station": { - "description": "These are all LOFAR (1 and 2) stations", + "description": "These are the LOFAR stations", "enum": [ "CS001", "CS002", @@ -6217,6 +6098,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -6251,6 +6133,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -6345,6 +6228,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -6393,6 +6277,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -6532,6 +6417,7 @@ "default": { "max_nr_missing": 6, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -6594,6 +6480,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -6661,7 +6548,7 @@ "default": { "max_nr_missing": 0, "stations": [ - "CS002" + "CS001" ] }, "description": "A custom group of stations which can be defined by the user", @@ -6679,35 +6566,6 @@ ], "title": "Custom", "type": "object" - }, - { - "additionalProperties": false, - "default": { - "max_nr_missing": 0, - "stations": [ - "CS001" - ] - }, - "description": "All LOFAR2 stations", - "properties": { - "max_nr_missing": { - "$ref": "#/definitions/max_number_of_missing_stations" - }, - "stations": { - "$ref": "#/definitions/station_list", - "enum": [ - [ - "CS001" - ] - ] - } - }, - "required": [ - "stations", - "max_nr_missing" - ], - "title": "LOFAR2", - "type": "object" } ], "default": { @@ -6760,6 +6618,74 @@ "type": "array", "uniqueItems": true }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, "task_connector": { "additionalProperties": false, "default": {}, @@ -6813,194 +6739,34 @@ "type": "object" } }, - "properties": { - "QA": { - "$ref": "#/definitions/QA", - "default": {} - }, - "calibrator": { - "$ref": "#/definitions/calibrator", - "default": {} - }, - "duration": { - "$id": "#duration", - "$ref": "#/definitions/timedelta", - "default": 600, - "description": "Duration of this observation (seconds)", - "minimum": 1, - "title": "Duration" - }, - "use_target_beamformer": { - "default": true, - "description": "Add same beamformer as on target?", - "title": "Beamformer", - "type": "boolean" - } - } + "properties": {} }, - "type": "http://localhost:3000/api/task_type/observation", - "type_value": "observation" + "type": "http://localhost:3000/api/task_type/cleanup", + "type_value": "cleanup" }, { - "description": "This schema combines the calibrator, target and beamformer observation task schema's for parallel observing.", - "name": "parallel calibrator target and beamforming observation", + "description": "This schema defines the parameters to setup a dataproduct(s) cleanup task.", + "name": "cleanup", "purpose": "technical_commissioning", "schema": { - "$id": "http://localhost:3000/schemas/tasktemplate/parallel%20calibrator%20target%20and%20beamforming%20observation-5.json#", + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/cleanup/7#", "$schema": "http://json-schema.org/draft-06/schema#", "additionalProperties": false, - "description": "This schema combines the calibrator, target and beamformer observation task schema's for parallel observing.", + "description": "This schema defines the parameters to setup a dataproduct(s) cleanup task.", "patternProperties": { "^[$]schema$": {} }, - "properties": { - "QA": { - "$ref": "#/definitions/QA", - "default": {} - }, - "beamformer": { - "$ref": "#/definitions/beamformer", - "default": {} - }, - "calibrator": { - "$ref": "#/definitions/calibrator", - "default": {} - }, - "correlator": { - "$ref": "#/definitions/correlator", - "default": {} - }, - "duration": { - "$id": "#duration", - "$ref": "#/definitions/timedelta", - "default": 600, - "description": "Duration of this observation (seconds)", - "minimum": 1, - "title": "Duration" - }, - "station_configuration": { - "$ref": "#/definitions/station_configuration", - "default": {} - } - }, - "required": [ - "calibrator", - "correlator", - "duration", - "station_configuration", - "beamformer" - ], - "title": "parallel calibrator target and beamforming observation", + "properties": {}, + "required": [], + "title": "cleanup", "type": "object", - "version": 5 + "version": 7 }, "state": "active", - "version": 5, + "version": 7, "id": 5, "ref_resolved_schema": { "definitions": { - "QA": { - "additionalProperties": false, - "default": {}, - "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", - "properties": { - "file_conversion": { - "$ref": "#/definitions/file_conversion", - "default": {} - }, - "inspection_plots": { - "$ref": "#/definitions/inspection_plots", - "default": "msplots" - }, - "plots": { - "$ref": "#/definitions/plots", - "default": {} - } - }, - "required": [ - "file_conversion", - "plots", - "inspection_plots" - ], - "title": "QA", - "type": "object" - }, - "file_conversion": { - "additionalProperties": false, - "default": {}, - "description": "Create a QA file for the observation", - "properties": { - "enabled": { - "default": true, - "description": "Do/Don't create a QA file for the observation", - "title": "enabled", - "type": "boolean" - }, - "nr_of_subbands": { - "default": -1, - "description": "Keep this number of subbands from the observation in the QA file, or all if -1", - "title": "#subbands", - "type": "integer" - }, - "nr_of_timestamps": { - "default": 256, - "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", - "minimum": 1, - "title": "#timestamps", - "type": "integer" - } - }, - "required": [ - "enabled", - "nr_of_subbands", - "nr_of_timestamps" - ], - "title": "File Conversion", - "type": "object" - }, - "inspection_plots": { - "decription": "Type of inspection plots to run", - "default": "msplots", - "enum": [ - "msplots", - "dynspec", - "none" - ], - "title": "Inspection Plots", - "type": "string" - }, - "plots": { - "additionalProperties": false, - "default": {}, - "description": "Create dynamic spectrum plots", - "properties": { - "autocorrelation": { - "default": true, - "description": "Create autocorrelation plots for all stations", - "title": "autocorrelation", - "type": "boolean" - }, - "crosscorrelation": { - "default": true, - "description": "Create crosscorrelation plots for all baselines", - "title": "crosscorrelation", - "type": "boolean" - }, - "enabled": { - "default": true, - "description": "Do/Don't create plots from the QA file from the observation", - "title": "enabled", - "type": "boolean" - } - }, - "required": [ - "enabled", - "autocorrelation", - "crosscorrelation" - ], - "title": "Plots", - "type": "object" - }, "beamformer": { "additionalProperties": false, "default": {}, @@ -7112,12 +6878,12 @@ "type": "integer" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {} }, "relative": { "default": false, - "description": "Angular offset applied to the TAB pointing", + "description": "The SAP pointing is added to the TAB pointing", "title": "Relative to SAP", "type": "boolean" } @@ -7230,11 +6996,12 @@ "type": "string" }, "station_groups": { - "$ref": "#/definitions/station_groups", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", "default": [ { "max_nr_missing": 1, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -7422,7 +7189,7 @@ "type": "string" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -7457,7 +7224,7 @@ "type": "integer" }, "integration_time": { - "$ref": "#/definitions/timedelta", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -7580,6 +7347,11 @@ ], "type": "string" }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, "pointing": { "additionalProperties": false, "properties": { @@ -7641,71 +7413,106 @@ ], "type": "string" }, - "station_configuration": { + "QA": { + "additionalProperties": false, "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", "properties": { - "SAPs": { - "$ref": "#/definitions/SAPs", - "default": [ - {} - ], - "minItems": 1 + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} }, - "antenna_set": { - "$ref": "#/definitions/antenna_set", - "default": "HBA_DUAL" + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" }, - "filter": { - "$ref": "#/definitions/filter", - "default": "HBA_110_190" + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" }, - "station_groups": { - "$ref": "#/definitions/station_groups", - "default": [ - { - "max_nr_missing": 4, - "stations": [ - "CS002", - "CS003", - "CS004", - "CS005", - "CS006", - "CS007", - "CS011", - "CS013", - "CS017", - "CS021", - "CS024", - "CS026", - "CS028", - "CS030", - "CS031", - "CS032", - "CS101", - "CS103", - "CS201", - "CS301", - "CS302", - "CS401", - "CS501" - ] - } - ] + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" }, - "tile_beam": { - "$ref": "#/definitions/pointing", - "default": {}, - "description": "HBA only", - "title": "Tile beam" + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" } }, "required": [ - "station_groups", - "antenna_set", - "filter", - "SAPs" + "enabled", + "nr_of_subbands", + "nr_of_timestamps" ], - "title": "station_configuration", + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", "type": "object" }, "SAPs": { @@ -7721,7 +7528,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -7761,6 +7568,17 @@ "title": "SAPs", "type": "array" }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, "antenna_set": { "default": "HBA_DUAL", "description": "Fields & antennas to use", @@ -7780,6 +7598,15 @@ "title": "Antenna set", "type": "string" }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, "antennas": { "description": "Structure to describe a set of specific antennafields", "properties": { @@ -7853,7 +7680,7 @@ "type": "integer" }, "station": { - "description": "These are all LOFAR (1 and 2) stations", + "description": "These are the LOFAR stations", "enum": [ "CS001", "CS002", @@ -7957,6 +7784,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -7991,6 +7819,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -8085,6 +7914,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -8133,6 +7963,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -8272,6 +8103,7 @@ "default": { "max_nr_missing": 6, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -8334,6 +8166,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -8401,7 +8234,7 @@ "default": { "max_nr_missing": 0, "stations": [ - "CS002" + "CS001" ] }, "description": "A custom group of stations which can be defined by the user", @@ -8419,35 +8252,6 @@ ], "title": "Custom", "type": "object" - }, - { - "additionalProperties": false, - "default": { - "max_nr_missing": 0, - "stations": [ - "CS001" - ] - }, - "description": "All LOFAR2 stations", - "properties": { - "max_nr_missing": { - "$ref": "#/definitions/max_number_of_missing_stations" - }, - "stations": { - "$ref": "#/definitions/station_list", - "enum": [ - [ - "CS001" - ] - ] - } - }, - "required": [ - "stations", - "max_nr_missing" - ], - "title": "LOFAR2", - "type": "object" } ], "default": { @@ -8500,6 +8304,74 @@ "type": "array", "uniqueItems": true }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, "task_connector": { "additionalProperties": false, "default": {}, @@ -8553,195 +8425,34 @@ "type": "object" } }, - "properties": { - "QA": { - "$ref": "#/definitions/QA", - "default": {} - }, - "beamformer": { - "$ref": "#/definitions/beamformer", - "default": {} - }, - "calibrator": { - "$ref": "#/definitions/calibrator", - "default": {} - }, - "correlator": { - "$ref": "#/definitions/correlator", - "default": {} - }, - "duration": { - "$id": "#duration", - "$ref": "#/definitions/timedelta", - "default": 600, - "description": "Duration of this observation (seconds)", - "minimum": 1, - "title": "Duration" - }, - "station_configuration": { - "$ref": "#/definitions/station_configuration", - "default": {} - } - } + "properties": {} }, - "type": "http://localhost:3000/api/task_type/observation", - "type_value": "observation" + "type": "http://localhost:3000/api/task_type/cleanup", + "type_value": "cleanup" }, { - "description": "This schema combines the calibrator and target observation task schema's for parallel observing.", - "name": "parallel calibrator target observation", + "description": "This schema defines the parameters to setup an ingest task.", + "name": "ingest", "purpose": "technical_commissioning", "schema": { - "$id": "http://localhost:3000/schemas/tasktemplate/parallel%20calibrator%20target%20observation-9.json#", + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/ingest/2#", "$schema": "http://json-schema.org/draft-06/schema#", "additionalProperties": false, - "description": "This schema combines the calibrator and target observation task schema's for parallel observing.", + "description": "This schema defines the parameters to setup an ingest task.", "patternProperties": { "^[$]schema$": {} }, - "properties": { - "QA": { - "$ref": "#/definitions/QA", - "default": {} - }, - "calibrator": { - "$ref": "#/definitions/calibrator", - "default": {} - }, - "correlator": { - "$ref": "#/definitions/correlator", - "default": {} - }, - "duration": { - "$id": "#duration", - "$ref": "#/definitions/timedelta", - "default": 600, - "description": "Duration of this observation (seconds)", - "minimum": 1, - "title": "Duration" - }, - "station_configuration": { - "$ref": "#/definitions/station_configuration", - "default": {} - } - }, - "required": [ - "calibrator", - "correlator", - "duration", - "station_configuration" - ], - "title": "parallel calibrator target observation", + "properties": {}, + "required": [], + "title": "ingest", "type": "object", - "version": 9 + "version": 2 }, - "state": "active", - "version": 9, + "state": "legacy", + "version": 2, "id": 6, "ref_resolved_schema": { "definitions": { - "QA": { - "additionalProperties": false, - "default": {}, - "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", - "properties": { - "file_conversion": { - "$ref": "#/definitions/file_conversion", - "default": {} - }, - "inspection_plots": { - "$ref": "#/definitions/inspection_plots", - "default": "msplots" - }, - "plots": { - "$ref": "#/definitions/plots", - "default": {} - } - }, - "required": [ - "file_conversion", - "plots", - "inspection_plots" - ], - "title": "QA", - "type": "object" - }, - "file_conversion": { - "additionalProperties": false, - "default": {}, - "description": "Create a QA file for the observation", - "properties": { - "enabled": { - "default": true, - "description": "Do/Don't create a QA file for the observation", - "title": "enabled", - "type": "boolean" - }, - "nr_of_subbands": { - "default": -1, - "description": "Keep this number of subbands from the observation in the QA file, or all if -1", - "title": "#subbands", - "type": "integer" - }, - "nr_of_timestamps": { - "default": 256, - "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", - "minimum": 1, - "title": "#timestamps", - "type": "integer" - } - }, - "required": [ - "enabled", - "nr_of_subbands", - "nr_of_timestamps" - ], - "title": "File Conversion", - "type": "object" - }, - "inspection_plots": { - "decription": "Type of inspection plots to run", - "default": "msplots", - "enum": [ - "msplots", - "dynspec", - "none" - ], - "title": "Inspection Plots", - "type": "string" - }, - "plots": { - "additionalProperties": false, - "default": {}, - "description": "Create dynamic spectrum plots", - "properties": { - "autocorrelation": { - "default": true, - "description": "Create autocorrelation plots for all stations", - "title": "autocorrelation", - "type": "boolean" - }, - "crosscorrelation": { - "default": true, - "description": "Create crosscorrelation plots for all baselines", - "title": "crosscorrelation", - "type": "boolean" - }, - "enabled": { - "default": true, - "description": "Do/Don't create plots from the QA file from the observation", - "title": "enabled", - "type": "boolean" - } - }, - "required": [ - "enabled", - "autocorrelation", - "crosscorrelation" - ], - "title": "Plots", - "type": "object" - }, "beamformer": { "additionalProperties": false, "default": {}, @@ -8853,12 +8564,12 @@ "type": "integer" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {} }, "relative": { "default": false, - "description": "Angular offset applied to the TAB pointing", + "description": "The SAP pointing is added to the TAB pointing", "title": "Relative to SAP", "type": "boolean" } @@ -8971,11 +8682,12 @@ "type": "string" }, "station_groups": { - "$ref": "#/definitions/station_groups", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", "default": [ { "max_nr_missing": 1, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -9163,7 +8875,7 @@ "type": "string" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -9198,7 +8910,7 @@ "type": "integer" }, "integration_time": { - "$ref": "#/definitions/timedelta", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -9321,6 +9033,11 @@ ], "type": "string" }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, "pointing": { "additionalProperties": false, "properties": { @@ -9382,71 +9099,106 @@ ], "type": "string" }, - "station_configuration": { + "QA": { + "additionalProperties": false, "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", "properties": { - "SAPs": { - "$ref": "#/definitions/SAPs", - "default": [ - {} - ], - "minItems": 1 + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} }, - "antenna_set": { - "$ref": "#/definitions/antenna_set", - "default": "HBA_DUAL" + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" }, - "filter": { - "$ref": "#/definitions/filter", - "default": "HBA_110_190" + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" }, - "station_groups": { - "$ref": "#/definitions/station_groups", - "default": [ - { - "max_nr_missing": 4, - "stations": [ - "CS002", - "CS003", - "CS004", - "CS005", - "CS006", - "CS007", - "CS011", - "CS013", - "CS017", - "CS021", - "CS024", - "CS026", - "CS028", - "CS030", - "CS031", - "CS032", - "CS101", - "CS103", - "CS201", - "CS301", - "CS302", - "CS401", - "CS501" - ] - } - ] + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" }, - "tile_beam": { - "$ref": "#/definitions/pointing", - "default": {}, - "description": "HBA only", - "title": "Tile beam" + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" } }, "required": [ - "station_groups", - "antenna_set", - "filter", - "SAPs" + "enabled", + "nr_of_subbands", + "nr_of_timestamps" ], - "title": "station_configuration", + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", "type": "object" }, "SAPs": { @@ -9462,7 +9214,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -9502,6 +9254,17 @@ "title": "SAPs", "type": "array" }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, "antenna_set": { "default": "HBA_DUAL", "description": "Fields & antennas to use", @@ -9521,6 +9284,15 @@ "title": "Antenna set", "type": "string" }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, "antennas": { "description": "Structure to describe a set of specific antennafields", "properties": { @@ -9594,7 +9366,7 @@ "type": "integer" }, "station": { - "description": "These are all LOFAR (1 and 2) stations", + "description": "These are the LOFAR stations", "enum": [ "CS001", "CS002", @@ -9698,6 +9470,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -9732,6 +9505,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -9826,6 +9600,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -9874,6 +9649,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -10013,6 +9789,7 @@ "default": { "max_nr_missing": 6, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -10075,6 +9852,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -10142,7 +9920,7 @@ "default": { "max_nr_missing": 0, "stations": [ - "CS002" + "CS001" ] }, "description": "A custom group of stations which can be defined by the user", @@ -10160,35 +9938,6 @@ ], "title": "Custom", "type": "object" - }, - { - "additionalProperties": false, - "default": { - "max_nr_missing": 0, - "stations": [ - "CS001" - ] - }, - "description": "All LOFAR2 stations", - "properties": { - "max_nr_missing": { - "$ref": "#/definitions/max_number_of_missing_stations" - }, - "stations": { - "$ref": "#/definitions/station_list", - "enum": [ - [ - "CS001" - ] - ] - } - }, - "required": [ - "stations", - "max_nr_missing" - ], - "title": "LOFAR2", - "type": "object" } ], "default": { @@ -10241,6 +9990,74 @@ "type": "array", "uniqueItems": true }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, "task_connector": { "additionalProperties": false, "default": {}, @@ -10294,191 +10111,34 @@ "type": "object" } }, - "properties": { - "QA": { - "$ref": "#/definitions/QA", - "default": {} - }, - "calibrator": { - "$ref": "#/definitions/calibrator", - "default": {} - }, - "correlator": { - "$ref": "#/definitions/correlator", - "default": {} - }, - "duration": { - "$id": "#duration", - "$ref": "#/definitions/timedelta", - "default": 600, - "description": "Duration of this observation (seconds)", - "minimum": 1, - "title": "Duration" - }, - "station_configuration": { - "$ref": "#/definitions/station_configuration", - "default": {} - } - } + "properties": {} }, - "type": "http://localhost:3000/api/task_type/observation", - "type_value": "observation" + "type": "http://localhost:3000/api/task_type/ingest", + "type_value": "ingest" }, { - "description": "This schema combines the target and beamformer observation task schema's for parallel observing.", - "name": "parallel target and beamforming observation", + "description": "This schema defines the parameters to setup an ingest task.", + "name": "ingest", "purpose": "technical_commissioning", "schema": { - "$id": "http://localhost:3000/schemas/tasktemplate/parallel%20target%20and%20beamforming%20observation-2.json#", + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/ingest/6#", "$schema": "http://json-schema.org/draft-06/schema#", "additionalProperties": false, - "description": "This schema combines the target and beamformer observation task schema's for parallel observing.", + "description": "This schema defines the parameters to setup an ingest task.", "patternProperties": { "^[$]schema$": {} }, - "properties": { - "QA": { - "$ref": "#/definitions/QA", - "default": {} - }, - "beamformer": { - "$ref": "#/definitions/beamformer", - "default": {} - }, - "correlator": { - "$ref": "#/definitions/correlator", - "default": {} - }, - "duration": { - "$id": "#duration", - "$ref": "#/definitions/timedelta", - "default": 600, - "description": "Duration of this observation (seconds)", - "minimum": 1, - "title": "Duration" - }, - "station_configuration": { - "$ref": "#/definitions/station_configuration", - "default": {} - } - }, - "required": [ - "beamformer", - "correlator", - "duration", - "station_configuration" - ], - "title": "parallel target and beamforming observation", + "properties": {}, + "required": [], + "title": "ingest", "type": "object", - "version": 2 + "version": 6 }, - "state": "active", - "version": 2, + "state": "legacy", + "version": 6, "id": 7, "ref_resolved_schema": { "definitions": { - "QA": { - "additionalProperties": false, - "default": {}, - "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", - "properties": { - "file_conversion": { - "$ref": "#/definitions/file_conversion", - "default": {} - }, - "inspection_plots": { - "$ref": "#/definitions/inspection_plots", - "default": "msplots" - }, - "plots": { - "$ref": "#/definitions/plots", - "default": {} - } - }, - "required": [ - "file_conversion", - "plots", - "inspection_plots" - ], - "title": "QA", - "type": "object" - }, - "file_conversion": { - "additionalProperties": false, - "default": {}, - "description": "Create a QA file for the observation", - "properties": { - "enabled": { - "default": true, - "description": "Do/Don't create a QA file for the observation", - "title": "enabled", - "type": "boolean" - }, - "nr_of_subbands": { - "default": -1, - "description": "Keep this number of subbands from the observation in the QA file, or all if -1", - "title": "#subbands", - "type": "integer" - }, - "nr_of_timestamps": { - "default": 256, - "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", - "minimum": 1, - "title": "#timestamps", - "type": "integer" - } - }, - "required": [ - "enabled", - "nr_of_subbands", - "nr_of_timestamps" - ], - "title": "File Conversion", - "type": "object" - }, - "inspection_plots": { - "decription": "Type of inspection plots to run", - "default": "msplots", - "enum": [ - "msplots", - "dynspec", - "none" - ], - "title": "Inspection Plots", - "type": "string" - }, - "plots": { - "additionalProperties": false, - "default": {}, - "description": "Create dynamic spectrum plots", - "properties": { - "autocorrelation": { - "default": true, - "description": "Create autocorrelation plots for all stations", - "title": "autocorrelation", - "type": "boolean" - }, - "crosscorrelation": { - "default": true, - "description": "Create crosscorrelation plots for all baselines", - "title": "crosscorrelation", - "type": "boolean" - }, - "enabled": { - "default": true, - "description": "Do/Don't create plots from the QA file from the observation", - "title": "enabled", - "type": "boolean" - } - }, - "required": [ - "enabled", - "autocorrelation", - "crosscorrelation" - ], - "title": "Plots", - "type": "object" - }, "beamformer": { "additionalProperties": false, "default": {}, @@ -10590,12 +10250,12 @@ "type": "integer" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {} }, "relative": { "default": false, - "description": "Angular offset applied to the TAB pointing", + "description": "The SAP pointing is added to the TAB pointing", "title": "Relative to SAP", "type": "boolean" } @@ -10708,11 +10368,12 @@ "type": "string" }, "station_groups": { - "$ref": "#/definitions/station_groups", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", "default": [ { "max_nr_missing": 1, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -10900,7 +10561,7 @@ "type": "string" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -10935,7 +10596,7 @@ "type": "integer" }, "integration_time": { - "$ref": "#/definitions/timedelta", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -11058,6 +10719,11 @@ ], "type": "string" }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, "pointing": { "additionalProperties": false, "properties": { @@ -11119,71 +10785,106 @@ ], "type": "string" }, - "station_configuration": { + "QA": { + "additionalProperties": false, "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", "properties": { - "SAPs": { - "$ref": "#/definitions/SAPs", - "default": [ - {} - ], - "minItems": 1 + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} }, - "antenna_set": { - "$ref": "#/definitions/antenna_set", - "default": "HBA_DUAL" + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" }, - "filter": { - "$ref": "#/definitions/filter", - "default": "HBA_110_190" + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" }, - "station_groups": { - "$ref": "#/definitions/station_groups", - "default": [ - { - "max_nr_missing": 4, - "stations": [ - "CS002", - "CS003", - "CS004", - "CS005", - "CS006", - "CS007", - "CS011", - "CS013", - "CS017", - "CS021", - "CS024", - "CS026", - "CS028", - "CS030", - "CS031", - "CS032", - "CS101", - "CS103", - "CS201", - "CS301", - "CS302", - "CS401", - "CS501" - ] - } - ] + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" }, - "tile_beam": { - "$ref": "#/definitions/pointing", - "default": {}, - "description": "HBA only", - "title": "Tile beam" + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" } }, "required": [ - "station_groups", - "antenna_set", - "filter", - "SAPs" + "enabled", + "nr_of_subbands", + "nr_of_timestamps" ], - "title": "station_configuration", + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", "type": "object" }, "SAPs": { @@ -11199,7 +10900,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -11239,6 +10940,17 @@ "title": "SAPs", "type": "array" }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, "antenna_set": { "default": "HBA_DUAL", "description": "Fields & antennas to use", @@ -11258,6 +10970,15 @@ "title": "Antenna set", "type": "string" }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, "antennas": { "description": "Structure to describe a set of specific antennafields", "properties": { @@ -11331,7 +11052,7 @@ "type": "integer" }, "station": { - "description": "These are all LOFAR (1 and 2) stations", + "description": "These are the LOFAR stations", "enum": [ "CS001", "CS002", @@ -11435,6 +11156,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -11469,6 +11191,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -11563,6 +11286,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -11611,6 +11335,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -11750,6 +11475,7 @@ "default": { "max_nr_missing": 6, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -11812,6 +11538,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -11879,7 +11606,7 @@ "default": { "max_nr_missing": 0, "stations": [ - "CS002" + "CS001" ] }, "description": "A custom group of stations which can be defined by the user", @@ -11897,35 +11624,6 @@ ], "title": "Custom", "type": "object" - }, - { - "additionalProperties": false, - "default": { - "max_nr_missing": 0, - "stations": [ - "CS001" - ] - }, - "description": "All LOFAR2 stations", - "properties": { - "max_nr_missing": { - "$ref": "#/definitions/max_number_of_missing_stations" - }, - "stations": { - "$ref": "#/definitions/station_list", - "enum": [ - [ - "CS001" - ] - ] - } - }, - "required": [ - "stations", - "max_nr_missing" - ], - "title": "LOFAR2", - "type": "object" } ], "default": { @@ -11978,6 +11676,74 @@ "type": "array", "uniqueItems": true }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, "task_connector": { "additionalProperties": false, "default": {}, @@ -12031,185 +11797,34 @@ "type": "object" } }, - "properties": { - "QA": { - "$ref": "#/definitions/QA", - "default": {} - }, - "beamformer": { - "$ref": "#/definitions/beamformer", - "default": {} - }, - "correlator": { - "$ref": "#/definitions/correlator", - "default": {} - }, - "duration": { - "$id": "#duration", - "$ref": "#/definitions/timedelta", - "default": 600, - "description": "Duration of this observation (seconds)", - "minimum": 1, - "title": "Duration" - }, - "station_configuration": { - "$ref": "#/definitions/station_configuration", - "default": {} - } - } + "properties": {} }, - "type": "http://localhost:3000/api/task_type/observation", - "type_value": "observation" + "type": "http://localhost:3000/api/task_type/ingest", + "type_value": "ingest" }, { - "description": "This schema defines the parameters to setup a target observation task.", - "name": "target observation", + "description": "This schema defines the parameters to setup an ingest task.", + "name": "ingest", "purpose": "technical_commissioning", "schema": { - "$id": "http://localhost:3000/schemas/tasktemplate/target%20observation-8.json#", + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/ingest/7#", "$schema": "http://json-schema.org/draft-06/schema#", "additionalProperties": false, - "description": "This schema defines the parameters to setup a target observation task.", + "description": "This schema defines the parameters to setup an ingest task.", "patternProperties": { "^[$]schema$": {} }, - "properties": { - "QA": { - "$ref": "#/definitions/QA", - "default": {} - }, - "correlator": { - "$ref": "#/definitions/correlator", - "default": {} - }, - "duration": { - "$id": "#duration", - "$ref": "#/definitions/timedelta", - "default": 600, - "description": "Duration of this observation (seconds)", - "minimum": 1, - "title": "Duration" - }, - "station_configuration": { - "$ref": "#/definitions/station_configuration", - "default": {} - } - }, - "required": [ - "correlator", - "duration", - "station_configuration" - ], - "title": "target observation", - "version": 8 + "properties": {}, + "required": [], + "title": "ingest", + "type": "object", + "version": 7 }, "state": "active", - "version": 8, + "version": 7, "id": 8, "ref_resolved_schema": { "definitions": { - "QA": { - "additionalProperties": false, - "default": {}, - "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", - "properties": { - "file_conversion": { - "$ref": "#/definitions/file_conversion", - "default": {} - }, - "inspection_plots": { - "$ref": "#/definitions/inspection_plots", - "default": "msplots" - }, - "plots": { - "$ref": "#/definitions/plots", - "default": {} - } - }, - "required": [ - "file_conversion", - "plots", - "inspection_plots" - ], - "title": "QA", - "type": "object" - }, - "file_conversion": { - "additionalProperties": false, - "default": {}, - "description": "Create a QA file for the observation", - "properties": { - "enabled": { - "default": true, - "description": "Do/Don't create a QA file for the observation", - "title": "enabled", - "type": "boolean" - }, - "nr_of_subbands": { - "default": -1, - "description": "Keep this number of subbands from the observation in the QA file, or all if -1", - "title": "#subbands", - "type": "integer" - }, - "nr_of_timestamps": { - "default": 256, - "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", - "minimum": 1, - "title": "#timestamps", - "type": "integer" - } - }, - "required": [ - "enabled", - "nr_of_subbands", - "nr_of_timestamps" - ], - "title": "File Conversion", - "type": "object" - }, - "inspection_plots": { - "decription": "Type of inspection plots to run", - "default": "msplots", - "enum": [ - "msplots", - "dynspec", - "none" - ], - "title": "Inspection Plots", - "type": "string" - }, - "plots": { - "additionalProperties": false, - "default": {}, - "description": "Create dynamic spectrum plots", - "properties": { - "autocorrelation": { - "default": true, - "description": "Create autocorrelation plots for all stations", - "title": "autocorrelation", - "type": "boolean" - }, - "crosscorrelation": { - "default": true, - "description": "Create crosscorrelation plots for all baselines", - "title": "crosscorrelation", - "type": "boolean" - }, - "enabled": { - "default": true, - "description": "Do/Don't create plots from the QA file from the observation", - "title": "enabled", - "type": "boolean" - } - }, - "required": [ - "enabled", - "autocorrelation", - "crosscorrelation" - ], - "title": "Plots", - "type": "object" - }, "beamformer": { "additionalProperties": false, "default": {}, @@ -12321,12 +11936,12 @@ "type": "integer" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {} }, "relative": { "default": false, - "description": "Angular offset applied to the TAB pointing", + "description": "The SAP pointing is added to the TAB pointing", "title": "Relative to SAP", "type": "boolean" } @@ -12439,11 +12054,12 @@ "type": "string" }, "station_groups": { - "$ref": "#/definitions/station_groups", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", "default": [ { "max_nr_missing": 1, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -12631,7 +12247,7 @@ "type": "string" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -12666,7 +12282,7 @@ "type": "integer" }, "integration_time": { - "$ref": "#/definitions/timedelta", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -12789,6 +12405,11 @@ ], "type": "string" }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, "pointing": { "additionalProperties": false, "properties": { @@ -12850,71 +12471,106 @@ ], "type": "string" }, - "station_configuration": { + "QA": { + "additionalProperties": false, "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", "properties": { - "SAPs": { - "$ref": "#/definitions/SAPs", - "default": [ - {} - ], - "minItems": 1 + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} }, - "antenna_set": { - "$ref": "#/definitions/antenna_set", - "default": "HBA_DUAL" + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" }, - "filter": { - "$ref": "#/definitions/filter", - "default": "HBA_110_190" + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" }, - "station_groups": { - "$ref": "#/definitions/station_groups", - "default": [ - { - "max_nr_missing": 4, - "stations": [ - "CS002", - "CS003", - "CS004", - "CS005", - "CS006", - "CS007", - "CS011", - "CS013", - "CS017", - "CS021", - "CS024", - "CS026", - "CS028", - "CS030", - "CS031", - "CS032", - "CS101", - "CS103", - "CS201", - "CS301", - "CS302", - "CS401", - "CS501" - ] - } - ] + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" }, - "tile_beam": { - "$ref": "#/definitions/pointing", - "default": {}, - "description": "HBA only", - "title": "Tile beam" + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" } }, "required": [ - "station_groups", - "antenna_set", - "filter", - "SAPs" + "enabled", + "nr_of_subbands", + "nr_of_timestamps" ], - "title": "station_configuration", + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", "type": "object" }, "SAPs": { @@ -12930,7 +12586,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -12970,6 +12626,17 @@ "title": "SAPs", "type": "array" }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, "antenna_set": { "default": "HBA_DUAL", "description": "Fields & antennas to use", @@ -12989,6 +12656,15 @@ "title": "Antenna set", "type": "string" }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, "antennas": { "description": "Structure to describe a set of specific antennafields", "properties": { @@ -13062,7 +12738,7 @@ "type": "integer" }, "station": { - "description": "These are all LOFAR (1 and 2) stations", + "description": "These are the LOFAR stations", "enum": [ "CS001", "CS002", @@ -13166,6 +12842,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -13200,6 +12877,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -13294,6 +12972,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -13342,6 +13021,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -13481,6 +13161,7 @@ "default": { "max_nr_missing": 6, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -13543,6 +13224,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -13610,7 +13292,7 @@ "default": { "max_nr_missing": 0, "stations": [ - "CS002" + "CS001" ] }, "description": "A custom group of stations which can be defined by the user", @@ -13628,35 +13310,6 @@ ], "title": "Custom", "type": "object" - }, - { - "additionalProperties": false, - "default": { - "max_nr_missing": 0, - "stations": [ - "CS001" - ] - }, - "description": "All LOFAR2 stations", - "properties": { - "max_nr_missing": { - "$ref": "#/definitions/max_number_of_missing_stations" - }, - "stations": { - "$ref": "#/definitions/station_list", - "enum": [ - [ - "CS001" - ] - ] - } - }, - "required": [ - "stations", - "max_nr_missing" - ], - "title": "LOFAR2", - "type": "object" } ], "default": { @@ -13709,6 +13362,74 @@ "type": "array", "uniqueItems": true }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, "task_connector": { "additionalProperties": false, "default": {}, @@ -13762,313 +13483,104 @@ "type": "object" } }, - "properties": { - "QA": { - "$ref": "#/definitions/QA", - "default": {} - }, - "correlator": { - "$ref": "#/definitions/correlator", - "default": {} - }, - "duration": { - "$id": "#duration", - "$ref": "#/definitions/timedelta", - "default": 600, - "description": "Duration of this observation (seconds)", - "minimum": 1, - "title": "Duration" - }, - "station_configuration": { - "$ref": "#/definitions/station_configuration", - "default": {} - } - } + "properties": {} }, - "type": "http://localhost:3000/api/task_type/observation", - "type_value": "observation" + "type": "http://localhost:3000/api/task_type/ingest", + "type_value": "ingest" }, { - "description": "This schema defines the parameters for a preprocessing pipeline.", - "name": "preprocessing pipeline", + "description": "This schema defines the parameters for an observation that forms tied-array beams in COBALT.", + "name": "beamforming observation", "purpose": "technical_commissioning", "schema": { - "$id": "http://localhost:3000/schemas/tasktemplate/preprocessing%20#", + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/beamforming%20observation/6#", "$schema": "http://json-schema.org/draft-06/schema#", "additionalProperties": false, - "description": "This schema defines the parameters for a preprocessing pipeline.", + "default": {}, + "description": "This schema defines the parameters for an observation that forms tied-array beams in COBALT.", "patternProperties": { "^[$]schema$": {} }, "properties": { - "average": { - "additionalProperties": false, - "default": {}, - "properties": { - "frequency_steps": { - "default": 4, - "minimum": 1, - "title": "Frequency steps", - "type": "integer" + "QA": { + "$ref": "#/definitions/QA", + "default": { + "file_conversion": { + "enabled": false }, - "time_steps": { - "default": 1, - "minimum": 1, - "title": "Time steps", - "type": "integer" + "inspection_plots": "msplots", + "plots": { + "enabled": false } - }, - "required": [ - "frequency_steps", - "time_steps" - ], - "title": "Averaging", - "type": "object" + } }, - "cluster_resources": { - "$ref": "#/definitions/cluster_resources", + "beamformer": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/beamforming/3#/definitions/beamformer", "default": {} }, - "demix": { - "additionalProperties": false, - "default": {}, - "properties": { - "frequency_steps": { - "default": 64, - "description": "Must be a multiple of the averaging frequency steps", - "minimum": 1, - "title": "Frequency steps", - "type": "integer" - }, - "ignore_target": { - "default": false, - "title": "Ignore target", - "type": "boolean" - }, - "sources": { - "additionalItems": false, - "items": { - "default": "CasA", - "enum": [ - "CasA", - "CygA", - "HerA", - "HydraA", - "TauA", - "VirA" - ], - "type": "string" - }, - "maxItems": 2, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "time_steps": { - "default": 10, - "description": "Must be a multiple of the averaging time steps", - "minimum": 1, - "title": "Time steps", - "type": "integer" - } - }, - "required": [], - "title": "Demixing", - "type": "object" - }, - "flag": { - "additionalProperties": false, - "default": {}, - "properties": { - "autocorrelations": { - "default": true, - "title": "Flag auto correlations", - "type": "boolean" - }, - "outerchannels": { - "default": true, - "title": "Flag outer channels", - "type": "boolean" - }, - "rfi_strategy": { - "default": "HBAdefault", - "enum": [ - "none", - "HBAdefault", - "LBAdefault" - ], - "title": "RFI flagging strategy", - "type": "string" - } - }, - "required": [ - "outerchannels", - "autocorrelations", - "rfi_strategy" - ], - "title": "Flagging", - "type": "object" + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 300, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" }, - "storagemanager": { - "default": "dysco", - "enum": [ - "standard", - "dysco" - ], - "title": "Storage Manager", - "type": "string" + "station_configuration": { + "$ref": "#/definitions/station_configuration", + "default": {} } }, "required": [ - "average" + "beamformer", + "duration", + "station_configuration" ], - "title": "preprocessing pipeline", + "title": "beamforming observation", "type": "object", - "version": 8 + "version": 6 }, - "state": "active", - "version": 8, + "state": "legacy", + "version": 6, "id": 9, "ref_resolved_schema": { "definitions": { - "QA": { + "beamformer": { "additionalProperties": false, "default": {}, - "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", "properties": { - "file_conversion": { - "$ref": "#/definitions/file_conversion", - "default": {} - }, - "inspection_plots": { - "$ref": "#/definitions/inspection_plots", - "default": "msplots" + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" }, - "plots": { - "$ref": "#/definitions/plots", - "default": {} - } - }, - "required": [ - "file_conversion", - "plots", - "inspection_plots" - ], - "title": "QA", - "type": "object" - }, - "file_conversion": { - "additionalProperties": false, - "default": {}, - "description": "Create a QA file for the observation", - "properties": { - "enabled": { - "default": true, - "description": "Do/Don't create a QA file for the observation", - "title": "enabled", + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", "type": "boolean" - }, - "nr_of_subbands": { - "default": -1, - "description": "Keep this number of subbands from the observation in the QA file, or all if -1", - "title": "#subbands", - "type": "integer" - }, - "nr_of_timestamps": { - "default": 256, - "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", - "minimum": 1, - "title": "#timestamps", - "type": "integer" } }, "required": [ - "enabled", - "nr_of_subbands", - "nr_of_timestamps" + "pipelines", + "ppf" ], - "title": "File Conversion", + "title": "Beamformer", "type": "object" }, - "inspection_plots": { - "decription": "Type of inspection plots to run", - "default": "msplots", - "enum": [ - "msplots", - "dynspec", - "none" - ], - "title": "Inspection Plots", - "type": "string" - }, - "plots": { + "beamformer_pipeline": { "additionalProperties": false, "default": {}, - "description": "Create dynamic spectrum plots", - "properties": { - "autocorrelation": { - "default": true, - "description": "Create autocorrelation plots for all stations", - "title": "autocorrelation", - "type": "boolean" - }, - "crosscorrelation": { - "default": true, - "description": "Create crosscorrelation plots for all baselines", - "title": "crosscorrelation", - "type": "boolean" - }, - "enabled": { - "default": true, - "description": "Do/Don't create plots from the QA file from the observation", - "title": "enabled", - "type": "boolean" - } - }, - "required": [ - "enabled", - "autocorrelation", - "crosscorrelation" - ], - "title": "Plots", - "type": "object" - }, - "beamformer": { - "additionalProperties": false, - "default": {}, - "properties": { - "pipelines": { - "additionalItems": false, - "default": [ - {} - ], - "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", - "items": { - "$ref": "#/definitions/beamformer_pipeline" - }, - "maxItems": 1, - "minItems": 1, - "title": "Pipelines", - "type": "array" - }, - "ppf": { - "default": false, - "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", - "title": "Use PPF when beamforming", - "type": "boolean" - } - }, - "required": [ - "pipelines", - "ppf" - ], - "title": "Beamformer", - "type": "object" - }, - "beamformer_pipeline": { - "additionalProperties": false, - "default": {}, - "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "headerTemplate": "Beamformer Pipeline {{ self.index }}", "properties": { "coherent": { "additionalProperties": false, @@ -14144,12 +13656,12 @@ "type": "integer" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {} }, "relative": { "default": false, - "description": "Angular offset applied to the TAB pointing", + "description": "The SAP pointing is added to the TAB pointing", "title": "Relative to SAP", "type": "boolean" } @@ -14262,11 +13774,12 @@ "type": "string" }, "station_groups": { - "$ref": "#/definitions/station_groups", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", "default": [ { "max_nr_missing": 1, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -14454,7 +13967,7 @@ "type": "string" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -14489,7 +14002,7 @@ "type": "integer" }, "integration_time": { - "$ref": "#/definitions/timedelta", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -14612,6 +14125,11 @@ ], "type": "string" }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, "pointing": { "additionalProperties": false, "properties": { @@ -14673,71 +14191,106 @@ ], "type": "string" }, - "station_configuration": { + "QA": { + "additionalProperties": false, "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", "properties": { - "SAPs": { - "$ref": "#/definitions/SAPs", - "default": [ - {} - ], - "minItems": 1 + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} }, - "antenna_set": { - "$ref": "#/definitions/antenna_set", - "default": "HBA_DUAL" + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" }, - "filter": { - "$ref": "#/definitions/filter", - "default": "HBA_110_190" + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" }, - "station_groups": { - "$ref": "#/definitions/station_groups", - "default": [ - { - "max_nr_missing": 4, - "stations": [ - "CS002", - "CS003", - "CS004", - "CS005", - "CS006", - "CS007", - "CS011", - "CS013", - "CS017", - "CS021", - "CS024", - "CS026", - "CS028", - "CS030", - "CS031", - "CS032", - "CS101", - "CS103", - "CS201", - "CS301", - "CS302", - "CS401", - "CS501" - ] - } - ] + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" }, - "tile_beam": { - "$ref": "#/definitions/pointing", - "default": {}, - "description": "HBA only", - "title": "Tile beam" + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" } }, "required": [ - "station_groups", - "antenna_set", - "filter", - "SAPs" + "enabled", + "nr_of_subbands", + "nr_of_timestamps" ], - "title": "station_configuration", + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", "type": "object" }, "SAPs": { @@ -14753,7 +14306,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -14793,6 +14346,17 @@ "title": "SAPs", "type": "array" }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, "antenna_set": { "default": "HBA_DUAL", "description": "Fields & antennas to use", @@ -14812,6 +14376,15 @@ "title": "Antenna set", "type": "string" }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, "antennas": { "description": "Structure to describe a set of specific antennafields", "properties": { @@ -14885,7 +14458,7 @@ "type": "integer" }, "station": { - "description": "These are all LOFAR (1 and 2) stations", + "description": "These are the LOFAR stations", "enum": [ "CS001", "CS002", @@ -14989,6 +14562,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -15023,6 +14597,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -15117,6 +14692,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -15165,6 +14741,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -15304,6 +14881,7 @@ "default": { "max_nr_missing": 6, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -15366,6 +14944,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -15433,7 +15012,7 @@ "default": { "max_nr_missing": 0, "stations": [ - "CS002" + "CS001" ] }, "description": "A custom group of stations which can be defined by the user", @@ -15451,35 +15030,6 @@ ], "title": "Custom", "type": "object" - }, - { - "additionalProperties": false, - "default": { - "max_nr_missing": 0, - "stations": [ - "CS001" - ] - }, - "description": "All LOFAR2 stations", - "properties": { - "max_nr_missing": { - "$ref": "#/definitions/max_number_of_missing_stations" - }, - "stations": { - "$ref": "#/definitions/station_list", - "enum": [ - [ - "CS001" - ] - ] - } - }, - "required": [ - "stations", - "max_nr_missing" - ], - "title": "LOFAR2", - "type": "object" } ], "default": { @@ -15532,6 +15082,26994 @@ "type": "array", "uniqueItems": true }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, + "task_connector": { + "additionalProperties": false, + "default": {}, + "description": "A task connector describes what a task can take as input and produces as output.", + "properties": { + "dataformat": { + "description": "The data type of a task connector describes in which format the data is produced/consumed.", + "enum": [ + "MeasurementSet", + "Beamformed", + "QA_HDF5", + "QA_Plots", + "pulp summary", + "pulp analysis" + ], + "title": "Data Format", + "type": "string" + }, + "datatype": { + "description": "The data type of a task connector describes its what kind of data is produced/consumed.", + "enum": [ + "visibilities", + "time series", + "instrument model", + "image", + "quality", + "pulsar profile" + ], + "title": "Data Type", + "type": "string" + }, + "role": { + "description": "The role of a task connector describes its intended use.", + "enum": [ + "correlator", + "beamformer", + "inspection plots", + "calibrator", + "target", + "any" + ], + "title": "Role", + "type": "string" + } + }, + "required": [ + "role", + "datatype", + "dataformat" + ], + "type": "object" + } + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": { + "file_conversion": { + "enabled": false + }, + "inspection_plots": "msplots", + "plots": { + "enabled": false + } + } + }, + "beamformer": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/beamforming/3#/definitions/beamformer", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 300, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "station_configuration": { + "$ref": "#/definitions/station_configuration", + "default": {} + } + } + }, + "type": "http://localhost:3000/api/task_type/observation", + "type_value": "observation" + }, + { + "description": "This schema defines the parameters for an observation that forms tied-array beams in COBALT.", + "name": "beamforming observation", + "purpose": "technical_commissioning", + "schema": { + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/beamforming%20observation/8#", + "$schema": "http://json-schema.org/draft-06/schema#", + "additionalProperties": false, + "default": {}, + "description": "This schema defines the parameters for an observation that forms tied-array beams in COBALT.", + "patternProperties": { + "^[$]schema$": {} + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": { + "file_conversion": { + "enabled": false + }, + "inspection_plots": "msplots", + "plots": { + "enabled": false + } + } + }, + "beamformer": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/beamforming/9#/definitions/beamformer", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 300, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "station_configuration": { + "$ref": "#/definitions/station_configuration", + "default": {} + } + }, + "required": [ + "beamformer", + "duration", + "station_configuration" + ], + "title": "beamforming observation", + "type": "object", + "version": 8 + }, + "state": "active", + "version": 8, + "id": 10, + "ref_resolved_schema": { + "definitions": { + "beamformer": { + "additionalProperties": false, + "default": {}, + "properties": { + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" + }, + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", + "type": "boolean" + } + }, + "required": [ + "pipelines", + "ppf" + ], + "title": "Beamformer", + "type": "object" + }, + "beamformer_pipeline": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "properties": { + "coherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [ + { + "name": "_SAP_name_", + "tabs": [] + } + ], + "description": "Which SAPs in the observation to beamform.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + }, + "tab_rings": { + "additonalProperties": false, + "default": {}, + "description": "Rings of TABs around the center of the beam.", + "properties": { + "count": { + "default": 0, + "maximum": 11, + "minimum": 0, + "title": "Number of rings", + "type": "integer" + }, + "width": { + "default": 0.01, + "description": "Distance between pointings.", + "minimum": 0, + "title": "Ring width", + "type": "number" + } + }, + "title": "Tied-Array Rings", + "type": "object" + }, + "tabs": { + "additionalItems": false, + "default": [], + "description": "Tied-array beams to form", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "TAB {{ self.index }}", + "properties": { + "allow_after_previous": { + "default": true, + "description": "This TAB can be recorded after the previous TAB, if duration allows.", + "title": "Allow after previous", + "type": "boolean" + }, + "duration": { + "default": 0, + "description": "Exposure time of the TAB. 0 = observation duration.", + "maximum": 0, + "minimum": 0, + "title": "Duration", + "type": "integer" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {} + }, + "relative": { + "default": false, + "description": "The SAP pointing is added to the TAB pointing", + "title": "Relative to SAP", + "type": "boolean" + } + }, + "required": [ + "pointing", + "relative" + ], + "title": "Tied-Array Beam", + "type": "object" + }, + "title": "Tied-Array Beams", + "type": "array" + } + }, + "required": [ + "name", + "tabs" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "SAPs", + "settings" + ], + "title": "Coherent Tied-Array Beams", + "type": "object" + }, + "flys eye": { + "additionalProperties": false, + "default": {}, + "description": "Produce beams containing the individual station signals", + "properties": { + "enabled": { + "default": false, + "title": "Enable Fly's Eye", + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "enabled" + ], + "title": "Fly's Eye Settings", + "type": "object" + }, + "incoherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [], + "description": "Which SAPs in the observation to create incoherent TABs for (empty list = all).", + "items": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + } + }, + "required": [ + "name", + "subbands" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "settings", + "SAPs" + ], + "title": "Incoherent Tied-Array Beams", + "type": "object" + }, + "name": { + "default": "_beamformer_name_", + "description": "Beamformer name, used for identification purposes.", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "description": "While observing, COBALT will beamform on the intersection of all stations in this list and the used stations in the observation. So, specifying all possible stations here means that all observation-stations are used. Specifying a small subset here means that only the observing-stations in this small list are used. By default we let COBALT beamform on the Core stations.", + "minItems": 1 + } + }, + "required": [ + "name" + ], + "title": "Beamformer Pipeline", + "type": "object" + }, + "stokes": { + "default": "I", + "description": "Which Stokes to produce", + "enum": [ + "I", + "IQUV", + "XXYY" + ], + "title": "Stokes", + "type": "string" + }, + "stokes_settings": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 1, + "description": "Number of frequency bands per subband", + "enum": [ + 1, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 1, + "title": "Channels/subband", + "type": "integer" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "properties": { + "bits": { + "default": 8, + "description": "Number of bits for a single value", + "enum": [ + 8 + ], + "title": "Bits/sample", + "type": "integer" + }, + "enabled": { + "default": false, + "title": "Output quantisation into integers", + "type": "boolean" + }, + "scale_max": { + "default": 5, + "description": "Cut off values above this treshold", + "title": "Maximum value", + "type": "number" + }, + "scale_min": { + "default": -5, + "description": "Cut off values below this treshold", + "title": "Minimum value", + "type": "number" + } + }, + "required": [ + "enabled", + "bits", + "scale_min", + "scale_max" + ], + "title": "Output quantisation settings", + "type": "object" + }, + "stokes": { + "$ref": "#/definitions/stokes", + "default": "I" + }, + "subbands_per_file": { + "default": 488, + "description": "The maximum number of subbands to write in each output dataproduct.", + "maximum": 488, + "minimum": 1, + "title": "Subbands per file", + "type": "integer" + }, + "time_integration_factor": { + "default": 1, + "description": "The number of samples to integrate over", + "maximum": 12288, + "minimum": 1, + "title": "Time integration", + "type": "integer" + } + }, + "required": [ + "stokes", + "time_integration_factor", + "channels_per_subband" + ], + "type": "object" + }, + "subband_selection": { + "additionalProperties": false, + "default": {}, + "properties": { + "list": { + "additionalItems": false, + "default": [], + "description": "If method is 'select subset', only beamform these subbands, and only if they occur in the SAP.", + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "minItems": 0, + "title": "Subset selection", + "type": "array" + }, + "method": { + "default": "copy", + "description": "How to select the subbands to beam form", + "enum": [ + "copy", + "largest continuous subset", + "select subset" + ], + "title": "Method", + "type": "string" + } + }, + "required": [ + "method" + ], + "title": "Subband selection", + "type": "object" + }, + "calibrator": { + "additionalProperties": false, + "default": {}, + "properties": { + "autoselect": { + "default": true, + "description": "Auto-select calibrator based on elevation", + "title": "Auto-select", + "type": "boolean" + }, + "name": { + "default": "calibrator", + "description": "Name of the calibrator SAP", + "title": "Name", + "type": "string" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "description": "Manually selected calibrator", + "title": "Digital pointing" + } + }, + "required": [ + "autoselect", + "pointing", + "name" + ], + "type": "object" + }, + "correlator": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 64, + "description": "Number of frequency bands per subband", + "enum": [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 8, + "title": "Channels/subband", + "type": "integer" + }, + "integration_time": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "default": 1, + "description": "Desired integration period (seconds)", + "minimum": 0.1, + "title": "Integration time" + }, + "storage_cluster": { + "default": "CEP4", + "description": "Cluster to write output to", + "enum": [ + "CEP4", + "DragNet" + ], + "title": "Storage cluster", + "type": "string" + }, + "topocentric_frequency_correction": { + "default": false, + "description": "Correct frequencies for the Doppler shift caused by the Earth's rotation.", + "title": "Topocentric Frequency Correction", + "type": "boolean" + } + } + }, + "timedelta": { + "default": 0, + "description": "A time duration or delta expressed in seconds", + "type": "number" + }, + "timestamp": { + "default": "1970-01-01T00:00:00Z", + "description": "A timestamp defined in UTC", + "format": "date-time", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d(\\.\\d+)?Z?", + "type": "string" + }, + "timewindow": { + "additionalProperties": false, + "description": "A timewindow interval: [from, to)", + "properties": { + "from": { + "$ref": "#/definitions/timestamp" + }, + "to": { + "$ref": "#/definitions/timestamp" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "cluster_resources": { + "additionalProperties": false, + "default": {}, + "description": "Which cluster resources to claim for this pipeline.", + "properties": { + "cores_per_task": { + "default": 2, + "description": "Number of cores to reserve for each process in the pipeline.", + "maximum": 24, + "minimum": 1, + "title": "Cores/task", + "type": "integer" + }, + "parallel_tasks": { + "default": 122, + "description": "Maximum number of tasks to run in parallel. Determines the size of the reservation. A smaller reservation results in a longer pipeline run. A bigger reservation results in more in resource waste.", + "maximum": 488, + "minimum": 1, + "title": "Max parallel tasks", + "type": "integer" + }, + "where": { + "additionalProperties": false, + "default": {}, + "description": "Where to run this pipeline.", + "properties": { + "cluster": { + "default": "CEP4", + "enum": [ + "CEP4" + ], + "title": "Cluster", + "type": "string" + }, + "partition": { + "default": "cpu", + "enum": [ + "cpu", + "gpu", + "testing" + ], + "title": "Partition", + "type": "string" + } + }, + "required": [ + "cluster", + "partition" + ], + "title": "Where", + "type": "object" + } + }, + "required": [ + "where", + "cores_per_task", + "parallel_tasks" + ], + "title": "Cluster resources", + "type": "object" + }, + "demix_strategy": { + "default": "auto", + "enum": [ + "auto", + "yes", + "no" + ], + "type": "string" + }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, + "pointing": { + "additionalProperties": false, + "properties": { + "angle1": { + "default": 0.6624317181687094, + "description": "First angle (e.g. RA)", + "title": "Angle 1", + "type": "number" + }, + "angle2": { + "default": 1.5579526427549426, + "description": "Second angle (e.g. DEC)", + "title": "Angle 2", + "type": "number" + }, + "direction_type": { + "default": "J2000", + "description": "", + "enum": [ + "J2000", + "AZELGEO", + "LMN", + "SUN", + "MOON", + "MERCURY", + "VENUS", + "MARS", + "JUPITER", + "SATURN", + "URANUS", + "NEPTUNE", + "PLUTO" + ], + "title": "Reference frame", + "type": "string" + }, + "target": { + "default": "_target_name_", + "description": "Description of where this beam points at", + "minLength": 1, + "title": "Target", + "type": "string" + } + }, + "required": [ + "angle1", + "angle2", + "target" + ], + "type": "object" + }, + "purpose": { + "default": "target", + "description": "The intended use of this pointing: calibrator, target or all sky", + "enum": [ + "calibrator", + "target", + "all sky" + ], + "type": "string" + }, + "QA": { + "additionalProperties": false, + "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", + "properties": { + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} + }, + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" + }, + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" + }, + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" + }, + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" + } + }, + "required": [ + "enabled", + "nr_of_subbands", + "nr_of_timestamps" + ], + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", + "type": "object" + }, + "SAPs": { + "additionalItems": false, + "default": [ + {} + ], + "description": "Station beams", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "{{ i0 }} - {{ self.name }}", + "properties": { + "digital_pointing": { + "$id": "#target_pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "title": "Digital pointing" + }, + "name": { + "default": "_SAP_name_", + "description": "Identifier for this beam", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "subbands": { + "additionalItems": false, + "default": [ + 255 + ], + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "maxItems": 488, + "minItems": 1, + "title": "Subband list", + "type": "array" + } + }, + "required": [ + "name", + "digital_pointing", + "subbands" + ], + "title": "SAP", + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, + "antenna_set": { + "default": "HBA_DUAL", + "description": "Fields & antennas to use", + "enum": [ + "HBA_DUAL", + "HBA_DUAL_INNER", + "HBA_ONE", + "HBA_ONE_INNER", + "HBA_ZERO", + "HBA_ZERO_INNER", + "LBA_INNER", + "LBA_OUTER", + "LBA_SPARSE_EVEN", + "LBA_SPARSE_ODD", + "LBA_ALL" + ], + "title": "Antenna set", + "type": "string" + }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, + "antennas": { + "description": "Structure to describe a set of specific antennafields", + "properties": { + "fields": { + "default": [], + "items": { + "properties": { + "field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Field", + "type": "string" + }, + "station": { + "$ref": "#/definitions/station" + }, + "type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "station", + "field", + "type" + ], + "title": "Field", + "type": "object" + }, + "title": "Fields", + "type": "array" + }, + "set": { + "$ref": "#/definitions/antenna_set", + "default": "HBA_DUAL" + } + }, + "required": [ + "fields" + ], + "title": "Antennas", + "type": "object" + }, + "filter": { + "default": "HBA_110_190", + "description": "Must match antenna type", + "enum": [ + "LBA_10_90", + "LBA_30_90", + "HBA_110_190", + "HBA_210_250" + ], + "title": "Band-pass filter", + "type": "string" + }, + "max_number_of_missing_stations": { + "default": 0, + "description": "Maximum number of stations that can be omitted from a group (due to maintenance for example)", + "minimum": 0, + "title": "Maximum number of stations to omit", + "type": "integer" + }, + "station": { + "description": "These are the LOFAR stations", + "enum": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "FR606", + "SE607", + "UK608", + "DE609", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ], + "title": "Station", + "type": "string" + }, + "station_group": { + "anyOf": [ + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "The group of all stations on the Superterp", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Superterp", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + }, + "description": "The group of all Core stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Core", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch remote stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Remote", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch (Core + Remote) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + }, + "description": "A subgroup of the international stations which are required when doing observation with international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International required", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 6, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all (Core + Remote + International) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", + "type": "object" + } + ], + "default": { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "A set of predefined list of stations, and a constraint on how many stations are allowed to be missing (due to maintenance for example)", + "title": "Station group", + "type": "object" + }, + "station_groups": { + "additionalItems": false, + "additionalProperties": false, + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "description": "One or more predefined or custom groups of stations", + "items": { + "$ref": "#/definitions/station_group" + }, + "minItems": 1, + "title": "Station groups", + "type": "array" + }, + "station_list": { + "additionalItems": false, + "additionalProperties": false, + "default": [], + "items": { + "$ref": "#/definitions/station" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, + "task_connector": { + "additionalProperties": false, + "default": {}, + "description": "A task connector describes what a task can take as input and produces as output.", + "properties": { + "dataformat": { + "description": "The data type of a task connector describes in which format the data is produced/consumed.", + "enum": [ + "MeasurementSet", + "Beamformed", + "QA_HDF5", + "QA_Plots", + "pulp summary", + "pulp analysis" + ], + "title": "Data Format", + "type": "string" + }, + "datatype": { + "description": "The data type of a task connector describes its what kind of data is produced/consumed.", + "enum": [ + "visibilities", + "time series", + "instrument model", + "image", + "quality", + "pulsar profile" + ], + "title": "Data Type", + "type": "string" + }, + "role": { + "description": "The role of a task connector describes its intended use.", + "enum": [ + "correlator", + "beamformer", + "inspection plots", + "calibrator", + "target", + "any" + ], + "title": "Role", + "type": "string" + } + }, + "required": [ + "role", + "datatype", + "dataformat" + ], + "type": "object" + } + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": { + "file_conversion": { + "enabled": false + }, + "inspection_plots": "msplots", + "plots": { + "enabled": false + } + } + }, + "beamformer": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/beamforming/9#/definitions/beamformer", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 300, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "station_configuration": { + "$ref": "#/definitions/station_configuration", + "default": {} + } + } + }, + "type": "http://localhost:3000/api/task_type/observation", + "type_value": "observation" + }, + { + "description": "This schema defines the (extra) parameters to setup a calibrator observation task, which uses all parameters from the target observation task which it is linked to, plus these calibrator overrides.", + "name": "calibrator observation", + "purpose": "technical_commissioning", + "schema": { + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/calibrator%20observation/8#", + "$schema": "http://json-schema.org/draft-06/schema#", + "additionalProperties": false, + "default": {}, + "description": "This schema defines the (extra) parameters to setup a calibrator observation task, which uses all parameters from the target observation task which it is linked to, plus these calibrator overrides.", + "patternProperties": { + "^[$]schema$": {} + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": {} + }, + "calibrator": { + "$ref": "#/definitions/calibrator", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 600, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "use_target_beamformer": { + "default": true, + "description": "Add same beamformer as on target?", + "title": "Beamformer", + "type": "boolean" + } + }, + "required": [ + "calibrator", + "duration" + ], + "title": "calibrator observation", + "version": 8 + }, + "state": "legacy", + "version": 8, + "id": 11, + "ref_resolved_schema": { + "definitions": { + "beamformer": { + "additionalProperties": false, + "default": {}, + "properties": { + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" + }, + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", + "type": "boolean" + } + }, + "required": [ + "pipelines", + "ppf" + ], + "title": "Beamformer", + "type": "object" + }, + "beamformer_pipeline": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "properties": { + "coherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [ + { + "name": "_SAP_name_", + "tabs": [] + } + ], + "description": "Which SAPs in the observation to beamform.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + }, + "tab_rings": { + "additonalProperties": false, + "default": {}, + "description": "Rings of TABs around the center of the beam.", + "properties": { + "count": { + "default": 0, + "maximum": 11, + "minimum": 0, + "title": "Number of rings", + "type": "integer" + }, + "width": { + "default": 0.01, + "description": "Distance between pointings.", + "minimum": 0, + "title": "Ring width", + "type": "number" + } + }, + "title": "Tied-Array Rings", + "type": "object" + }, + "tabs": { + "additionalItems": false, + "default": [], + "description": "Tied-array beams to form", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "TAB {{ self.index }}", + "properties": { + "allow_after_previous": { + "default": true, + "description": "This TAB can be recorded after the previous TAB, if duration allows.", + "title": "Allow after previous", + "type": "boolean" + }, + "duration": { + "default": 0, + "description": "Exposure time of the TAB. 0 = observation duration.", + "maximum": 0, + "minimum": 0, + "title": "Duration", + "type": "integer" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {} + }, + "relative": { + "default": false, + "description": "The SAP pointing is added to the TAB pointing", + "title": "Relative to SAP", + "type": "boolean" + } + }, + "required": [ + "pointing", + "relative" + ], + "title": "Tied-Array Beam", + "type": "object" + }, + "title": "Tied-Array Beams", + "type": "array" + } + }, + "required": [ + "name", + "tabs" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "SAPs", + "settings" + ], + "title": "Coherent Tied-Array Beams", + "type": "object" + }, + "flys eye": { + "additionalProperties": false, + "default": {}, + "description": "Produce beams containing the individual station signals", + "properties": { + "enabled": { + "default": false, + "title": "Enable Fly's Eye", + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "enabled" + ], + "title": "Fly's Eye Settings", + "type": "object" + }, + "incoherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [], + "description": "Which SAPs in the observation to create incoherent TABs for (empty list = all).", + "items": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + } + }, + "required": [ + "name", + "subbands" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "settings", + "SAPs" + ], + "title": "Incoherent Tied-Array Beams", + "type": "object" + }, + "name": { + "default": "_beamformer_name_", + "description": "Beamformer name, used for identification purposes.", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "description": "While observing, COBALT will beamform on the intersection of all stations in this list and the used stations in the observation. So, specifying all possible stations here means that all observation-stations are used. Specifying a small subset here means that only the observing-stations in this small list are used. By default we let COBALT beamform on the Core stations.", + "minItems": 1 + } + }, + "required": [ + "name" + ], + "title": "Beamformer Pipeline", + "type": "object" + }, + "stokes": { + "default": "I", + "description": "Which Stokes to produce", + "enum": [ + "I", + "IQUV", + "XXYY" + ], + "title": "Stokes", + "type": "string" + }, + "stokes_settings": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 1, + "description": "Number of frequency bands per subband", + "enum": [ + 1, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 1, + "title": "Channels/subband", + "type": "integer" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "properties": { + "bits": { + "default": 8, + "description": "Number of bits for a single value", + "enum": [ + 8 + ], + "title": "Bits/sample", + "type": "integer" + }, + "enabled": { + "default": false, + "title": "Output quantisation into integers", + "type": "boolean" + }, + "scale_max": { + "default": 5, + "description": "Cut off values above this treshold", + "title": "Maximum value", + "type": "number" + }, + "scale_min": { + "default": -5, + "description": "Cut off values below this treshold", + "title": "Minimum value", + "type": "number" + } + }, + "required": [ + "enabled", + "bits", + "scale_min", + "scale_max" + ], + "title": "Output quantisation settings", + "type": "object" + }, + "stokes": { + "$ref": "#/definitions/stokes", + "default": "I" + }, + "subbands_per_file": { + "default": 488, + "description": "The maximum number of subbands to write in each output dataproduct.", + "maximum": 488, + "minimum": 1, + "title": "Subbands per file", + "type": "integer" + }, + "time_integration_factor": { + "default": 1, + "description": "The number of samples to integrate over", + "maximum": 12288, + "minimum": 1, + "title": "Time integration", + "type": "integer" + } + }, + "required": [ + "stokes", + "time_integration_factor", + "channels_per_subband" + ], + "type": "object" + }, + "subband_selection": { + "additionalProperties": false, + "default": {}, + "properties": { + "list": { + "additionalItems": false, + "default": [], + "description": "If method is 'select subset', only beamform these subbands, and only if they occur in the SAP.", + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "minItems": 0, + "title": "Subset selection", + "type": "array" + }, + "method": { + "default": "copy", + "description": "How to select the subbands to beam form", + "enum": [ + "copy", + "largest continuous subset", + "select subset" + ], + "title": "Method", + "type": "string" + } + }, + "required": [ + "method" + ], + "title": "Subband selection", + "type": "object" + }, + "calibrator": { + "additionalProperties": false, + "default": {}, + "properties": { + "autoselect": { + "default": true, + "description": "Auto-select calibrator based on elevation", + "title": "Auto-select", + "type": "boolean" + }, + "name": { + "default": "calibrator", + "description": "Name of the calibrator SAP", + "title": "Name", + "type": "string" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "description": "Manually selected calibrator", + "title": "Digital pointing" + } + }, + "required": [ + "autoselect", + "pointing", + "name" + ], + "type": "object" + }, + "correlator": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 64, + "description": "Number of frequency bands per subband", + "enum": [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 8, + "title": "Channels/subband", + "type": "integer" + }, + "integration_time": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "default": 1, + "description": "Desired integration period (seconds)", + "minimum": 0.1, + "title": "Integration time" + }, + "storage_cluster": { + "default": "CEP4", + "description": "Cluster to write output to", + "enum": [ + "CEP4", + "DragNet" + ], + "title": "Storage cluster", + "type": "string" + }, + "topocentric_frequency_correction": { + "default": false, + "description": "Correct frequencies for the Doppler shift caused by the Earth's rotation.", + "title": "Topocentric Frequency Correction", + "type": "boolean" + } + } + }, + "timedelta": { + "default": 0, + "description": "A time duration or delta expressed in seconds", + "type": "number" + }, + "timestamp": { + "default": "1970-01-01T00:00:00Z", + "description": "A timestamp defined in UTC", + "format": "date-time", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d(\\.\\d+)?Z?", + "type": "string" + }, + "timewindow": { + "additionalProperties": false, + "description": "A timewindow interval: [from, to)", + "properties": { + "from": { + "$ref": "#/definitions/timestamp" + }, + "to": { + "$ref": "#/definitions/timestamp" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "cluster_resources": { + "additionalProperties": false, + "default": {}, + "description": "Which cluster resources to claim for this pipeline.", + "properties": { + "cores_per_task": { + "default": 2, + "description": "Number of cores to reserve for each process in the pipeline.", + "maximum": 24, + "minimum": 1, + "title": "Cores/task", + "type": "integer" + }, + "parallel_tasks": { + "default": 122, + "description": "Maximum number of tasks to run in parallel. Determines the size of the reservation. A smaller reservation results in a longer pipeline run. A bigger reservation results in more in resource waste.", + "maximum": 488, + "minimum": 1, + "title": "Max parallel tasks", + "type": "integer" + }, + "where": { + "additionalProperties": false, + "default": {}, + "description": "Where to run this pipeline.", + "properties": { + "cluster": { + "default": "CEP4", + "enum": [ + "CEP4" + ], + "title": "Cluster", + "type": "string" + }, + "partition": { + "default": "cpu", + "enum": [ + "cpu", + "gpu", + "testing" + ], + "title": "Partition", + "type": "string" + } + }, + "required": [ + "cluster", + "partition" + ], + "title": "Where", + "type": "object" + } + }, + "required": [ + "where", + "cores_per_task", + "parallel_tasks" + ], + "title": "Cluster resources", + "type": "object" + }, + "demix_strategy": { + "default": "auto", + "enum": [ + "auto", + "yes", + "no" + ], + "type": "string" + }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, + "pointing": { + "additionalProperties": false, + "properties": { + "angle1": { + "default": 0.6624317181687094, + "description": "First angle (e.g. RA)", + "title": "Angle 1", + "type": "number" + }, + "angle2": { + "default": 1.5579526427549426, + "description": "Second angle (e.g. DEC)", + "title": "Angle 2", + "type": "number" + }, + "direction_type": { + "default": "J2000", + "description": "", + "enum": [ + "J2000", + "AZELGEO", + "LMN", + "SUN", + "MOON", + "MERCURY", + "VENUS", + "MARS", + "JUPITER", + "SATURN", + "URANUS", + "NEPTUNE", + "PLUTO" + ], + "title": "Reference frame", + "type": "string" + }, + "target": { + "default": "_target_name_", + "description": "Description of where this beam points at", + "minLength": 1, + "title": "Target", + "type": "string" + } + }, + "required": [ + "angle1", + "angle2", + "target" + ], + "type": "object" + }, + "purpose": { + "default": "target", + "description": "The intended use of this pointing: calibrator, target or all sky", + "enum": [ + "calibrator", + "target", + "all sky" + ], + "type": "string" + }, + "QA": { + "additionalProperties": false, + "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", + "properties": { + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} + }, + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" + }, + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" + }, + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" + }, + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" + } + }, + "required": [ + "enabled", + "nr_of_subbands", + "nr_of_timestamps" + ], + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", + "type": "object" + }, + "SAPs": { + "additionalItems": false, + "default": [ + {} + ], + "description": "Station beams", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "{{ i0 }} - {{ self.name }}", + "properties": { + "digital_pointing": { + "$id": "#target_pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "title": "Digital pointing" + }, + "name": { + "default": "_SAP_name_", + "description": "Identifier for this beam", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "subbands": { + "additionalItems": false, + "default": [ + 255 + ], + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "maxItems": 488, + "minItems": 1, + "title": "Subband list", + "type": "array" + } + }, + "required": [ + "name", + "digital_pointing", + "subbands" + ], + "title": "SAP", + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, + "antenna_set": { + "default": "HBA_DUAL", + "description": "Fields & antennas to use", + "enum": [ + "HBA_DUAL", + "HBA_DUAL_INNER", + "HBA_ONE", + "HBA_ONE_INNER", + "HBA_ZERO", + "HBA_ZERO_INNER", + "LBA_INNER", + "LBA_OUTER", + "LBA_SPARSE_EVEN", + "LBA_SPARSE_ODD", + "LBA_ALL" + ], + "title": "Antenna set", + "type": "string" + }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, + "antennas": { + "description": "Structure to describe a set of specific antennafields", + "properties": { + "fields": { + "default": [], + "items": { + "properties": { + "field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Field", + "type": "string" + }, + "station": { + "$ref": "#/definitions/station" + }, + "type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "station", + "field", + "type" + ], + "title": "Field", + "type": "object" + }, + "title": "Fields", + "type": "array" + }, + "set": { + "$ref": "#/definitions/antenna_set", + "default": "HBA_DUAL" + } + }, + "required": [ + "fields" + ], + "title": "Antennas", + "type": "object" + }, + "filter": { + "default": "HBA_110_190", + "description": "Must match antenna type", + "enum": [ + "LBA_10_90", + "LBA_30_90", + "HBA_110_190", + "HBA_210_250" + ], + "title": "Band-pass filter", + "type": "string" + }, + "max_number_of_missing_stations": { + "default": 0, + "description": "Maximum number of stations that can be omitted from a group (due to maintenance for example)", + "minimum": 0, + "title": "Maximum number of stations to omit", + "type": "integer" + }, + "station": { + "description": "These are the LOFAR stations", + "enum": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "FR606", + "SE607", + "UK608", + "DE609", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ], + "title": "Station", + "type": "string" + }, + "station_group": { + "anyOf": [ + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "The group of all stations on the Superterp", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Superterp", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + }, + "description": "The group of all Core stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Core", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch remote stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Remote", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch (Core + Remote) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + }, + "description": "A subgroup of the international stations which are required when doing observation with international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International required", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 6, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all (Core + Remote + International) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", + "type": "object" + } + ], + "default": { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "A set of predefined list of stations, and a constraint on how many stations are allowed to be missing (due to maintenance for example)", + "title": "Station group", + "type": "object" + }, + "station_groups": { + "additionalItems": false, + "additionalProperties": false, + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "description": "One or more predefined or custom groups of stations", + "items": { + "$ref": "#/definitions/station_group" + }, + "minItems": 1, + "title": "Station groups", + "type": "array" + }, + "station_list": { + "additionalItems": false, + "additionalProperties": false, + "default": [], + "items": { + "$ref": "#/definitions/station" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, + "task_connector": { + "additionalProperties": false, + "default": {}, + "description": "A task connector describes what a task can take as input and produces as output.", + "properties": { + "dataformat": { + "description": "The data type of a task connector describes in which format the data is produced/consumed.", + "enum": [ + "MeasurementSet", + "Beamformed", + "QA_HDF5", + "QA_Plots", + "pulp summary", + "pulp analysis" + ], + "title": "Data Format", + "type": "string" + }, + "datatype": { + "description": "The data type of a task connector describes its what kind of data is produced/consumed.", + "enum": [ + "visibilities", + "time series", + "instrument model", + "image", + "quality", + "pulsar profile" + ], + "title": "Data Type", + "type": "string" + }, + "role": { + "description": "The role of a task connector describes its intended use.", + "enum": [ + "correlator", + "beamformer", + "inspection plots", + "calibrator", + "target", + "any" + ], + "title": "Role", + "type": "string" + } + }, + "required": [ + "role", + "datatype", + "dataformat" + ], + "type": "object" + } + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": {} + }, + "calibrator": { + "$ref": "#/definitions/calibrator", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 600, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "use_target_beamformer": { + "default": true, + "description": "Add same beamformer as on target?", + "title": "Beamformer", + "type": "boolean" + } + } + }, + "type": "http://localhost:3000/api/task_type/observation", + "type_value": "observation" + }, + { + "description": "This schema defines the (extra) parameters to setup a calibrator observation task, which uses all parameters from the target observation task which it is linked to, plus these calibrator overrides.", + "name": "calibrator observation", + "purpose": "technical_commissioning", + "schema": { + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/calibrator%20observation/9#", + "$schema": "http://json-schema.org/draft-06/schema#", + "additionalProperties": false, + "default": {}, + "description": "This schema defines the (extra) parameters to setup a calibrator observation task, which uses all parameters from the target observation task which it is linked to, plus these calibrator overrides.", + "patternProperties": { + "^[$]schema$": {} + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": {} + }, + "calibrator": { + "$ref": "#/definitions/calibrator", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 600, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "use_target_beamformer": { + "default": true, + "description": "Add same beamformer as on target?", + "title": "Beamformer", + "type": "boolean" + } + }, + "required": [ + "calibrator", + "duration" + ], + "title": "calibrator observation", + "version": 9 + }, + "state": "active", + "version": 9, + "id": 12, + "ref_resolved_schema": { + "definitions": { + "beamformer": { + "additionalProperties": false, + "default": {}, + "properties": { + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" + }, + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", + "type": "boolean" + } + }, + "required": [ + "pipelines", + "ppf" + ], + "title": "Beamformer", + "type": "object" + }, + "beamformer_pipeline": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "properties": { + "coherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [ + { + "name": "_SAP_name_", + "tabs": [] + } + ], + "description": "Which SAPs in the observation to beamform.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + }, + "tab_rings": { + "additonalProperties": false, + "default": {}, + "description": "Rings of TABs around the center of the beam.", + "properties": { + "count": { + "default": 0, + "maximum": 11, + "minimum": 0, + "title": "Number of rings", + "type": "integer" + }, + "width": { + "default": 0.01, + "description": "Distance between pointings.", + "minimum": 0, + "title": "Ring width", + "type": "number" + } + }, + "title": "Tied-Array Rings", + "type": "object" + }, + "tabs": { + "additionalItems": false, + "default": [], + "description": "Tied-array beams to form", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "TAB {{ self.index }}", + "properties": { + "allow_after_previous": { + "default": true, + "description": "This TAB can be recorded after the previous TAB, if duration allows.", + "title": "Allow after previous", + "type": "boolean" + }, + "duration": { + "default": 0, + "description": "Exposure time of the TAB. 0 = observation duration.", + "maximum": 0, + "minimum": 0, + "title": "Duration", + "type": "integer" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {} + }, + "relative": { + "default": false, + "description": "The SAP pointing is added to the TAB pointing", + "title": "Relative to SAP", + "type": "boolean" + } + }, + "required": [ + "pointing", + "relative" + ], + "title": "Tied-Array Beam", + "type": "object" + }, + "title": "Tied-Array Beams", + "type": "array" + } + }, + "required": [ + "name", + "tabs" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "SAPs", + "settings" + ], + "title": "Coherent Tied-Array Beams", + "type": "object" + }, + "flys eye": { + "additionalProperties": false, + "default": {}, + "description": "Produce beams containing the individual station signals", + "properties": { + "enabled": { + "default": false, + "title": "Enable Fly's Eye", + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "enabled" + ], + "title": "Fly's Eye Settings", + "type": "object" + }, + "incoherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [], + "description": "Which SAPs in the observation to create incoherent TABs for (empty list = all).", + "items": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + } + }, + "required": [ + "name", + "subbands" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "settings", + "SAPs" + ], + "title": "Incoherent Tied-Array Beams", + "type": "object" + }, + "name": { + "default": "_beamformer_name_", + "description": "Beamformer name, used for identification purposes.", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "description": "While observing, COBALT will beamform on the intersection of all stations in this list and the used stations in the observation. So, specifying all possible stations here means that all observation-stations are used. Specifying a small subset here means that only the observing-stations in this small list are used. By default we let COBALT beamform on the Core stations.", + "minItems": 1 + } + }, + "required": [ + "name" + ], + "title": "Beamformer Pipeline", + "type": "object" + }, + "stokes": { + "default": "I", + "description": "Which Stokes to produce", + "enum": [ + "I", + "IQUV", + "XXYY" + ], + "title": "Stokes", + "type": "string" + }, + "stokes_settings": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 1, + "description": "Number of frequency bands per subband", + "enum": [ + 1, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 1, + "title": "Channels/subband", + "type": "integer" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "properties": { + "bits": { + "default": 8, + "description": "Number of bits for a single value", + "enum": [ + 8 + ], + "title": "Bits/sample", + "type": "integer" + }, + "enabled": { + "default": false, + "title": "Output quantisation into integers", + "type": "boolean" + }, + "scale_max": { + "default": 5, + "description": "Cut off values above this treshold", + "title": "Maximum value", + "type": "number" + }, + "scale_min": { + "default": -5, + "description": "Cut off values below this treshold", + "title": "Minimum value", + "type": "number" + } + }, + "required": [ + "enabled", + "bits", + "scale_min", + "scale_max" + ], + "title": "Output quantisation settings", + "type": "object" + }, + "stokes": { + "$ref": "#/definitions/stokes", + "default": "I" + }, + "subbands_per_file": { + "default": 488, + "description": "The maximum number of subbands to write in each output dataproduct.", + "maximum": 488, + "minimum": 1, + "title": "Subbands per file", + "type": "integer" + }, + "time_integration_factor": { + "default": 1, + "description": "The number of samples to integrate over", + "maximum": 12288, + "minimum": 1, + "title": "Time integration", + "type": "integer" + } + }, + "required": [ + "stokes", + "time_integration_factor", + "channels_per_subband" + ], + "type": "object" + }, + "subband_selection": { + "additionalProperties": false, + "default": {}, + "properties": { + "list": { + "additionalItems": false, + "default": [], + "description": "If method is 'select subset', only beamform these subbands, and only if they occur in the SAP.", + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "minItems": 0, + "title": "Subset selection", + "type": "array" + }, + "method": { + "default": "copy", + "description": "How to select the subbands to beam form", + "enum": [ + "copy", + "largest continuous subset", + "select subset" + ], + "title": "Method", + "type": "string" + } + }, + "required": [ + "method" + ], + "title": "Subband selection", + "type": "object" + }, + "calibrator": { + "additionalProperties": false, + "default": {}, + "properties": { + "autoselect": { + "default": true, + "description": "Auto-select calibrator based on elevation", + "title": "Auto-select", + "type": "boolean" + }, + "name": { + "default": "calibrator", + "description": "Name of the calibrator SAP", + "title": "Name", + "type": "string" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "description": "Manually selected calibrator", + "title": "Digital pointing" + } + }, + "required": [ + "autoselect", + "pointing", + "name" + ], + "type": "object" + }, + "correlator": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 64, + "description": "Number of frequency bands per subband", + "enum": [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 8, + "title": "Channels/subband", + "type": "integer" + }, + "integration_time": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "default": 1, + "description": "Desired integration period (seconds)", + "minimum": 0.1, + "title": "Integration time" + }, + "storage_cluster": { + "default": "CEP4", + "description": "Cluster to write output to", + "enum": [ + "CEP4", + "DragNet" + ], + "title": "Storage cluster", + "type": "string" + }, + "topocentric_frequency_correction": { + "default": false, + "description": "Correct frequencies for the Doppler shift caused by the Earth's rotation.", + "title": "Topocentric Frequency Correction", + "type": "boolean" + } + } + }, + "timedelta": { + "default": 0, + "description": "A time duration or delta expressed in seconds", + "type": "number" + }, + "timestamp": { + "default": "1970-01-01T00:00:00Z", + "description": "A timestamp defined in UTC", + "format": "date-time", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d(\\.\\d+)?Z?", + "type": "string" + }, + "timewindow": { + "additionalProperties": false, + "description": "A timewindow interval: [from, to)", + "properties": { + "from": { + "$ref": "#/definitions/timestamp" + }, + "to": { + "$ref": "#/definitions/timestamp" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "cluster_resources": { + "additionalProperties": false, + "default": {}, + "description": "Which cluster resources to claim for this pipeline.", + "properties": { + "cores_per_task": { + "default": 2, + "description": "Number of cores to reserve for each process in the pipeline.", + "maximum": 24, + "minimum": 1, + "title": "Cores/task", + "type": "integer" + }, + "parallel_tasks": { + "default": 122, + "description": "Maximum number of tasks to run in parallel. Determines the size of the reservation. A smaller reservation results in a longer pipeline run. A bigger reservation results in more in resource waste.", + "maximum": 488, + "minimum": 1, + "title": "Max parallel tasks", + "type": "integer" + }, + "where": { + "additionalProperties": false, + "default": {}, + "description": "Where to run this pipeline.", + "properties": { + "cluster": { + "default": "CEP4", + "enum": [ + "CEP4" + ], + "title": "Cluster", + "type": "string" + }, + "partition": { + "default": "cpu", + "enum": [ + "cpu", + "gpu", + "testing" + ], + "title": "Partition", + "type": "string" + } + }, + "required": [ + "cluster", + "partition" + ], + "title": "Where", + "type": "object" + } + }, + "required": [ + "where", + "cores_per_task", + "parallel_tasks" + ], + "title": "Cluster resources", + "type": "object" + }, + "demix_strategy": { + "default": "auto", + "enum": [ + "auto", + "yes", + "no" + ], + "type": "string" + }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, + "pointing": { + "additionalProperties": false, + "properties": { + "angle1": { + "default": 0.6624317181687094, + "description": "First angle (e.g. RA)", + "title": "Angle 1", + "type": "number" + }, + "angle2": { + "default": 1.5579526427549426, + "description": "Second angle (e.g. DEC)", + "title": "Angle 2", + "type": "number" + }, + "direction_type": { + "default": "J2000", + "description": "", + "enum": [ + "J2000", + "AZELGEO", + "LMN", + "SUN", + "MOON", + "MERCURY", + "VENUS", + "MARS", + "JUPITER", + "SATURN", + "URANUS", + "NEPTUNE", + "PLUTO" + ], + "title": "Reference frame", + "type": "string" + }, + "target": { + "default": "_target_name_", + "description": "Description of where this beam points at", + "minLength": 1, + "title": "Target", + "type": "string" + } + }, + "required": [ + "angle1", + "angle2", + "target" + ], + "type": "object" + }, + "purpose": { + "default": "target", + "description": "The intended use of this pointing: calibrator, target or all sky", + "enum": [ + "calibrator", + "target", + "all sky" + ], + "type": "string" + }, + "QA": { + "additionalProperties": false, + "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", + "properties": { + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} + }, + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" + }, + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" + }, + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" + }, + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" + } + }, + "required": [ + "enabled", + "nr_of_subbands", + "nr_of_timestamps" + ], + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", + "type": "object" + }, + "SAPs": { + "additionalItems": false, + "default": [ + {} + ], + "description": "Station beams", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "{{ i0 }} - {{ self.name }}", + "properties": { + "digital_pointing": { + "$id": "#target_pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "title": "Digital pointing" + }, + "name": { + "default": "_SAP_name_", + "description": "Identifier for this beam", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "subbands": { + "additionalItems": false, + "default": [ + 255 + ], + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "maxItems": 488, + "minItems": 1, + "title": "Subband list", + "type": "array" + } + }, + "required": [ + "name", + "digital_pointing", + "subbands" + ], + "title": "SAP", + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, + "antenna_set": { + "default": "HBA_DUAL", + "description": "Fields & antennas to use", + "enum": [ + "HBA_DUAL", + "HBA_DUAL_INNER", + "HBA_ONE", + "HBA_ONE_INNER", + "HBA_ZERO", + "HBA_ZERO_INNER", + "LBA_INNER", + "LBA_OUTER", + "LBA_SPARSE_EVEN", + "LBA_SPARSE_ODD", + "LBA_ALL" + ], + "title": "Antenna set", + "type": "string" + }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, + "antennas": { + "description": "Structure to describe a set of specific antennafields", + "properties": { + "fields": { + "default": [], + "items": { + "properties": { + "field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Field", + "type": "string" + }, + "station": { + "$ref": "#/definitions/station" + }, + "type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "station", + "field", + "type" + ], + "title": "Field", + "type": "object" + }, + "title": "Fields", + "type": "array" + }, + "set": { + "$ref": "#/definitions/antenna_set", + "default": "HBA_DUAL" + } + }, + "required": [ + "fields" + ], + "title": "Antennas", + "type": "object" + }, + "filter": { + "default": "HBA_110_190", + "description": "Must match antenna type", + "enum": [ + "LBA_10_90", + "LBA_30_90", + "HBA_110_190", + "HBA_210_250" + ], + "title": "Band-pass filter", + "type": "string" + }, + "max_number_of_missing_stations": { + "default": 0, + "description": "Maximum number of stations that can be omitted from a group (due to maintenance for example)", + "minimum": 0, + "title": "Maximum number of stations to omit", + "type": "integer" + }, + "station": { + "description": "These are the LOFAR stations", + "enum": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "FR606", + "SE607", + "UK608", + "DE609", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ], + "title": "Station", + "type": "string" + }, + "station_group": { + "anyOf": [ + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "The group of all stations on the Superterp", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Superterp", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + }, + "description": "The group of all Core stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Core", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch remote stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Remote", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch (Core + Remote) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + }, + "description": "A subgroup of the international stations which are required when doing observation with international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International required", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 6, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all (Core + Remote + International) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", + "type": "object" + } + ], + "default": { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "A set of predefined list of stations, and a constraint on how many stations are allowed to be missing (due to maintenance for example)", + "title": "Station group", + "type": "object" + }, + "station_groups": { + "additionalItems": false, + "additionalProperties": false, + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "description": "One or more predefined or custom groups of stations", + "items": { + "$ref": "#/definitions/station_group" + }, + "minItems": 1, + "title": "Station groups", + "type": "array" + }, + "station_list": { + "additionalItems": false, + "additionalProperties": false, + "default": [], + "items": { + "$ref": "#/definitions/station" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, + "task_connector": { + "additionalProperties": false, + "default": {}, + "description": "A task connector describes what a task can take as input and produces as output.", + "properties": { + "dataformat": { + "description": "The data type of a task connector describes in which format the data is produced/consumed.", + "enum": [ + "MeasurementSet", + "Beamformed", + "QA_HDF5", + "QA_Plots", + "pulp summary", + "pulp analysis" + ], + "title": "Data Format", + "type": "string" + }, + "datatype": { + "description": "The data type of a task connector describes its what kind of data is produced/consumed.", + "enum": [ + "visibilities", + "time series", + "instrument model", + "image", + "quality", + "pulsar profile" + ], + "title": "Data Type", + "type": "string" + }, + "role": { + "description": "The role of a task connector describes its intended use.", + "enum": [ + "correlator", + "beamformer", + "inspection plots", + "calibrator", + "target", + "any" + ], + "title": "Role", + "type": "string" + } + }, + "required": [ + "role", + "datatype", + "dataformat" + ], + "type": "object" + } + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": {} + }, + "calibrator": { + "$ref": "#/definitions/calibrator", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 600, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "use_target_beamformer": { + "default": true, + "description": "Add same beamformer as on target?", + "title": "Beamformer", + "type": "boolean" + } + } + }, + "type": "http://localhost:3000/api/task_type/observation", + "type_value": "observation" + }, + { + "description": "This schema combines the calibrator, target and beamformer observation task schema's for parallel observing.", + "name": "parallel calibrator target and beamforming observation", + "purpose": "technical_commissioning", + "schema": { + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/parallel%20calibrator%20target%20and%20beamforming%20observation/5#", + "$schema": "http://json-schema.org/draft-06/schema#", + "additionalProperties": false, + "description": "This schema combines the calibrator, target and beamformer observation task schema's for parallel observing.", + "patternProperties": { + "^[$]schema$": {} + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": {} + }, + "beamformer": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/beamforming/9#/definitions/beamformer", + "default": {} + }, + "calibrator": { + "$ref": "#/definitions/calibrator", + "default": {} + }, + "correlator": { + "$ref": "#/definitions/correlator", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 600, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "station_configuration": { + "$ref": "#/definitions/station_configuration", + "default": {} + } + }, + "required": [ + "calibrator", + "correlator", + "duration", + "station_configuration", + "beamformer" + ], + "title": "parallel calibrator target and beamforming observation", + "type": "object", + "version": 5 + }, + "state": "active", + "version": 5, + "id": 13, + "ref_resolved_schema": { + "definitions": { + "beamformer": { + "additionalProperties": false, + "default": {}, + "properties": { + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" + }, + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", + "type": "boolean" + } + }, + "required": [ + "pipelines", + "ppf" + ], + "title": "Beamformer", + "type": "object" + }, + "beamformer_pipeline": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "properties": { + "coherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [ + { + "name": "_SAP_name_", + "tabs": [] + } + ], + "description": "Which SAPs in the observation to beamform.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + }, + "tab_rings": { + "additonalProperties": false, + "default": {}, + "description": "Rings of TABs around the center of the beam.", + "properties": { + "count": { + "default": 0, + "maximum": 11, + "minimum": 0, + "title": "Number of rings", + "type": "integer" + }, + "width": { + "default": 0.01, + "description": "Distance between pointings.", + "minimum": 0, + "title": "Ring width", + "type": "number" + } + }, + "title": "Tied-Array Rings", + "type": "object" + }, + "tabs": { + "additionalItems": false, + "default": [], + "description": "Tied-array beams to form", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "TAB {{ self.index }}", + "properties": { + "allow_after_previous": { + "default": true, + "description": "This TAB can be recorded after the previous TAB, if duration allows.", + "title": "Allow after previous", + "type": "boolean" + }, + "duration": { + "default": 0, + "description": "Exposure time of the TAB. 0 = observation duration.", + "maximum": 0, + "minimum": 0, + "title": "Duration", + "type": "integer" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {} + }, + "relative": { + "default": false, + "description": "The SAP pointing is added to the TAB pointing", + "title": "Relative to SAP", + "type": "boolean" + } + }, + "required": [ + "pointing", + "relative" + ], + "title": "Tied-Array Beam", + "type": "object" + }, + "title": "Tied-Array Beams", + "type": "array" + } + }, + "required": [ + "name", + "tabs" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "SAPs", + "settings" + ], + "title": "Coherent Tied-Array Beams", + "type": "object" + }, + "flys eye": { + "additionalProperties": false, + "default": {}, + "description": "Produce beams containing the individual station signals", + "properties": { + "enabled": { + "default": false, + "title": "Enable Fly's Eye", + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "enabled" + ], + "title": "Fly's Eye Settings", + "type": "object" + }, + "incoherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [], + "description": "Which SAPs in the observation to create incoherent TABs for (empty list = all).", + "items": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + } + }, + "required": [ + "name", + "subbands" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "settings", + "SAPs" + ], + "title": "Incoherent Tied-Array Beams", + "type": "object" + }, + "name": { + "default": "_beamformer_name_", + "description": "Beamformer name, used for identification purposes.", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "description": "While observing, COBALT will beamform on the intersection of all stations in this list and the used stations in the observation. So, specifying all possible stations here means that all observation-stations are used. Specifying a small subset here means that only the observing-stations in this small list are used. By default we let COBALT beamform on the Core stations.", + "minItems": 1 + } + }, + "required": [ + "name" + ], + "title": "Beamformer Pipeline", + "type": "object" + }, + "stokes": { + "default": "I", + "description": "Which Stokes to produce", + "enum": [ + "I", + "IQUV", + "XXYY" + ], + "title": "Stokes", + "type": "string" + }, + "stokes_settings": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 1, + "description": "Number of frequency bands per subband", + "enum": [ + 1, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 1, + "title": "Channels/subband", + "type": "integer" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "properties": { + "bits": { + "default": 8, + "description": "Number of bits for a single value", + "enum": [ + 8 + ], + "title": "Bits/sample", + "type": "integer" + }, + "enabled": { + "default": false, + "title": "Output quantisation into integers", + "type": "boolean" + }, + "scale_max": { + "default": 5, + "description": "Cut off values above this treshold", + "title": "Maximum value", + "type": "number" + }, + "scale_min": { + "default": -5, + "description": "Cut off values below this treshold", + "title": "Minimum value", + "type": "number" + } + }, + "required": [ + "enabled", + "bits", + "scale_min", + "scale_max" + ], + "title": "Output quantisation settings", + "type": "object" + }, + "stokes": { + "$ref": "#/definitions/stokes", + "default": "I" + }, + "subbands_per_file": { + "default": 488, + "description": "The maximum number of subbands to write in each output dataproduct.", + "maximum": 488, + "minimum": 1, + "title": "Subbands per file", + "type": "integer" + }, + "time_integration_factor": { + "default": 1, + "description": "The number of samples to integrate over", + "maximum": 12288, + "minimum": 1, + "title": "Time integration", + "type": "integer" + } + }, + "required": [ + "stokes", + "time_integration_factor", + "channels_per_subband" + ], + "type": "object" + }, + "subband_selection": { + "additionalProperties": false, + "default": {}, + "properties": { + "list": { + "additionalItems": false, + "default": [], + "description": "If method is 'select subset', only beamform these subbands, and only if they occur in the SAP.", + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "minItems": 0, + "title": "Subset selection", + "type": "array" + }, + "method": { + "default": "copy", + "description": "How to select the subbands to beam form", + "enum": [ + "copy", + "largest continuous subset", + "select subset" + ], + "title": "Method", + "type": "string" + } + }, + "required": [ + "method" + ], + "title": "Subband selection", + "type": "object" + }, + "calibrator": { + "additionalProperties": false, + "default": {}, + "properties": { + "autoselect": { + "default": true, + "description": "Auto-select calibrator based on elevation", + "title": "Auto-select", + "type": "boolean" + }, + "name": { + "default": "calibrator", + "description": "Name of the calibrator SAP", + "title": "Name", + "type": "string" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "description": "Manually selected calibrator", + "title": "Digital pointing" + } + }, + "required": [ + "autoselect", + "pointing", + "name" + ], + "type": "object" + }, + "correlator": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 64, + "description": "Number of frequency bands per subband", + "enum": [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 8, + "title": "Channels/subband", + "type": "integer" + }, + "integration_time": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "default": 1, + "description": "Desired integration period (seconds)", + "minimum": 0.1, + "title": "Integration time" + }, + "storage_cluster": { + "default": "CEP4", + "description": "Cluster to write output to", + "enum": [ + "CEP4", + "DragNet" + ], + "title": "Storage cluster", + "type": "string" + }, + "topocentric_frequency_correction": { + "default": false, + "description": "Correct frequencies for the Doppler shift caused by the Earth's rotation.", + "title": "Topocentric Frequency Correction", + "type": "boolean" + } + } + }, + "timedelta": { + "default": 0, + "description": "A time duration or delta expressed in seconds", + "type": "number" + }, + "timestamp": { + "default": "1970-01-01T00:00:00Z", + "description": "A timestamp defined in UTC", + "format": "date-time", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d(\\.\\d+)?Z?", + "type": "string" + }, + "timewindow": { + "additionalProperties": false, + "description": "A timewindow interval: [from, to)", + "properties": { + "from": { + "$ref": "#/definitions/timestamp" + }, + "to": { + "$ref": "#/definitions/timestamp" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "cluster_resources": { + "additionalProperties": false, + "default": {}, + "description": "Which cluster resources to claim for this pipeline.", + "properties": { + "cores_per_task": { + "default": 2, + "description": "Number of cores to reserve for each process in the pipeline.", + "maximum": 24, + "minimum": 1, + "title": "Cores/task", + "type": "integer" + }, + "parallel_tasks": { + "default": 122, + "description": "Maximum number of tasks to run in parallel. Determines the size of the reservation. A smaller reservation results in a longer pipeline run. A bigger reservation results in more in resource waste.", + "maximum": 488, + "minimum": 1, + "title": "Max parallel tasks", + "type": "integer" + }, + "where": { + "additionalProperties": false, + "default": {}, + "description": "Where to run this pipeline.", + "properties": { + "cluster": { + "default": "CEP4", + "enum": [ + "CEP4" + ], + "title": "Cluster", + "type": "string" + }, + "partition": { + "default": "cpu", + "enum": [ + "cpu", + "gpu", + "testing" + ], + "title": "Partition", + "type": "string" + } + }, + "required": [ + "cluster", + "partition" + ], + "title": "Where", + "type": "object" + } + }, + "required": [ + "where", + "cores_per_task", + "parallel_tasks" + ], + "title": "Cluster resources", + "type": "object" + }, + "demix_strategy": { + "default": "auto", + "enum": [ + "auto", + "yes", + "no" + ], + "type": "string" + }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, + "pointing": { + "additionalProperties": false, + "properties": { + "angle1": { + "default": 0.6624317181687094, + "description": "First angle (e.g. RA)", + "title": "Angle 1", + "type": "number" + }, + "angle2": { + "default": 1.5579526427549426, + "description": "Second angle (e.g. DEC)", + "title": "Angle 2", + "type": "number" + }, + "direction_type": { + "default": "J2000", + "description": "", + "enum": [ + "J2000", + "AZELGEO", + "LMN", + "SUN", + "MOON", + "MERCURY", + "VENUS", + "MARS", + "JUPITER", + "SATURN", + "URANUS", + "NEPTUNE", + "PLUTO" + ], + "title": "Reference frame", + "type": "string" + }, + "target": { + "default": "_target_name_", + "description": "Description of where this beam points at", + "minLength": 1, + "title": "Target", + "type": "string" + } + }, + "required": [ + "angle1", + "angle2", + "target" + ], + "type": "object" + }, + "purpose": { + "default": "target", + "description": "The intended use of this pointing: calibrator, target or all sky", + "enum": [ + "calibrator", + "target", + "all sky" + ], + "type": "string" + }, + "QA": { + "additionalProperties": false, + "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", + "properties": { + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} + }, + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" + }, + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" + }, + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" + }, + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" + } + }, + "required": [ + "enabled", + "nr_of_subbands", + "nr_of_timestamps" + ], + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", + "type": "object" + }, + "SAPs": { + "additionalItems": false, + "default": [ + {} + ], + "description": "Station beams", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "{{ i0 }} - {{ self.name }}", + "properties": { + "digital_pointing": { + "$id": "#target_pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "title": "Digital pointing" + }, + "name": { + "default": "_SAP_name_", + "description": "Identifier for this beam", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "subbands": { + "additionalItems": false, + "default": [ + 255 + ], + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "maxItems": 488, + "minItems": 1, + "title": "Subband list", + "type": "array" + } + }, + "required": [ + "name", + "digital_pointing", + "subbands" + ], + "title": "SAP", + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, + "antenna_set": { + "default": "HBA_DUAL", + "description": "Fields & antennas to use", + "enum": [ + "HBA_DUAL", + "HBA_DUAL_INNER", + "HBA_ONE", + "HBA_ONE_INNER", + "HBA_ZERO", + "HBA_ZERO_INNER", + "LBA_INNER", + "LBA_OUTER", + "LBA_SPARSE_EVEN", + "LBA_SPARSE_ODD", + "LBA_ALL" + ], + "title": "Antenna set", + "type": "string" + }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, + "antennas": { + "description": "Structure to describe a set of specific antennafields", + "properties": { + "fields": { + "default": [], + "items": { + "properties": { + "field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Field", + "type": "string" + }, + "station": { + "$ref": "#/definitions/station" + }, + "type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "station", + "field", + "type" + ], + "title": "Field", + "type": "object" + }, + "title": "Fields", + "type": "array" + }, + "set": { + "$ref": "#/definitions/antenna_set", + "default": "HBA_DUAL" + } + }, + "required": [ + "fields" + ], + "title": "Antennas", + "type": "object" + }, + "filter": { + "default": "HBA_110_190", + "description": "Must match antenna type", + "enum": [ + "LBA_10_90", + "LBA_30_90", + "HBA_110_190", + "HBA_210_250" + ], + "title": "Band-pass filter", + "type": "string" + }, + "max_number_of_missing_stations": { + "default": 0, + "description": "Maximum number of stations that can be omitted from a group (due to maintenance for example)", + "minimum": 0, + "title": "Maximum number of stations to omit", + "type": "integer" + }, + "station": { + "description": "These are the LOFAR stations", + "enum": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "FR606", + "SE607", + "UK608", + "DE609", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ], + "title": "Station", + "type": "string" + }, + "station_group": { + "anyOf": [ + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "The group of all stations on the Superterp", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Superterp", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + }, + "description": "The group of all Core stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Core", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch remote stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Remote", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch (Core + Remote) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + }, + "description": "A subgroup of the international stations which are required when doing observation with international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International required", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 6, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all (Core + Remote + International) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", + "type": "object" + } + ], + "default": { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "A set of predefined list of stations, and a constraint on how many stations are allowed to be missing (due to maintenance for example)", + "title": "Station group", + "type": "object" + }, + "station_groups": { + "additionalItems": false, + "additionalProperties": false, + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "description": "One or more predefined or custom groups of stations", + "items": { + "$ref": "#/definitions/station_group" + }, + "minItems": 1, + "title": "Station groups", + "type": "array" + }, + "station_list": { + "additionalItems": false, + "additionalProperties": false, + "default": [], + "items": { + "$ref": "#/definitions/station" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, + "task_connector": { + "additionalProperties": false, + "default": {}, + "description": "A task connector describes what a task can take as input and produces as output.", + "properties": { + "dataformat": { + "description": "The data type of a task connector describes in which format the data is produced/consumed.", + "enum": [ + "MeasurementSet", + "Beamformed", + "QA_HDF5", + "QA_Plots", + "pulp summary", + "pulp analysis" + ], + "title": "Data Format", + "type": "string" + }, + "datatype": { + "description": "The data type of a task connector describes its what kind of data is produced/consumed.", + "enum": [ + "visibilities", + "time series", + "instrument model", + "image", + "quality", + "pulsar profile" + ], + "title": "Data Type", + "type": "string" + }, + "role": { + "description": "The role of a task connector describes its intended use.", + "enum": [ + "correlator", + "beamformer", + "inspection plots", + "calibrator", + "target", + "any" + ], + "title": "Role", + "type": "string" + } + }, + "required": [ + "role", + "datatype", + "dataformat" + ], + "type": "object" + } + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": {} + }, + "beamformer": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/beamforming/9#/definitions/beamformer", + "default": {} + }, + "calibrator": { + "$ref": "#/definitions/calibrator", + "default": {} + }, + "correlator": { + "$ref": "#/definitions/correlator", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 600, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "station_configuration": { + "$ref": "#/definitions/station_configuration", + "default": {} + } + } + }, + "type": "http://localhost:3000/api/task_type/observation", + "type_value": "observation" + }, + { + "description": "This schema combines the calibrator and target observation task schema's for parallel observing.", + "name": "parallel calibrator target observation", + "purpose": "technical_commissioning", + "schema": { + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/parallel%20calibrator%20target%20observation/10#", + "$schema": "http://json-schema.org/draft-06/schema#", + "additionalProperties": false, + "description": "This schema combines the calibrator and target observation task schema's for parallel observing.", + "patternProperties": { + "^[$]schema$": {} + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": {} + }, + "calibrator": { + "$ref": "#/definitions/calibrator", + "default": {} + }, + "correlator": { + "$ref": "#/definitions/correlator", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 600, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "station_configuration": { + "$ref": "#/definitions/station_configuration", + "default": {} + } + }, + "required": [ + "calibrator", + "correlator", + "duration", + "station_configuration" + ], + "title": "parallel calibrator target observation", + "type": "object", + "version": 10 + }, + "state": "active", + "version": 10, + "id": 14, + "ref_resolved_schema": { + "definitions": { + "beamformer": { + "additionalProperties": false, + "default": {}, + "properties": { + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" + }, + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", + "type": "boolean" + } + }, + "required": [ + "pipelines", + "ppf" + ], + "title": "Beamformer", + "type": "object" + }, + "beamformer_pipeline": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "properties": { + "coherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [ + { + "name": "_SAP_name_", + "tabs": [] + } + ], + "description": "Which SAPs in the observation to beamform.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + }, + "tab_rings": { + "additonalProperties": false, + "default": {}, + "description": "Rings of TABs around the center of the beam.", + "properties": { + "count": { + "default": 0, + "maximum": 11, + "minimum": 0, + "title": "Number of rings", + "type": "integer" + }, + "width": { + "default": 0.01, + "description": "Distance between pointings.", + "minimum": 0, + "title": "Ring width", + "type": "number" + } + }, + "title": "Tied-Array Rings", + "type": "object" + }, + "tabs": { + "additionalItems": false, + "default": [], + "description": "Tied-array beams to form", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "TAB {{ self.index }}", + "properties": { + "allow_after_previous": { + "default": true, + "description": "This TAB can be recorded after the previous TAB, if duration allows.", + "title": "Allow after previous", + "type": "boolean" + }, + "duration": { + "default": 0, + "description": "Exposure time of the TAB. 0 = observation duration.", + "maximum": 0, + "minimum": 0, + "title": "Duration", + "type": "integer" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {} + }, + "relative": { + "default": false, + "description": "The SAP pointing is added to the TAB pointing", + "title": "Relative to SAP", + "type": "boolean" + } + }, + "required": [ + "pointing", + "relative" + ], + "title": "Tied-Array Beam", + "type": "object" + }, + "title": "Tied-Array Beams", + "type": "array" + } + }, + "required": [ + "name", + "tabs" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "SAPs", + "settings" + ], + "title": "Coherent Tied-Array Beams", + "type": "object" + }, + "flys eye": { + "additionalProperties": false, + "default": {}, + "description": "Produce beams containing the individual station signals", + "properties": { + "enabled": { + "default": false, + "title": "Enable Fly's Eye", + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "enabled" + ], + "title": "Fly's Eye Settings", + "type": "object" + }, + "incoherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [], + "description": "Which SAPs in the observation to create incoherent TABs for (empty list = all).", + "items": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + } + }, + "required": [ + "name", + "subbands" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "settings", + "SAPs" + ], + "title": "Incoherent Tied-Array Beams", + "type": "object" + }, + "name": { + "default": "_beamformer_name_", + "description": "Beamformer name, used for identification purposes.", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "description": "While observing, COBALT will beamform on the intersection of all stations in this list and the used stations in the observation. So, specifying all possible stations here means that all observation-stations are used. Specifying a small subset here means that only the observing-stations in this small list are used. By default we let COBALT beamform on the Core stations.", + "minItems": 1 + } + }, + "required": [ + "name" + ], + "title": "Beamformer Pipeline", + "type": "object" + }, + "stokes": { + "default": "I", + "description": "Which Stokes to produce", + "enum": [ + "I", + "IQUV", + "XXYY" + ], + "title": "Stokes", + "type": "string" + }, + "stokes_settings": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 1, + "description": "Number of frequency bands per subband", + "enum": [ + 1, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 1, + "title": "Channels/subband", + "type": "integer" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "properties": { + "bits": { + "default": 8, + "description": "Number of bits for a single value", + "enum": [ + 8 + ], + "title": "Bits/sample", + "type": "integer" + }, + "enabled": { + "default": false, + "title": "Output quantisation into integers", + "type": "boolean" + }, + "scale_max": { + "default": 5, + "description": "Cut off values above this treshold", + "title": "Maximum value", + "type": "number" + }, + "scale_min": { + "default": -5, + "description": "Cut off values below this treshold", + "title": "Minimum value", + "type": "number" + } + }, + "required": [ + "enabled", + "bits", + "scale_min", + "scale_max" + ], + "title": "Output quantisation settings", + "type": "object" + }, + "stokes": { + "$ref": "#/definitions/stokes", + "default": "I" + }, + "subbands_per_file": { + "default": 488, + "description": "The maximum number of subbands to write in each output dataproduct.", + "maximum": 488, + "minimum": 1, + "title": "Subbands per file", + "type": "integer" + }, + "time_integration_factor": { + "default": 1, + "description": "The number of samples to integrate over", + "maximum": 12288, + "minimum": 1, + "title": "Time integration", + "type": "integer" + } + }, + "required": [ + "stokes", + "time_integration_factor", + "channels_per_subband" + ], + "type": "object" + }, + "subband_selection": { + "additionalProperties": false, + "default": {}, + "properties": { + "list": { + "additionalItems": false, + "default": [], + "description": "If method is 'select subset', only beamform these subbands, and only if they occur in the SAP.", + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "minItems": 0, + "title": "Subset selection", + "type": "array" + }, + "method": { + "default": "copy", + "description": "How to select the subbands to beam form", + "enum": [ + "copy", + "largest continuous subset", + "select subset" + ], + "title": "Method", + "type": "string" + } + }, + "required": [ + "method" + ], + "title": "Subband selection", + "type": "object" + }, + "calibrator": { + "additionalProperties": false, + "default": {}, + "properties": { + "autoselect": { + "default": true, + "description": "Auto-select calibrator based on elevation", + "title": "Auto-select", + "type": "boolean" + }, + "name": { + "default": "calibrator", + "description": "Name of the calibrator SAP", + "title": "Name", + "type": "string" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "description": "Manually selected calibrator", + "title": "Digital pointing" + } + }, + "required": [ + "autoselect", + "pointing", + "name" + ], + "type": "object" + }, + "correlator": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 64, + "description": "Number of frequency bands per subband", + "enum": [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 8, + "title": "Channels/subband", + "type": "integer" + }, + "integration_time": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "default": 1, + "description": "Desired integration period (seconds)", + "minimum": 0.1, + "title": "Integration time" + }, + "storage_cluster": { + "default": "CEP4", + "description": "Cluster to write output to", + "enum": [ + "CEP4", + "DragNet" + ], + "title": "Storage cluster", + "type": "string" + }, + "topocentric_frequency_correction": { + "default": false, + "description": "Correct frequencies for the Doppler shift caused by the Earth's rotation.", + "title": "Topocentric Frequency Correction", + "type": "boolean" + } + } + }, + "timedelta": { + "default": 0, + "description": "A time duration or delta expressed in seconds", + "type": "number" + }, + "timestamp": { + "default": "1970-01-01T00:00:00Z", + "description": "A timestamp defined in UTC", + "format": "date-time", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d(\\.\\d+)?Z?", + "type": "string" + }, + "timewindow": { + "additionalProperties": false, + "description": "A timewindow interval: [from, to)", + "properties": { + "from": { + "$ref": "#/definitions/timestamp" + }, + "to": { + "$ref": "#/definitions/timestamp" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "cluster_resources": { + "additionalProperties": false, + "default": {}, + "description": "Which cluster resources to claim for this pipeline.", + "properties": { + "cores_per_task": { + "default": 2, + "description": "Number of cores to reserve for each process in the pipeline.", + "maximum": 24, + "minimum": 1, + "title": "Cores/task", + "type": "integer" + }, + "parallel_tasks": { + "default": 122, + "description": "Maximum number of tasks to run in parallel. Determines the size of the reservation. A smaller reservation results in a longer pipeline run. A bigger reservation results in more in resource waste.", + "maximum": 488, + "minimum": 1, + "title": "Max parallel tasks", + "type": "integer" + }, + "where": { + "additionalProperties": false, + "default": {}, + "description": "Where to run this pipeline.", + "properties": { + "cluster": { + "default": "CEP4", + "enum": [ + "CEP4" + ], + "title": "Cluster", + "type": "string" + }, + "partition": { + "default": "cpu", + "enum": [ + "cpu", + "gpu", + "testing" + ], + "title": "Partition", + "type": "string" + } + }, + "required": [ + "cluster", + "partition" + ], + "title": "Where", + "type": "object" + } + }, + "required": [ + "where", + "cores_per_task", + "parallel_tasks" + ], + "title": "Cluster resources", + "type": "object" + }, + "demix_strategy": { + "default": "auto", + "enum": [ + "auto", + "yes", + "no" + ], + "type": "string" + }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, + "pointing": { + "additionalProperties": false, + "properties": { + "angle1": { + "default": 0.6624317181687094, + "description": "First angle (e.g. RA)", + "title": "Angle 1", + "type": "number" + }, + "angle2": { + "default": 1.5579526427549426, + "description": "Second angle (e.g. DEC)", + "title": "Angle 2", + "type": "number" + }, + "direction_type": { + "default": "J2000", + "description": "", + "enum": [ + "J2000", + "AZELGEO", + "LMN", + "SUN", + "MOON", + "MERCURY", + "VENUS", + "MARS", + "JUPITER", + "SATURN", + "URANUS", + "NEPTUNE", + "PLUTO" + ], + "title": "Reference frame", + "type": "string" + }, + "target": { + "default": "_target_name_", + "description": "Description of where this beam points at", + "minLength": 1, + "title": "Target", + "type": "string" + } + }, + "required": [ + "angle1", + "angle2", + "target" + ], + "type": "object" + }, + "purpose": { + "default": "target", + "description": "The intended use of this pointing: calibrator, target or all sky", + "enum": [ + "calibrator", + "target", + "all sky" + ], + "type": "string" + }, + "QA": { + "additionalProperties": false, + "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", + "properties": { + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} + }, + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" + }, + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" + }, + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" + }, + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" + } + }, + "required": [ + "enabled", + "nr_of_subbands", + "nr_of_timestamps" + ], + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", + "type": "object" + }, + "SAPs": { + "additionalItems": false, + "default": [ + {} + ], + "description": "Station beams", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "{{ i0 }} - {{ self.name }}", + "properties": { + "digital_pointing": { + "$id": "#target_pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "title": "Digital pointing" + }, + "name": { + "default": "_SAP_name_", + "description": "Identifier for this beam", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "subbands": { + "additionalItems": false, + "default": [ + 255 + ], + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "maxItems": 488, + "minItems": 1, + "title": "Subband list", + "type": "array" + } + }, + "required": [ + "name", + "digital_pointing", + "subbands" + ], + "title": "SAP", + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, + "antenna_set": { + "default": "HBA_DUAL", + "description": "Fields & antennas to use", + "enum": [ + "HBA_DUAL", + "HBA_DUAL_INNER", + "HBA_ONE", + "HBA_ONE_INNER", + "HBA_ZERO", + "HBA_ZERO_INNER", + "LBA_INNER", + "LBA_OUTER", + "LBA_SPARSE_EVEN", + "LBA_SPARSE_ODD", + "LBA_ALL" + ], + "title": "Antenna set", + "type": "string" + }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, + "antennas": { + "description": "Structure to describe a set of specific antennafields", + "properties": { + "fields": { + "default": [], + "items": { + "properties": { + "field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Field", + "type": "string" + }, + "station": { + "$ref": "#/definitions/station" + }, + "type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "station", + "field", + "type" + ], + "title": "Field", + "type": "object" + }, + "title": "Fields", + "type": "array" + }, + "set": { + "$ref": "#/definitions/antenna_set", + "default": "HBA_DUAL" + } + }, + "required": [ + "fields" + ], + "title": "Antennas", + "type": "object" + }, + "filter": { + "default": "HBA_110_190", + "description": "Must match antenna type", + "enum": [ + "LBA_10_90", + "LBA_30_90", + "HBA_110_190", + "HBA_210_250" + ], + "title": "Band-pass filter", + "type": "string" + }, + "max_number_of_missing_stations": { + "default": 0, + "description": "Maximum number of stations that can be omitted from a group (due to maintenance for example)", + "minimum": 0, + "title": "Maximum number of stations to omit", + "type": "integer" + }, + "station": { + "description": "These are the LOFAR stations", + "enum": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "FR606", + "SE607", + "UK608", + "DE609", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ], + "title": "Station", + "type": "string" + }, + "station_group": { + "anyOf": [ + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "The group of all stations on the Superterp", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Superterp", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + }, + "description": "The group of all Core stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Core", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch remote stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Remote", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch (Core + Remote) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + }, + "description": "A subgroup of the international stations which are required when doing observation with international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International required", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 6, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all (Core + Remote + International) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", + "type": "object" + } + ], + "default": { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "A set of predefined list of stations, and a constraint on how many stations are allowed to be missing (due to maintenance for example)", + "title": "Station group", + "type": "object" + }, + "station_groups": { + "additionalItems": false, + "additionalProperties": false, + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "description": "One or more predefined or custom groups of stations", + "items": { + "$ref": "#/definitions/station_group" + }, + "minItems": 1, + "title": "Station groups", + "type": "array" + }, + "station_list": { + "additionalItems": false, + "additionalProperties": false, + "default": [], + "items": { + "$ref": "#/definitions/station" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, + "task_connector": { + "additionalProperties": false, + "default": {}, + "description": "A task connector describes what a task can take as input and produces as output.", + "properties": { + "dataformat": { + "description": "The data type of a task connector describes in which format the data is produced/consumed.", + "enum": [ + "MeasurementSet", + "Beamformed", + "QA_HDF5", + "QA_Plots", + "pulp summary", + "pulp analysis" + ], + "title": "Data Format", + "type": "string" + }, + "datatype": { + "description": "The data type of a task connector describes its what kind of data is produced/consumed.", + "enum": [ + "visibilities", + "time series", + "instrument model", + "image", + "quality", + "pulsar profile" + ], + "title": "Data Type", + "type": "string" + }, + "role": { + "description": "The role of a task connector describes its intended use.", + "enum": [ + "correlator", + "beamformer", + "inspection plots", + "calibrator", + "target", + "any" + ], + "title": "Role", + "type": "string" + } + }, + "required": [ + "role", + "datatype", + "dataformat" + ], + "type": "object" + } + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": {} + }, + "calibrator": { + "$ref": "#/definitions/calibrator", + "default": {} + }, + "correlator": { + "$ref": "#/definitions/correlator", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 600, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "station_configuration": { + "$ref": "#/definitions/station_configuration", + "default": {} + } + } + }, + "type": "http://localhost:3000/api/task_type/observation", + "type_value": "observation" + }, + { + "description": "This schema combines the calibrator and target observation task schema's for parallel observing.", + "name": "parallel calibrator target observation", + "purpose": "technical_commissioning", + "schema": { + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/parallel%20calibrator%20target%20observation/9#", + "$schema": "http://json-schema.org/draft-06/schema#", + "additionalProperties": false, + "description": "This schema combines the calibrator and target observation task schema's for parallel observing.", + "patternProperties": { + "^[$]schema$": {} + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": {} + }, + "calibrator": { + "$ref": "#/definitions/calibrator", + "default": {} + }, + "correlator": { + "$ref": "#/definitions/correlator", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 600, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "station_configuration": { + "$ref": "#/definitions/station_configuration", + "default": {} + } + }, + "required": [ + "calibrator", + "correlator", + "duration", + "station_configuration" + ], + "title": "parallel calibrator target observation", + "type": "object", + "version": 9 + }, + "state": "legacy", + "version": 9, + "id": 15, + "ref_resolved_schema": { + "definitions": { + "beamformer": { + "additionalProperties": false, + "default": {}, + "properties": { + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" + }, + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", + "type": "boolean" + } + }, + "required": [ + "pipelines", + "ppf" + ], + "title": "Beamformer", + "type": "object" + }, + "beamformer_pipeline": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "properties": { + "coherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [ + { + "name": "_SAP_name_", + "tabs": [] + } + ], + "description": "Which SAPs in the observation to beamform.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + }, + "tab_rings": { + "additonalProperties": false, + "default": {}, + "description": "Rings of TABs around the center of the beam.", + "properties": { + "count": { + "default": 0, + "maximum": 11, + "minimum": 0, + "title": "Number of rings", + "type": "integer" + }, + "width": { + "default": 0.01, + "description": "Distance between pointings.", + "minimum": 0, + "title": "Ring width", + "type": "number" + } + }, + "title": "Tied-Array Rings", + "type": "object" + }, + "tabs": { + "additionalItems": false, + "default": [], + "description": "Tied-array beams to form", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "TAB {{ self.index }}", + "properties": { + "allow_after_previous": { + "default": true, + "description": "This TAB can be recorded after the previous TAB, if duration allows.", + "title": "Allow after previous", + "type": "boolean" + }, + "duration": { + "default": 0, + "description": "Exposure time of the TAB. 0 = observation duration.", + "maximum": 0, + "minimum": 0, + "title": "Duration", + "type": "integer" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {} + }, + "relative": { + "default": false, + "description": "The SAP pointing is added to the TAB pointing", + "title": "Relative to SAP", + "type": "boolean" + } + }, + "required": [ + "pointing", + "relative" + ], + "title": "Tied-Array Beam", + "type": "object" + }, + "title": "Tied-Array Beams", + "type": "array" + } + }, + "required": [ + "name", + "tabs" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "SAPs", + "settings" + ], + "title": "Coherent Tied-Array Beams", + "type": "object" + }, + "flys eye": { + "additionalProperties": false, + "default": {}, + "description": "Produce beams containing the individual station signals", + "properties": { + "enabled": { + "default": false, + "title": "Enable Fly's Eye", + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "enabled" + ], + "title": "Fly's Eye Settings", + "type": "object" + }, + "incoherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [], + "description": "Which SAPs in the observation to create incoherent TABs for (empty list = all).", + "items": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + } + }, + "required": [ + "name", + "subbands" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "settings", + "SAPs" + ], + "title": "Incoherent Tied-Array Beams", + "type": "object" + }, + "name": { + "default": "_beamformer_name_", + "description": "Beamformer name, used for identification purposes.", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "description": "While observing, COBALT will beamform on the intersection of all stations in this list and the used stations in the observation. So, specifying all possible stations here means that all observation-stations are used. Specifying a small subset here means that only the observing-stations in this small list are used. By default we let COBALT beamform on the Core stations.", + "minItems": 1 + } + }, + "required": [ + "name" + ], + "title": "Beamformer Pipeline", + "type": "object" + }, + "stokes": { + "default": "I", + "description": "Which Stokes to produce", + "enum": [ + "I", + "IQUV", + "XXYY" + ], + "title": "Stokes", + "type": "string" + }, + "stokes_settings": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 1, + "description": "Number of frequency bands per subband", + "enum": [ + 1, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 1, + "title": "Channels/subband", + "type": "integer" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "properties": { + "bits": { + "default": 8, + "description": "Number of bits for a single value", + "enum": [ + 8 + ], + "title": "Bits/sample", + "type": "integer" + }, + "enabled": { + "default": false, + "title": "Output quantisation into integers", + "type": "boolean" + }, + "scale_max": { + "default": 5, + "description": "Cut off values above this treshold", + "title": "Maximum value", + "type": "number" + }, + "scale_min": { + "default": -5, + "description": "Cut off values below this treshold", + "title": "Minimum value", + "type": "number" + } + }, + "required": [ + "enabled", + "bits", + "scale_min", + "scale_max" + ], + "title": "Output quantisation settings", + "type": "object" + }, + "stokes": { + "$ref": "#/definitions/stokes", + "default": "I" + }, + "subbands_per_file": { + "default": 488, + "description": "The maximum number of subbands to write in each output dataproduct.", + "maximum": 488, + "minimum": 1, + "title": "Subbands per file", + "type": "integer" + }, + "time_integration_factor": { + "default": 1, + "description": "The number of samples to integrate over", + "maximum": 12288, + "minimum": 1, + "title": "Time integration", + "type": "integer" + } + }, + "required": [ + "stokes", + "time_integration_factor", + "channels_per_subband" + ], + "type": "object" + }, + "subband_selection": { + "additionalProperties": false, + "default": {}, + "properties": { + "list": { + "additionalItems": false, + "default": [], + "description": "If method is 'select subset', only beamform these subbands, and only if they occur in the SAP.", + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "minItems": 0, + "title": "Subset selection", + "type": "array" + }, + "method": { + "default": "copy", + "description": "How to select the subbands to beam form", + "enum": [ + "copy", + "largest continuous subset", + "select subset" + ], + "title": "Method", + "type": "string" + } + }, + "required": [ + "method" + ], + "title": "Subband selection", + "type": "object" + }, + "calibrator": { + "additionalProperties": false, + "default": {}, + "properties": { + "autoselect": { + "default": true, + "description": "Auto-select calibrator based on elevation", + "title": "Auto-select", + "type": "boolean" + }, + "name": { + "default": "calibrator", + "description": "Name of the calibrator SAP", + "title": "Name", + "type": "string" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "description": "Manually selected calibrator", + "title": "Digital pointing" + } + }, + "required": [ + "autoselect", + "pointing", + "name" + ], + "type": "object" + }, + "correlator": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 64, + "description": "Number of frequency bands per subband", + "enum": [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 8, + "title": "Channels/subband", + "type": "integer" + }, + "integration_time": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "default": 1, + "description": "Desired integration period (seconds)", + "minimum": 0.1, + "title": "Integration time" + }, + "storage_cluster": { + "default": "CEP4", + "description": "Cluster to write output to", + "enum": [ + "CEP4", + "DragNet" + ], + "title": "Storage cluster", + "type": "string" + }, + "topocentric_frequency_correction": { + "default": false, + "description": "Correct frequencies for the Doppler shift caused by the Earth's rotation.", + "title": "Topocentric Frequency Correction", + "type": "boolean" + } + } + }, + "timedelta": { + "default": 0, + "description": "A time duration or delta expressed in seconds", + "type": "number" + }, + "timestamp": { + "default": "1970-01-01T00:00:00Z", + "description": "A timestamp defined in UTC", + "format": "date-time", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d(\\.\\d+)?Z?", + "type": "string" + }, + "timewindow": { + "additionalProperties": false, + "description": "A timewindow interval: [from, to)", + "properties": { + "from": { + "$ref": "#/definitions/timestamp" + }, + "to": { + "$ref": "#/definitions/timestamp" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "cluster_resources": { + "additionalProperties": false, + "default": {}, + "description": "Which cluster resources to claim for this pipeline.", + "properties": { + "cores_per_task": { + "default": 2, + "description": "Number of cores to reserve for each process in the pipeline.", + "maximum": 24, + "minimum": 1, + "title": "Cores/task", + "type": "integer" + }, + "parallel_tasks": { + "default": 122, + "description": "Maximum number of tasks to run in parallel. Determines the size of the reservation. A smaller reservation results in a longer pipeline run. A bigger reservation results in more in resource waste.", + "maximum": 488, + "minimum": 1, + "title": "Max parallel tasks", + "type": "integer" + }, + "where": { + "additionalProperties": false, + "default": {}, + "description": "Where to run this pipeline.", + "properties": { + "cluster": { + "default": "CEP4", + "enum": [ + "CEP4" + ], + "title": "Cluster", + "type": "string" + }, + "partition": { + "default": "cpu", + "enum": [ + "cpu", + "gpu", + "testing" + ], + "title": "Partition", + "type": "string" + } + }, + "required": [ + "cluster", + "partition" + ], + "title": "Where", + "type": "object" + } + }, + "required": [ + "where", + "cores_per_task", + "parallel_tasks" + ], + "title": "Cluster resources", + "type": "object" + }, + "demix_strategy": { + "default": "auto", + "enum": [ + "auto", + "yes", + "no" + ], + "type": "string" + }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, + "pointing": { + "additionalProperties": false, + "properties": { + "angle1": { + "default": 0.6624317181687094, + "description": "First angle (e.g. RA)", + "title": "Angle 1", + "type": "number" + }, + "angle2": { + "default": 1.5579526427549426, + "description": "Second angle (e.g. DEC)", + "title": "Angle 2", + "type": "number" + }, + "direction_type": { + "default": "J2000", + "description": "", + "enum": [ + "J2000", + "AZELGEO", + "LMN", + "SUN", + "MOON", + "MERCURY", + "VENUS", + "MARS", + "JUPITER", + "SATURN", + "URANUS", + "NEPTUNE", + "PLUTO" + ], + "title": "Reference frame", + "type": "string" + }, + "target": { + "default": "_target_name_", + "description": "Description of where this beam points at", + "minLength": 1, + "title": "Target", + "type": "string" + } + }, + "required": [ + "angle1", + "angle2", + "target" + ], + "type": "object" + }, + "purpose": { + "default": "target", + "description": "The intended use of this pointing: calibrator, target or all sky", + "enum": [ + "calibrator", + "target", + "all sky" + ], + "type": "string" + }, + "QA": { + "additionalProperties": false, + "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", + "properties": { + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} + }, + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" + }, + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" + }, + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" + }, + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" + } + }, + "required": [ + "enabled", + "nr_of_subbands", + "nr_of_timestamps" + ], + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", + "type": "object" + }, + "SAPs": { + "additionalItems": false, + "default": [ + {} + ], + "description": "Station beams", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "{{ i0 }} - {{ self.name }}", + "properties": { + "digital_pointing": { + "$id": "#target_pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "title": "Digital pointing" + }, + "name": { + "default": "_SAP_name_", + "description": "Identifier for this beam", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "subbands": { + "additionalItems": false, + "default": [ + 255 + ], + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "maxItems": 488, + "minItems": 1, + "title": "Subband list", + "type": "array" + } + }, + "required": [ + "name", + "digital_pointing", + "subbands" + ], + "title": "SAP", + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, + "antenna_set": { + "default": "HBA_DUAL", + "description": "Fields & antennas to use", + "enum": [ + "HBA_DUAL", + "HBA_DUAL_INNER", + "HBA_ONE", + "HBA_ONE_INNER", + "HBA_ZERO", + "HBA_ZERO_INNER", + "LBA_INNER", + "LBA_OUTER", + "LBA_SPARSE_EVEN", + "LBA_SPARSE_ODD", + "LBA_ALL" + ], + "title": "Antenna set", + "type": "string" + }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, + "antennas": { + "description": "Structure to describe a set of specific antennafields", + "properties": { + "fields": { + "default": [], + "items": { + "properties": { + "field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Field", + "type": "string" + }, + "station": { + "$ref": "#/definitions/station" + }, + "type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "station", + "field", + "type" + ], + "title": "Field", + "type": "object" + }, + "title": "Fields", + "type": "array" + }, + "set": { + "$ref": "#/definitions/antenna_set", + "default": "HBA_DUAL" + } + }, + "required": [ + "fields" + ], + "title": "Antennas", + "type": "object" + }, + "filter": { + "default": "HBA_110_190", + "description": "Must match antenna type", + "enum": [ + "LBA_10_90", + "LBA_30_90", + "HBA_110_190", + "HBA_210_250" + ], + "title": "Band-pass filter", + "type": "string" + }, + "max_number_of_missing_stations": { + "default": 0, + "description": "Maximum number of stations that can be omitted from a group (due to maintenance for example)", + "minimum": 0, + "title": "Maximum number of stations to omit", + "type": "integer" + }, + "station": { + "description": "These are the LOFAR stations", + "enum": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "FR606", + "SE607", + "UK608", + "DE609", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ], + "title": "Station", + "type": "string" + }, + "station_group": { + "anyOf": [ + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "The group of all stations on the Superterp", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Superterp", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + }, + "description": "The group of all Core stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Core", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch remote stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Remote", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch (Core + Remote) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + }, + "description": "A subgroup of the international stations which are required when doing observation with international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International required", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 6, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all (Core + Remote + International) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", + "type": "object" + } + ], + "default": { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "A set of predefined list of stations, and a constraint on how many stations are allowed to be missing (due to maintenance for example)", + "title": "Station group", + "type": "object" + }, + "station_groups": { + "additionalItems": false, + "additionalProperties": false, + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "description": "One or more predefined or custom groups of stations", + "items": { + "$ref": "#/definitions/station_group" + }, + "minItems": 1, + "title": "Station groups", + "type": "array" + }, + "station_list": { + "additionalItems": false, + "additionalProperties": false, + "default": [], + "items": { + "$ref": "#/definitions/station" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, + "task_connector": { + "additionalProperties": false, + "default": {}, + "description": "A task connector describes what a task can take as input and produces as output.", + "properties": { + "dataformat": { + "description": "The data type of a task connector describes in which format the data is produced/consumed.", + "enum": [ + "MeasurementSet", + "Beamformed", + "QA_HDF5", + "QA_Plots", + "pulp summary", + "pulp analysis" + ], + "title": "Data Format", + "type": "string" + }, + "datatype": { + "description": "The data type of a task connector describes its what kind of data is produced/consumed.", + "enum": [ + "visibilities", + "time series", + "instrument model", + "image", + "quality", + "pulsar profile" + ], + "title": "Data Type", + "type": "string" + }, + "role": { + "description": "The role of a task connector describes its intended use.", + "enum": [ + "correlator", + "beamformer", + "inspection plots", + "calibrator", + "target", + "any" + ], + "title": "Role", + "type": "string" + } + }, + "required": [ + "role", + "datatype", + "dataformat" + ], + "type": "object" + } + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": {} + }, + "calibrator": { + "$ref": "#/definitions/calibrator", + "default": {} + }, + "correlator": { + "$ref": "#/definitions/correlator", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 600, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "station_configuration": { + "$ref": "#/definitions/station_configuration", + "default": {} + } + } + }, + "type": "http://localhost:3000/api/task_type/observation", + "type_value": "observation" + }, + { + "description": "This schema combines the target and beamformer observation task schema's for parallel observing.", + "name": "parallel target and beamforming observation", + "purpose": "technical_commissioning", + "schema": { + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/parallel%20target%20and%20beamforming%20observation/3#", + "$schema": "http://json-schema.org/draft-06/schema#", + "additionalProperties": false, + "description": "This schema combines the target and beamformer observation task schema's for parallel observing.", + "patternProperties": { + "^[$]schema$": {} + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": {} + }, + "beamformer": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/beamforming/9#/definitions/beamformer", + "default": {} + }, + "correlator": { + "$ref": "#/definitions/correlator", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 600, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "station_configuration": { + "$ref": "#/definitions/station_configuration", + "default": {} + } + }, + "required": [ + "beamformer", + "correlator", + "duration", + "station_configuration" + ], + "title": "parallel target and beamforming observation", + "type": "object", + "version": 3 + }, + "state": "active", + "version": 3, + "id": 16, + "ref_resolved_schema": { + "definitions": { + "beamformer": { + "additionalProperties": false, + "default": {}, + "properties": { + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" + }, + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", + "type": "boolean" + } + }, + "required": [ + "pipelines", + "ppf" + ], + "title": "Beamformer", + "type": "object" + }, + "beamformer_pipeline": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "properties": { + "coherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [ + { + "name": "_SAP_name_", + "tabs": [] + } + ], + "description": "Which SAPs in the observation to beamform.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + }, + "tab_rings": { + "additonalProperties": false, + "default": {}, + "description": "Rings of TABs around the center of the beam.", + "properties": { + "count": { + "default": 0, + "maximum": 11, + "minimum": 0, + "title": "Number of rings", + "type": "integer" + }, + "width": { + "default": 0.01, + "description": "Distance between pointings.", + "minimum": 0, + "title": "Ring width", + "type": "number" + } + }, + "title": "Tied-Array Rings", + "type": "object" + }, + "tabs": { + "additionalItems": false, + "default": [], + "description": "Tied-array beams to form", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "TAB {{ self.index }}", + "properties": { + "allow_after_previous": { + "default": true, + "description": "This TAB can be recorded after the previous TAB, if duration allows.", + "title": "Allow after previous", + "type": "boolean" + }, + "duration": { + "default": 0, + "description": "Exposure time of the TAB. 0 = observation duration.", + "maximum": 0, + "minimum": 0, + "title": "Duration", + "type": "integer" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {} + }, + "relative": { + "default": false, + "description": "The SAP pointing is added to the TAB pointing", + "title": "Relative to SAP", + "type": "boolean" + } + }, + "required": [ + "pointing", + "relative" + ], + "title": "Tied-Array Beam", + "type": "object" + }, + "title": "Tied-Array Beams", + "type": "array" + } + }, + "required": [ + "name", + "tabs" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "SAPs", + "settings" + ], + "title": "Coherent Tied-Array Beams", + "type": "object" + }, + "flys eye": { + "additionalProperties": false, + "default": {}, + "description": "Produce beams containing the individual station signals", + "properties": { + "enabled": { + "default": false, + "title": "Enable Fly's Eye", + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "enabled" + ], + "title": "Fly's Eye Settings", + "type": "object" + }, + "incoherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [], + "description": "Which SAPs in the observation to create incoherent TABs for (empty list = all).", + "items": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + } + }, + "required": [ + "name", + "subbands" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "settings", + "SAPs" + ], + "title": "Incoherent Tied-Array Beams", + "type": "object" + }, + "name": { + "default": "_beamformer_name_", + "description": "Beamformer name, used for identification purposes.", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "description": "While observing, COBALT will beamform on the intersection of all stations in this list and the used stations in the observation. So, specifying all possible stations here means that all observation-stations are used. Specifying a small subset here means that only the observing-stations in this small list are used. By default we let COBALT beamform on the Core stations.", + "minItems": 1 + } + }, + "required": [ + "name" + ], + "title": "Beamformer Pipeline", + "type": "object" + }, + "stokes": { + "default": "I", + "description": "Which Stokes to produce", + "enum": [ + "I", + "IQUV", + "XXYY" + ], + "title": "Stokes", + "type": "string" + }, + "stokes_settings": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 1, + "description": "Number of frequency bands per subband", + "enum": [ + 1, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 1, + "title": "Channels/subband", + "type": "integer" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "properties": { + "bits": { + "default": 8, + "description": "Number of bits for a single value", + "enum": [ + 8 + ], + "title": "Bits/sample", + "type": "integer" + }, + "enabled": { + "default": false, + "title": "Output quantisation into integers", + "type": "boolean" + }, + "scale_max": { + "default": 5, + "description": "Cut off values above this treshold", + "title": "Maximum value", + "type": "number" + }, + "scale_min": { + "default": -5, + "description": "Cut off values below this treshold", + "title": "Minimum value", + "type": "number" + } + }, + "required": [ + "enabled", + "bits", + "scale_min", + "scale_max" + ], + "title": "Output quantisation settings", + "type": "object" + }, + "stokes": { + "$ref": "#/definitions/stokes", + "default": "I" + }, + "subbands_per_file": { + "default": 488, + "description": "The maximum number of subbands to write in each output dataproduct.", + "maximum": 488, + "minimum": 1, + "title": "Subbands per file", + "type": "integer" + }, + "time_integration_factor": { + "default": 1, + "description": "The number of samples to integrate over", + "maximum": 12288, + "minimum": 1, + "title": "Time integration", + "type": "integer" + } + }, + "required": [ + "stokes", + "time_integration_factor", + "channels_per_subband" + ], + "type": "object" + }, + "subband_selection": { + "additionalProperties": false, + "default": {}, + "properties": { + "list": { + "additionalItems": false, + "default": [], + "description": "If method is 'select subset', only beamform these subbands, and only if they occur in the SAP.", + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "minItems": 0, + "title": "Subset selection", + "type": "array" + }, + "method": { + "default": "copy", + "description": "How to select the subbands to beam form", + "enum": [ + "copy", + "largest continuous subset", + "select subset" + ], + "title": "Method", + "type": "string" + } + }, + "required": [ + "method" + ], + "title": "Subband selection", + "type": "object" + }, + "calibrator": { + "additionalProperties": false, + "default": {}, + "properties": { + "autoselect": { + "default": true, + "description": "Auto-select calibrator based on elevation", + "title": "Auto-select", + "type": "boolean" + }, + "name": { + "default": "calibrator", + "description": "Name of the calibrator SAP", + "title": "Name", + "type": "string" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "description": "Manually selected calibrator", + "title": "Digital pointing" + } + }, + "required": [ + "autoselect", + "pointing", + "name" + ], + "type": "object" + }, + "correlator": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 64, + "description": "Number of frequency bands per subband", + "enum": [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 8, + "title": "Channels/subband", + "type": "integer" + }, + "integration_time": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "default": 1, + "description": "Desired integration period (seconds)", + "minimum": 0.1, + "title": "Integration time" + }, + "storage_cluster": { + "default": "CEP4", + "description": "Cluster to write output to", + "enum": [ + "CEP4", + "DragNet" + ], + "title": "Storage cluster", + "type": "string" + }, + "topocentric_frequency_correction": { + "default": false, + "description": "Correct frequencies for the Doppler shift caused by the Earth's rotation.", + "title": "Topocentric Frequency Correction", + "type": "boolean" + } + } + }, + "timedelta": { + "default": 0, + "description": "A time duration or delta expressed in seconds", + "type": "number" + }, + "timestamp": { + "default": "1970-01-01T00:00:00Z", + "description": "A timestamp defined in UTC", + "format": "date-time", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d(\\.\\d+)?Z?", + "type": "string" + }, + "timewindow": { + "additionalProperties": false, + "description": "A timewindow interval: [from, to)", + "properties": { + "from": { + "$ref": "#/definitions/timestamp" + }, + "to": { + "$ref": "#/definitions/timestamp" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "cluster_resources": { + "additionalProperties": false, + "default": {}, + "description": "Which cluster resources to claim for this pipeline.", + "properties": { + "cores_per_task": { + "default": 2, + "description": "Number of cores to reserve for each process in the pipeline.", + "maximum": 24, + "minimum": 1, + "title": "Cores/task", + "type": "integer" + }, + "parallel_tasks": { + "default": 122, + "description": "Maximum number of tasks to run in parallel. Determines the size of the reservation. A smaller reservation results in a longer pipeline run. A bigger reservation results in more in resource waste.", + "maximum": 488, + "minimum": 1, + "title": "Max parallel tasks", + "type": "integer" + }, + "where": { + "additionalProperties": false, + "default": {}, + "description": "Where to run this pipeline.", + "properties": { + "cluster": { + "default": "CEP4", + "enum": [ + "CEP4" + ], + "title": "Cluster", + "type": "string" + }, + "partition": { + "default": "cpu", + "enum": [ + "cpu", + "gpu", + "testing" + ], + "title": "Partition", + "type": "string" + } + }, + "required": [ + "cluster", + "partition" + ], + "title": "Where", + "type": "object" + } + }, + "required": [ + "where", + "cores_per_task", + "parallel_tasks" + ], + "title": "Cluster resources", + "type": "object" + }, + "demix_strategy": { + "default": "auto", + "enum": [ + "auto", + "yes", + "no" + ], + "type": "string" + }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, + "pointing": { + "additionalProperties": false, + "properties": { + "angle1": { + "default": 0.6624317181687094, + "description": "First angle (e.g. RA)", + "title": "Angle 1", + "type": "number" + }, + "angle2": { + "default": 1.5579526427549426, + "description": "Second angle (e.g. DEC)", + "title": "Angle 2", + "type": "number" + }, + "direction_type": { + "default": "J2000", + "description": "", + "enum": [ + "J2000", + "AZELGEO", + "LMN", + "SUN", + "MOON", + "MERCURY", + "VENUS", + "MARS", + "JUPITER", + "SATURN", + "URANUS", + "NEPTUNE", + "PLUTO" + ], + "title": "Reference frame", + "type": "string" + }, + "target": { + "default": "_target_name_", + "description": "Description of where this beam points at", + "minLength": 1, + "title": "Target", + "type": "string" + } + }, + "required": [ + "angle1", + "angle2", + "target" + ], + "type": "object" + }, + "purpose": { + "default": "target", + "description": "The intended use of this pointing: calibrator, target or all sky", + "enum": [ + "calibrator", + "target", + "all sky" + ], + "type": "string" + }, + "QA": { + "additionalProperties": false, + "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", + "properties": { + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} + }, + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" + }, + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" + }, + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" + }, + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" + } + }, + "required": [ + "enabled", + "nr_of_subbands", + "nr_of_timestamps" + ], + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", + "type": "object" + }, + "SAPs": { + "additionalItems": false, + "default": [ + {} + ], + "description": "Station beams", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "{{ i0 }} - {{ self.name }}", + "properties": { + "digital_pointing": { + "$id": "#target_pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "title": "Digital pointing" + }, + "name": { + "default": "_SAP_name_", + "description": "Identifier for this beam", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "subbands": { + "additionalItems": false, + "default": [ + 255 + ], + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "maxItems": 488, + "minItems": 1, + "title": "Subband list", + "type": "array" + } + }, + "required": [ + "name", + "digital_pointing", + "subbands" + ], + "title": "SAP", + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, + "antenna_set": { + "default": "HBA_DUAL", + "description": "Fields & antennas to use", + "enum": [ + "HBA_DUAL", + "HBA_DUAL_INNER", + "HBA_ONE", + "HBA_ONE_INNER", + "HBA_ZERO", + "HBA_ZERO_INNER", + "LBA_INNER", + "LBA_OUTER", + "LBA_SPARSE_EVEN", + "LBA_SPARSE_ODD", + "LBA_ALL" + ], + "title": "Antenna set", + "type": "string" + }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, + "antennas": { + "description": "Structure to describe a set of specific antennafields", + "properties": { + "fields": { + "default": [], + "items": { + "properties": { + "field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Field", + "type": "string" + }, + "station": { + "$ref": "#/definitions/station" + }, + "type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "station", + "field", + "type" + ], + "title": "Field", + "type": "object" + }, + "title": "Fields", + "type": "array" + }, + "set": { + "$ref": "#/definitions/antenna_set", + "default": "HBA_DUAL" + } + }, + "required": [ + "fields" + ], + "title": "Antennas", + "type": "object" + }, + "filter": { + "default": "HBA_110_190", + "description": "Must match antenna type", + "enum": [ + "LBA_10_90", + "LBA_30_90", + "HBA_110_190", + "HBA_210_250" + ], + "title": "Band-pass filter", + "type": "string" + }, + "max_number_of_missing_stations": { + "default": 0, + "description": "Maximum number of stations that can be omitted from a group (due to maintenance for example)", + "minimum": 0, + "title": "Maximum number of stations to omit", + "type": "integer" + }, + "station": { + "description": "These are the LOFAR stations", + "enum": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "FR606", + "SE607", + "UK608", + "DE609", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ], + "title": "Station", + "type": "string" + }, + "station_group": { + "anyOf": [ + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "The group of all stations on the Superterp", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Superterp", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + }, + "description": "The group of all Core stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Core", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch remote stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Remote", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch (Core + Remote) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + }, + "description": "A subgroup of the international stations which are required when doing observation with international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International required", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 6, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all (Core + Remote + International) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", + "type": "object" + } + ], + "default": { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "A set of predefined list of stations, and a constraint on how many stations are allowed to be missing (due to maintenance for example)", + "title": "Station group", + "type": "object" + }, + "station_groups": { + "additionalItems": false, + "additionalProperties": false, + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "description": "One or more predefined or custom groups of stations", + "items": { + "$ref": "#/definitions/station_group" + }, + "minItems": 1, + "title": "Station groups", + "type": "array" + }, + "station_list": { + "additionalItems": false, + "additionalProperties": false, + "default": [], + "items": { + "$ref": "#/definitions/station" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, + "task_connector": { + "additionalProperties": false, + "default": {}, + "description": "A task connector describes what a task can take as input and produces as output.", + "properties": { + "dataformat": { + "description": "The data type of a task connector describes in which format the data is produced/consumed.", + "enum": [ + "MeasurementSet", + "Beamformed", + "QA_HDF5", + "QA_Plots", + "pulp summary", + "pulp analysis" + ], + "title": "Data Format", + "type": "string" + }, + "datatype": { + "description": "The data type of a task connector describes its what kind of data is produced/consumed.", + "enum": [ + "visibilities", + "time series", + "instrument model", + "image", + "quality", + "pulsar profile" + ], + "title": "Data Type", + "type": "string" + }, + "role": { + "description": "The role of a task connector describes its intended use.", + "enum": [ + "correlator", + "beamformer", + "inspection plots", + "calibrator", + "target", + "any" + ], + "title": "Role", + "type": "string" + } + }, + "required": [ + "role", + "datatype", + "dataformat" + ], + "type": "object" + } + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": {} + }, + "beamformer": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/beamforming/9#/definitions/beamformer", + "default": {} + }, + "correlator": { + "$ref": "#/definitions/correlator", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 600, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "station_configuration": { + "$ref": "#/definitions/station_configuration", + "default": {} + } + } + }, + "type": "http://localhost:3000/api/task_type/observation", + "type_value": "observation" + }, + { + "description": "This schema defines the parameters to setup a target observation task.", + "name": "target observation", + "purpose": "technical_commissioning", + "schema": { + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/target%20observation/7#", + "$schema": "http://json-schema.org/draft-06/schema#", + "additionalProperties": false, + "description": "This schema defines the parameters to setup a target observation task.", + "patternProperties": { + "^[$]schema$": {} + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": {} + }, + "correlator": { + "$ref": "#/definitions/correlator", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 600, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "station_configuration": { + "$ref": "#/definitions/station_configuration", + "default": {} + } + }, + "required": [ + "correlator", + "duration", + "station_configuration" + ], + "title": "target observation", + "version": 7 + }, + "state": "legacy", + "version": 7, + "id": 17, + "ref_resolved_schema": { + "definitions": { + "beamformer": { + "additionalProperties": false, + "default": {}, + "properties": { + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" + }, + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", + "type": "boolean" + } + }, + "required": [ + "pipelines", + "ppf" + ], + "title": "Beamformer", + "type": "object" + }, + "beamformer_pipeline": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "properties": { + "coherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [ + { + "name": "_SAP_name_", + "tabs": [] + } + ], + "description": "Which SAPs in the observation to beamform.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + }, + "tab_rings": { + "additonalProperties": false, + "default": {}, + "description": "Rings of TABs around the center of the beam.", + "properties": { + "count": { + "default": 0, + "maximum": 11, + "minimum": 0, + "title": "Number of rings", + "type": "integer" + }, + "width": { + "default": 0.01, + "description": "Distance between pointings.", + "minimum": 0, + "title": "Ring width", + "type": "number" + } + }, + "title": "Tied-Array Rings", + "type": "object" + }, + "tabs": { + "additionalItems": false, + "default": [], + "description": "Tied-array beams to form", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "TAB {{ self.index }}", + "properties": { + "allow_after_previous": { + "default": true, + "description": "This TAB can be recorded after the previous TAB, if duration allows.", + "title": "Allow after previous", + "type": "boolean" + }, + "duration": { + "default": 0, + "description": "Exposure time of the TAB. 0 = observation duration.", + "maximum": 0, + "minimum": 0, + "title": "Duration", + "type": "integer" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {} + }, + "relative": { + "default": false, + "description": "The SAP pointing is added to the TAB pointing", + "title": "Relative to SAP", + "type": "boolean" + } + }, + "required": [ + "pointing", + "relative" + ], + "title": "Tied-Array Beam", + "type": "object" + }, + "title": "Tied-Array Beams", + "type": "array" + } + }, + "required": [ + "name", + "tabs" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "SAPs", + "settings" + ], + "title": "Coherent Tied-Array Beams", + "type": "object" + }, + "flys eye": { + "additionalProperties": false, + "default": {}, + "description": "Produce beams containing the individual station signals", + "properties": { + "enabled": { + "default": false, + "title": "Enable Fly's Eye", + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "enabled" + ], + "title": "Fly's Eye Settings", + "type": "object" + }, + "incoherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [], + "description": "Which SAPs in the observation to create incoherent TABs for (empty list = all).", + "items": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + } + }, + "required": [ + "name", + "subbands" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "settings", + "SAPs" + ], + "title": "Incoherent Tied-Array Beams", + "type": "object" + }, + "name": { + "default": "_beamformer_name_", + "description": "Beamformer name, used for identification purposes.", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "description": "While observing, COBALT will beamform on the intersection of all stations in this list and the used stations in the observation. So, specifying all possible stations here means that all observation-stations are used. Specifying a small subset here means that only the observing-stations in this small list are used. By default we let COBALT beamform on the Core stations.", + "minItems": 1 + } + }, + "required": [ + "name" + ], + "title": "Beamformer Pipeline", + "type": "object" + }, + "stokes": { + "default": "I", + "description": "Which Stokes to produce", + "enum": [ + "I", + "IQUV", + "XXYY" + ], + "title": "Stokes", + "type": "string" + }, + "stokes_settings": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 1, + "description": "Number of frequency bands per subband", + "enum": [ + 1, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 1, + "title": "Channels/subband", + "type": "integer" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "properties": { + "bits": { + "default": 8, + "description": "Number of bits for a single value", + "enum": [ + 8 + ], + "title": "Bits/sample", + "type": "integer" + }, + "enabled": { + "default": false, + "title": "Output quantisation into integers", + "type": "boolean" + }, + "scale_max": { + "default": 5, + "description": "Cut off values above this treshold", + "title": "Maximum value", + "type": "number" + }, + "scale_min": { + "default": -5, + "description": "Cut off values below this treshold", + "title": "Minimum value", + "type": "number" + } + }, + "required": [ + "enabled", + "bits", + "scale_min", + "scale_max" + ], + "title": "Output quantisation settings", + "type": "object" + }, + "stokes": { + "$ref": "#/definitions/stokes", + "default": "I" + }, + "subbands_per_file": { + "default": 488, + "description": "The maximum number of subbands to write in each output dataproduct.", + "maximum": 488, + "minimum": 1, + "title": "Subbands per file", + "type": "integer" + }, + "time_integration_factor": { + "default": 1, + "description": "The number of samples to integrate over", + "maximum": 12288, + "minimum": 1, + "title": "Time integration", + "type": "integer" + } + }, + "required": [ + "stokes", + "time_integration_factor", + "channels_per_subband" + ], + "type": "object" + }, + "subband_selection": { + "additionalProperties": false, + "default": {}, + "properties": { + "list": { + "additionalItems": false, + "default": [], + "description": "If method is 'select subset', only beamform these subbands, and only if they occur in the SAP.", + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "minItems": 0, + "title": "Subset selection", + "type": "array" + }, + "method": { + "default": "copy", + "description": "How to select the subbands to beam form", + "enum": [ + "copy", + "largest continuous subset", + "select subset" + ], + "title": "Method", + "type": "string" + } + }, + "required": [ + "method" + ], + "title": "Subband selection", + "type": "object" + }, + "calibrator": { + "additionalProperties": false, + "default": {}, + "properties": { + "autoselect": { + "default": true, + "description": "Auto-select calibrator based on elevation", + "title": "Auto-select", + "type": "boolean" + }, + "name": { + "default": "calibrator", + "description": "Name of the calibrator SAP", + "title": "Name", + "type": "string" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "description": "Manually selected calibrator", + "title": "Digital pointing" + } + }, + "required": [ + "autoselect", + "pointing", + "name" + ], + "type": "object" + }, + "correlator": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 64, + "description": "Number of frequency bands per subband", + "enum": [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 8, + "title": "Channels/subband", + "type": "integer" + }, + "integration_time": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "default": 1, + "description": "Desired integration period (seconds)", + "minimum": 0.1, + "title": "Integration time" + }, + "storage_cluster": { + "default": "CEP4", + "description": "Cluster to write output to", + "enum": [ + "CEP4", + "DragNet" + ], + "title": "Storage cluster", + "type": "string" + }, + "topocentric_frequency_correction": { + "default": false, + "description": "Correct frequencies for the Doppler shift caused by the Earth's rotation.", + "title": "Topocentric Frequency Correction", + "type": "boolean" + } + } + }, + "timedelta": { + "default": 0, + "description": "A time duration or delta expressed in seconds", + "type": "number" + }, + "timestamp": { + "default": "1970-01-01T00:00:00Z", + "description": "A timestamp defined in UTC", + "format": "date-time", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d(\\.\\d+)?Z?", + "type": "string" + }, + "timewindow": { + "additionalProperties": false, + "description": "A timewindow interval: [from, to)", + "properties": { + "from": { + "$ref": "#/definitions/timestamp" + }, + "to": { + "$ref": "#/definitions/timestamp" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "cluster_resources": { + "additionalProperties": false, + "default": {}, + "description": "Which cluster resources to claim for this pipeline.", + "properties": { + "cores_per_task": { + "default": 2, + "description": "Number of cores to reserve for each process in the pipeline.", + "maximum": 24, + "minimum": 1, + "title": "Cores/task", + "type": "integer" + }, + "parallel_tasks": { + "default": 122, + "description": "Maximum number of tasks to run in parallel. Determines the size of the reservation. A smaller reservation results in a longer pipeline run. A bigger reservation results in more in resource waste.", + "maximum": 488, + "minimum": 1, + "title": "Max parallel tasks", + "type": "integer" + }, + "where": { + "additionalProperties": false, + "default": {}, + "description": "Where to run this pipeline.", + "properties": { + "cluster": { + "default": "CEP4", + "enum": [ + "CEP4" + ], + "title": "Cluster", + "type": "string" + }, + "partition": { + "default": "cpu", + "enum": [ + "cpu", + "gpu", + "testing" + ], + "title": "Partition", + "type": "string" + } + }, + "required": [ + "cluster", + "partition" + ], + "title": "Where", + "type": "object" + } + }, + "required": [ + "where", + "cores_per_task", + "parallel_tasks" + ], + "title": "Cluster resources", + "type": "object" + }, + "demix_strategy": { + "default": "auto", + "enum": [ + "auto", + "yes", + "no" + ], + "type": "string" + }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, + "pointing": { + "additionalProperties": false, + "properties": { + "angle1": { + "default": 0.6624317181687094, + "description": "First angle (e.g. RA)", + "title": "Angle 1", + "type": "number" + }, + "angle2": { + "default": 1.5579526427549426, + "description": "Second angle (e.g. DEC)", + "title": "Angle 2", + "type": "number" + }, + "direction_type": { + "default": "J2000", + "description": "", + "enum": [ + "J2000", + "AZELGEO", + "LMN", + "SUN", + "MOON", + "MERCURY", + "VENUS", + "MARS", + "JUPITER", + "SATURN", + "URANUS", + "NEPTUNE", + "PLUTO" + ], + "title": "Reference frame", + "type": "string" + }, + "target": { + "default": "_target_name_", + "description": "Description of where this beam points at", + "minLength": 1, + "title": "Target", + "type": "string" + } + }, + "required": [ + "angle1", + "angle2", + "target" + ], + "type": "object" + }, + "purpose": { + "default": "target", + "description": "The intended use of this pointing: calibrator, target or all sky", + "enum": [ + "calibrator", + "target", + "all sky" + ], + "type": "string" + }, + "QA": { + "additionalProperties": false, + "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", + "properties": { + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} + }, + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" + }, + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" + }, + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" + }, + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" + } + }, + "required": [ + "enabled", + "nr_of_subbands", + "nr_of_timestamps" + ], + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", + "type": "object" + }, + "SAPs": { + "additionalItems": false, + "default": [ + {} + ], + "description": "Station beams", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "{{ i0 }} - {{ self.name }}", + "properties": { + "digital_pointing": { + "$id": "#target_pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "title": "Digital pointing" + }, + "name": { + "default": "_SAP_name_", + "description": "Identifier for this beam", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "subbands": { + "additionalItems": false, + "default": [ + 255 + ], + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "maxItems": 488, + "minItems": 1, + "title": "Subband list", + "type": "array" + } + }, + "required": [ + "name", + "digital_pointing", + "subbands" + ], + "title": "SAP", + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, + "antenna_set": { + "default": "HBA_DUAL", + "description": "Fields & antennas to use", + "enum": [ + "HBA_DUAL", + "HBA_DUAL_INNER", + "HBA_ONE", + "HBA_ONE_INNER", + "HBA_ZERO", + "HBA_ZERO_INNER", + "LBA_INNER", + "LBA_OUTER", + "LBA_SPARSE_EVEN", + "LBA_SPARSE_ODD", + "LBA_ALL" + ], + "title": "Antenna set", + "type": "string" + }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, + "antennas": { + "description": "Structure to describe a set of specific antennafields", + "properties": { + "fields": { + "default": [], + "items": { + "properties": { + "field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Field", + "type": "string" + }, + "station": { + "$ref": "#/definitions/station" + }, + "type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "station", + "field", + "type" + ], + "title": "Field", + "type": "object" + }, + "title": "Fields", + "type": "array" + }, + "set": { + "$ref": "#/definitions/antenna_set", + "default": "HBA_DUAL" + } + }, + "required": [ + "fields" + ], + "title": "Antennas", + "type": "object" + }, + "filter": { + "default": "HBA_110_190", + "description": "Must match antenna type", + "enum": [ + "LBA_10_90", + "LBA_30_90", + "HBA_110_190", + "HBA_210_250" + ], + "title": "Band-pass filter", + "type": "string" + }, + "max_number_of_missing_stations": { + "default": 0, + "description": "Maximum number of stations that can be omitted from a group (due to maintenance for example)", + "minimum": 0, + "title": "Maximum number of stations to omit", + "type": "integer" + }, + "station": { + "description": "These are the LOFAR stations", + "enum": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "FR606", + "SE607", + "UK608", + "DE609", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ], + "title": "Station", + "type": "string" + }, + "station_group": { + "anyOf": [ + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "The group of all stations on the Superterp", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Superterp", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + }, + "description": "The group of all Core stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Core", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch remote stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Remote", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch (Core + Remote) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + }, + "description": "A subgroup of the international stations which are required when doing observation with international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International required", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 6, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all (Core + Remote + International) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", + "type": "object" + } + ], + "default": { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "A set of predefined list of stations, and a constraint on how many stations are allowed to be missing (due to maintenance for example)", + "title": "Station group", + "type": "object" + }, + "station_groups": { + "additionalItems": false, + "additionalProperties": false, + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "description": "One or more predefined or custom groups of stations", + "items": { + "$ref": "#/definitions/station_group" + }, + "minItems": 1, + "title": "Station groups", + "type": "array" + }, + "station_list": { + "additionalItems": false, + "additionalProperties": false, + "default": [], + "items": { + "$ref": "#/definitions/station" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, + "task_connector": { + "additionalProperties": false, + "default": {}, + "description": "A task connector describes what a task can take as input and produces as output.", + "properties": { + "dataformat": { + "description": "The data type of a task connector describes in which format the data is produced/consumed.", + "enum": [ + "MeasurementSet", + "Beamformed", + "QA_HDF5", + "QA_Plots", + "pulp summary", + "pulp analysis" + ], + "title": "Data Format", + "type": "string" + }, + "datatype": { + "description": "The data type of a task connector describes its what kind of data is produced/consumed.", + "enum": [ + "visibilities", + "time series", + "instrument model", + "image", + "quality", + "pulsar profile" + ], + "title": "Data Type", + "type": "string" + }, + "role": { + "description": "The role of a task connector describes its intended use.", + "enum": [ + "correlator", + "beamformer", + "inspection plots", + "calibrator", + "target", + "any" + ], + "title": "Role", + "type": "string" + } + }, + "required": [ + "role", + "datatype", + "dataformat" + ], + "type": "object" + } + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": {} + }, + "correlator": { + "$ref": "#/definitions/correlator", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 600, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "station_configuration": { + "$ref": "#/definitions/station_configuration", + "default": {} + } + } + }, + "type": "http://localhost:3000/api/task_type/observation", + "type_value": "observation" + }, + { + "description": "This schema defines the parameters to setup a target observation task.", + "name": "target observation", + "purpose": "technical_commissioning", + "schema": { + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/target%20observation/8#", + "$schema": "http://json-schema.org/draft-06/schema#", + "additionalProperties": false, + "description": "This schema defines the parameters to setup a target observation task.", + "patternProperties": { + "^[$]schema$": {} + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": {} + }, + "correlator": { + "$ref": "#/definitions/correlator", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 600, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "station_configuration": { + "$ref": "#/definitions/station_configuration", + "default": {} + } + }, + "required": [ + "correlator", + "duration", + "station_configuration" + ], + "title": "target observation", + "version": 8 + }, + "state": "legacy", + "version": 8, + "id": 18, + "ref_resolved_schema": { + "definitions": { + "beamformer": { + "additionalProperties": false, + "default": {}, + "properties": { + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" + }, + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", + "type": "boolean" + } + }, + "required": [ + "pipelines", + "ppf" + ], + "title": "Beamformer", + "type": "object" + }, + "beamformer_pipeline": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "properties": { + "coherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [ + { + "name": "_SAP_name_", + "tabs": [] + } + ], + "description": "Which SAPs in the observation to beamform.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + }, + "tab_rings": { + "additonalProperties": false, + "default": {}, + "description": "Rings of TABs around the center of the beam.", + "properties": { + "count": { + "default": 0, + "maximum": 11, + "minimum": 0, + "title": "Number of rings", + "type": "integer" + }, + "width": { + "default": 0.01, + "description": "Distance between pointings.", + "minimum": 0, + "title": "Ring width", + "type": "number" + } + }, + "title": "Tied-Array Rings", + "type": "object" + }, + "tabs": { + "additionalItems": false, + "default": [], + "description": "Tied-array beams to form", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "TAB {{ self.index }}", + "properties": { + "allow_after_previous": { + "default": true, + "description": "This TAB can be recorded after the previous TAB, if duration allows.", + "title": "Allow after previous", + "type": "boolean" + }, + "duration": { + "default": 0, + "description": "Exposure time of the TAB. 0 = observation duration.", + "maximum": 0, + "minimum": 0, + "title": "Duration", + "type": "integer" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {} + }, + "relative": { + "default": false, + "description": "The SAP pointing is added to the TAB pointing", + "title": "Relative to SAP", + "type": "boolean" + } + }, + "required": [ + "pointing", + "relative" + ], + "title": "Tied-Array Beam", + "type": "object" + }, + "title": "Tied-Array Beams", + "type": "array" + } + }, + "required": [ + "name", + "tabs" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "SAPs", + "settings" + ], + "title": "Coherent Tied-Array Beams", + "type": "object" + }, + "flys eye": { + "additionalProperties": false, + "default": {}, + "description": "Produce beams containing the individual station signals", + "properties": { + "enabled": { + "default": false, + "title": "Enable Fly's Eye", + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "enabled" + ], + "title": "Fly's Eye Settings", + "type": "object" + }, + "incoherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [], + "description": "Which SAPs in the observation to create incoherent TABs for (empty list = all).", + "items": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + } + }, + "required": [ + "name", + "subbands" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "settings", + "SAPs" + ], + "title": "Incoherent Tied-Array Beams", + "type": "object" + }, + "name": { + "default": "_beamformer_name_", + "description": "Beamformer name, used for identification purposes.", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "description": "While observing, COBALT will beamform on the intersection of all stations in this list and the used stations in the observation. So, specifying all possible stations here means that all observation-stations are used. Specifying a small subset here means that only the observing-stations in this small list are used. By default we let COBALT beamform on the Core stations.", + "minItems": 1 + } + }, + "required": [ + "name" + ], + "title": "Beamformer Pipeline", + "type": "object" + }, + "stokes": { + "default": "I", + "description": "Which Stokes to produce", + "enum": [ + "I", + "IQUV", + "XXYY" + ], + "title": "Stokes", + "type": "string" + }, + "stokes_settings": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 1, + "description": "Number of frequency bands per subband", + "enum": [ + 1, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 1, + "title": "Channels/subband", + "type": "integer" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "properties": { + "bits": { + "default": 8, + "description": "Number of bits for a single value", + "enum": [ + 8 + ], + "title": "Bits/sample", + "type": "integer" + }, + "enabled": { + "default": false, + "title": "Output quantisation into integers", + "type": "boolean" + }, + "scale_max": { + "default": 5, + "description": "Cut off values above this treshold", + "title": "Maximum value", + "type": "number" + }, + "scale_min": { + "default": -5, + "description": "Cut off values below this treshold", + "title": "Minimum value", + "type": "number" + } + }, + "required": [ + "enabled", + "bits", + "scale_min", + "scale_max" + ], + "title": "Output quantisation settings", + "type": "object" + }, + "stokes": { + "$ref": "#/definitions/stokes", + "default": "I" + }, + "subbands_per_file": { + "default": 488, + "description": "The maximum number of subbands to write in each output dataproduct.", + "maximum": 488, + "minimum": 1, + "title": "Subbands per file", + "type": "integer" + }, + "time_integration_factor": { + "default": 1, + "description": "The number of samples to integrate over", + "maximum": 12288, + "minimum": 1, + "title": "Time integration", + "type": "integer" + } + }, + "required": [ + "stokes", + "time_integration_factor", + "channels_per_subband" + ], + "type": "object" + }, + "subband_selection": { + "additionalProperties": false, + "default": {}, + "properties": { + "list": { + "additionalItems": false, + "default": [], + "description": "If method is 'select subset', only beamform these subbands, and only if they occur in the SAP.", + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "minItems": 0, + "title": "Subset selection", + "type": "array" + }, + "method": { + "default": "copy", + "description": "How to select the subbands to beam form", + "enum": [ + "copy", + "largest continuous subset", + "select subset" + ], + "title": "Method", + "type": "string" + } + }, + "required": [ + "method" + ], + "title": "Subband selection", + "type": "object" + }, + "calibrator": { + "additionalProperties": false, + "default": {}, + "properties": { + "autoselect": { + "default": true, + "description": "Auto-select calibrator based on elevation", + "title": "Auto-select", + "type": "boolean" + }, + "name": { + "default": "calibrator", + "description": "Name of the calibrator SAP", + "title": "Name", + "type": "string" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "description": "Manually selected calibrator", + "title": "Digital pointing" + } + }, + "required": [ + "autoselect", + "pointing", + "name" + ], + "type": "object" + }, + "correlator": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 64, + "description": "Number of frequency bands per subband", + "enum": [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 8, + "title": "Channels/subband", + "type": "integer" + }, + "integration_time": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "default": 1, + "description": "Desired integration period (seconds)", + "minimum": 0.1, + "title": "Integration time" + }, + "storage_cluster": { + "default": "CEP4", + "description": "Cluster to write output to", + "enum": [ + "CEP4", + "DragNet" + ], + "title": "Storage cluster", + "type": "string" + }, + "topocentric_frequency_correction": { + "default": false, + "description": "Correct frequencies for the Doppler shift caused by the Earth's rotation.", + "title": "Topocentric Frequency Correction", + "type": "boolean" + } + } + }, + "timedelta": { + "default": 0, + "description": "A time duration or delta expressed in seconds", + "type": "number" + }, + "timestamp": { + "default": "1970-01-01T00:00:00Z", + "description": "A timestamp defined in UTC", + "format": "date-time", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d(\\.\\d+)?Z?", + "type": "string" + }, + "timewindow": { + "additionalProperties": false, + "description": "A timewindow interval: [from, to)", + "properties": { + "from": { + "$ref": "#/definitions/timestamp" + }, + "to": { + "$ref": "#/definitions/timestamp" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "cluster_resources": { + "additionalProperties": false, + "default": {}, + "description": "Which cluster resources to claim for this pipeline.", + "properties": { + "cores_per_task": { + "default": 2, + "description": "Number of cores to reserve for each process in the pipeline.", + "maximum": 24, + "minimum": 1, + "title": "Cores/task", + "type": "integer" + }, + "parallel_tasks": { + "default": 122, + "description": "Maximum number of tasks to run in parallel. Determines the size of the reservation. A smaller reservation results in a longer pipeline run. A bigger reservation results in more in resource waste.", + "maximum": 488, + "minimum": 1, + "title": "Max parallel tasks", + "type": "integer" + }, + "where": { + "additionalProperties": false, + "default": {}, + "description": "Where to run this pipeline.", + "properties": { + "cluster": { + "default": "CEP4", + "enum": [ + "CEP4" + ], + "title": "Cluster", + "type": "string" + }, + "partition": { + "default": "cpu", + "enum": [ + "cpu", + "gpu", + "testing" + ], + "title": "Partition", + "type": "string" + } + }, + "required": [ + "cluster", + "partition" + ], + "title": "Where", + "type": "object" + } + }, + "required": [ + "where", + "cores_per_task", + "parallel_tasks" + ], + "title": "Cluster resources", + "type": "object" + }, + "demix_strategy": { + "default": "auto", + "enum": [ + "auto", + "yes", + "no" + ], + "type": "string" + }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, + "pointing": { + "additionalProperties": false, + "properties": { + "angle1": { + "default": 0.6624317181687094, + "description": "First angle (e.g. RA)", + "title": "Angle 1", + "type": "number" + }, + "angle2": { + "default": 1.5579526427549426, + "description": "Second angle (e.g. DEC)", + "title": "Angle 2", + "type": "number" + }, + "direction_type": { + "default": "J2000", + "description": "", + "enum": [ + "J2000", + "AZELGEO", + "LMN", + "SUN", + "MOON", + "MERCURY", + "VENUS", + "MARS", + "JUPITER", + "SATURN", + "URANUS", + "NEPTUNE", + "PLUTO" + ], + "title": "Reference frame", + "type": "string" + }, + "target": { + "default": "_target_name_", + "description": "Description of where this beam points at", + "minLength": 1, + "title": "Target", + "type": "string" + } + }, + "required": [ + "angle1", + "angle2", + "target" + ], + "type": "object" + }, + "purpose": { + "default": "target", + "description": "The intended use of this pointing: calibrator, target or all sky", + "enum": [ + "calibrator", + "target", + "all sky" + ], + "type": "string" + }, + "QA": { + "additionalProperties": false, + "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", + "properties": { + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} + }, + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" + }, + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" + }, + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" + }, + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" + } + }, + "required": [ + "enabled", + "nr_of_subbands", + "nr_of_timestamps" + ], + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", + "type": "object" + }, + "SAPs": { + "additionalItems": false, + "default": [ + {} + ], + "description": "Station beams", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "{{ i0 }} - {{ self.name }}", + "properties": { + "digital_pointing": { + "$id": "#target_pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "title": "Digital pointing" + }, + "name": { + "default": "_SAP_name_", + "description": "Identifier for this beam", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "subbands": { + "additionalItems": false, + "default": [ + 255 + ], + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "maxItems": 488, + "minItems": 1, + "title": "Subband list", + "type": "array" + } + }, + "required": [ + "name", + "digital_pointing", + "subbands" + ], + "title": "SAP", + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, + "antenna_set": { + "default": "HBA_DUAL", + "description": "Fields & antennas to use", + "enum": [ + "HBA_DUAL", + "HBA_DUAL_INNER", + "HBA_ONE", + "HBA_ONE_INNER", + "HBA_ZERO", + "HBA_ZERO_INNER", + "LBA_INNER", + "LBA_OUTER", + "LBA_SPARSE_EVEN", + "LBA_SPARSE_ODD", + "LBA_ALL" + ], + "title": "Antenna set", + "type": "string" + }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, + "antennas": { + "description": "Structure to describe a set of specific antennafields", + "properties": { + "fields": { + "default": [], + "items": { + "properties": { + "field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Field", + "type": "string" + }, + "station": { + "$ref": "#/definitions/station" + }, + "type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "station", + "field", + "type" + ], + "title": "Field", + "type": "object" + }, + "title": "Fields", + "type": "array" + }, + "set": { + "$ref": "#/definitions/antenna_set", + "default": "HBA_DUAL" + } + }, + "required": [ + "fields" + ], + "title": "Antennas", + "type": "object" + }, + "filter": { + "default": "HBA_110_190", + "description": "Must match antenna type", + "enum": [ + "LBA_10_90", + "LBA_30_90", + "HBA_110_190", + "HBA_210_250" + ], + "title": "Band-pass filter", + "type": "string" + }, + "max_number_of_missing_stations": { + "default": 0, + "description": "Maximum number of stations that can be omitted from a group (due to maintenance for example)", + "minimum": 0, + "title": "Maximum number of stations to omit", + "type": "integer" + }, + "station": { + "description": "These are the LOFAR stations", + "enum": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "FR606", + "SE607", + "UK608", + "DE609", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ], + "title": "Station", + "type": "string" + }, + "station_group": { + "anyOf": [ + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "The group of all stations on the Superterp", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Superterp", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + }, + "description": "The group of all Core stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Core", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch remote stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Remote", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch (Core + Remote) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + }, + "description": "A subgroup of the international stations which are required when doing observation with international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International required", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 6, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all (Core + Remote + International) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", + "type": "object" + } + ], + "default": { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "A set of predefined list of stations, and a constraint on how many stations are allowed to be missing (due to maintenance for example)", + "title": "Station group", + "type": "object" + }, + "station_groups": { + "additionalItems": false, + "additionalProperties": false, + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "description": "One or more predefined or custom groups of stations", + "items": { + "$ref": "#/definitions/station_group" + }, + "minItems": 1, + "title": "Station groups", + "type": "array" + }, + "station_list": { + "additionalItems": false, + "additionalProperties": false, + "default": [], + "items": { + "$ref": "#/definitions/station" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, + "task_connector": { + "additionalProperties": false, + "default": {}, + "description": "A task connector describes what a task can take as input and produces as output.", + "properties": { + "dataformat": { + "description": "The data type of a task connector describes in which format the data is produced/consumed.", + "enum": [ + "MeasurementSet", + "Beamformed", + "QA_HDF5", + "QA_Plots", + "pulp summary", + "pulp analysis" + ], + "title": "Data Format", + "type": "string" + }, + "datatype": { + "description": "The data type of a task connector describes its what kind of data is produced/consumed.", + "enum": [ + "visibilities", + "time series", + "instrument model", + "image", + "quality", + "pulsar profile" + ], + "title": "Data Type", + "type": "string" + }, + "role": { + "description": "The role of a task connector describes its intended use.", + "enum": [ + "correlator", + "beamformer", + "inspection plots", + "calibrator", + "target", + "any" + ], + "title": "Role", + "type": "string" + } + }, + "required": [ + "role", + "datatype", + "dataformat" + ], + "type": "object" + } + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": {} + }, + "correlator": { + "$ref": "#/definitions/correlator", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 600, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "station_configuration": { + "$ref": "#/definitions/station_configuration", + "default": {} + } + } + }, + "type": "http://localhost:3000/api/task_type/observation", + "type_value": "observation" + }, + { + "description": "This schema defines the parameters to setup a target observation task.", + "name": "target observation", + "purpose": "technical_commissioning", + "schema": { + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/target%20observation/9#", + "$schema": "http://json-schema.org/draft-06/schema#", + "additionalProperties": false, + "description": "This schema defines the parameters to setup a target observation task.", + "patternProperties": { + "^[$]schema$": {} + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": {} + }, + "correlator": { + "$ref": "#/definitions/correlator", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 600, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "station_configuration": { + "$ref": "#/definitions/station_configuration", + "default": {} + } + }, + "required": [ + "correlator", + "duration", + "station_configuration" + ], + "title": "target observation", + "version": 9 + }, + "state": "active", + "version": 9, + "id": 19, + "ref_resolved_schema": { + "definitions": { + "beamformer": { + "additionalProperties": false, + "default": {}, + "properties": { + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" + }, + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", + "type": "boolean" + } + }, + "required": [ + "pipelines", + "ppf" + ], + "title": "Beamformer", + "type": "object" + }, + "beamformer_pipeline": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "properties": { + "coherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [ + { + "name": "_SAP_name_", + "tabs": [] + } + ], + "description": "Which SAPs in the observation to beamform.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + }, + "tab_rings": { + "additonalProperties": false, + "default": {}, + "description": "Rings of TABs around the center of the beam.", + "properties": { + "count": { + "default": 0, + "maximum": 11, + "minimum": 0, + "title": "Number of rings", + "type": "integer" + }, + "width": { + "default": 0.01, + "description": "Distance between pointings.", + "minimum": 0, + "title": "Ring width", + "type": "number" + } + }, + "title": "Tied-Array Rings", + "type": "object" + }, + "tabs": { + "additionalItems": false, + "default": [], + "description": "Tied-array beams to form", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "TAB {{ self.index }}", + "properties": { + "allow_after_previous": { + "default": true, + "description": "This TAB can be recorded after the previous TAB, if duration allows.", + "title": "Allow after previous", + "type": "boolean" + }, + "duration": { + "default": 0, + "description": "Exposure time of the TAB. 0 = observation duration.", + "maximum": 0, + "minimum": 0, + "title": "Duration", + "type": "integer" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {} + }, + "relative": { + "default": false, + "description": "The SAP pointing is added to the TAB pointing", + "title": "Relative to SAP", + "type": "boolean" + } + }, + "required": [ + "pointing", + "relative" + ], + "title": "Tied-Array Beam", + "type": "object" + }, + "title": "Tied-Array Beams", + "type": "array" + } + }, + "required": [ + "name", + "tabs" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "SAPs", + "settings" + ], + "title": "Coherent Tied-Array Beams", + "type": "object" + }, + "flys eye": { + "additionalProperties": false, + "default": {}, + "description": "Produce beams containing the individual station signals", + "properties": { + "enabled": { + "default": false, + "title": "Enable Fly's Eye", + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "enabled" + ], + "title": "Fly's Eye Settings", + "type": "object" + }, + "incoherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [], + "description": "Which SAPs in the observation to create incoherent TABs for (empty list = all).", + "items": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + } + }, + "required": [ + "name", + "subbands" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "settings", + "SAPs" + ], + "title": "Incoherent Tied-Array Beams", + "type": "object" + }, + "name": { + "default": "_beamformer_name_", + "description": "Beamformer name, used for identification purposes.", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "description": "While observing, COBALT will beamform on the intersection of all stations in this list and the used stations in the observation. So, specifying all possible stations here means that all observation-stations are used. Specifying a small subset here means that only the observing-stations in this small list are used. By default we let COBALT beamform on the Core stations.", + "minItems": 1 + } + }, + "required": [ + "name" + ], + "title": "Beamformer Pipeline", + "type": "object" + }, + "stokes": { + "default": "I", + "description": "Which Stokes to produce", + "enum": [ + "I", + "IQUV", + "XXYY" + ], + "title": "Stokes", + "type": "string" + }, + "stokes_settings": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 1, + "description": "Number of frequency bands per subband", + "enum": [ + 1, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 1, + "title": "Channels/subband", + "type": "integer" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "properties": { + "bits": { + "default": 8, + "description": "Number of bits for a single value", + "enum": [ + 8 + ], + "title": "Bits/sample", + "type": "integer" + }, + "enabled": { + "default": false, + "title": "Output quantisation into integers", + "type": "boolean" + }, + "scale_max": { + "default": 5, + "description": "Cut off values above this treshold", + "title": "Maximum value", + "type": "number" + }, + "scale_min": { + "default": -5, + "description": "Cut off values below this treshold", + "title": "Minimum value", + "type": "number" + } + }, + "required": [ + "enabled", + "bits", + "scale_min", + "scale_max" + ], + "title": "Output quantisation settings", + "type": "object" + }, + "stokes": { + "$ref": "#/definitions/stokes", + "default": "I" + }, + "subbands_per_file": { + "default": 488, + "description": "The maximum number of subbands to write in each output dataproduct.", + "maximum": 488, + "minimum": 1, + "title": "Subbands per file", + "type": "integer" + }, + "time_integration_factor": { + "default": 1, + "description": "The number of samples to integrate over", + "maximum": 12288, + "minimum": 1, + "title": "Time integration", + "type": "integer" + } + }, + "required": [ + "stokes", + "time_integration_factor", + "channels_per_subband" + ], + "type": "object" + }, + "subband_selection": { + "additionalProperties": false, + "default": {}, + "properties": { + "list": { + "additionalItems": false, + "default": [], + "description": "If method is 'select subset', only beamform these subbands, and only if they occur in the SAP.", + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "minItems": 0, + "title": "Subset selection", + "type": "array" + }, + "method": { + "default": "copy", + "description": "How to select the subbands to beam form", + "enum": [ + "copy", + "largest continuous subset", + "select subset" + ], + "title": "Method", + "type": "string" + } + }, + "required": [ + "method" + ], + "title": "Subband selection", + "type": "object" + }, + "calibrator": { + "additionalProperties": false, + "default": {}, + "properties": { + "autoselect": { + "default": true, + "description": "Auto-select calibrator based on elevation", + "title": "Auto-select", + "type": "boolean" + }, + "name": { + "default": "calibrator", + "description": "Name of the calibrator SAP", + "title": "Name", + "type": "string" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "description": "Manually selected calibrator", + "title": "Digital pointing" + } + }, + "required": [ + "autoselect", + "pointing", + "name" + ], + "type": "object" + }, + "correlator": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 64, + "description": "Number of frequency bands per subband", + "enum": [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 8, + "title": "Channels/subband", + "type": "integer" + }, + "integration_time": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "default": 1, + "description": "Desired integration period (seconds)", + "minimum": 0.1, + "title": "Integration time" + }, + "storage_cluster": { + "default": "CEP4", + "description": "Cluster to write output to", + "enum": [ + "CEP4", + "DragNet" + ], + "title": "Storage cluster", + "type": "string" + }, + "topocentric_frequency_correction": { + "default": false, + "description": "Correct frequencies for the Doppler shift caused by the Earth's rotation.", + "title": "Topocentric Frequency Correction", + "type": "boolean" + } + } + }, + "timedelta": { + "default": 0, + "description": "A time duration or delta expressed in seconds", + "type": "number" + }, + "timestamp": { + "default": "1970-01-01T00:00:00Z", + "description": "A timestamp defined in UTC", + "format": "date-time", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d(\\.\\d+)?Z?", + "type": "string" + }, + "timewindow": { + "additionalProperties": false, + "description": "A timewindow interval: [from, to)", + "properties": { + "from": { + "$ref": "#/definitions/timestamp" + }, + "to": { + "$ref": "#/definitions/timestamp" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "cluster_resources": { + "additionalProperties": false, + "default": {}, + "description": "Which cluster resources to claim for this pipeline.", + "properties": { + "cores_per_task": { + "default": 2, + "description": "Number of cores to reserve for each process in the pipeline.", + "maximum": 24, + "minimum": 1, + "title": "Cores/task", + "type": "integer" + }, + "parallel_tasks": { + "default": 122, + "description": "Maximum number of tasks to run in parallel. Determines the size of the reservation. A smaller reservation results in a longer pipeline run. A bigger reservation results in more in resource waste.", + "maximum": 488, + "minimum": 1, + "title": "Max parallel tasks", + "type": "integer" + }, + "where": { + "additionalProperties": false, + "default": {}, + "description": "Where to run this pipeline.", + "properties": { + "cluster": { + "default": "CEP4", + "enum": [ + "CEP4" + ], + "title": "Cluster", + "type": "string" + }, + "partition": { + "default": "cpu", + "enum": [ + "cpu", + "gpu", + "testing" + ], + "title": "Partition", + "type": "string" + } + }, + "required": [ + "cluster", + "partition" + ], + "title": "Where", + "type": "object" + } + }, + "required": [ + "where", + "cores_per_task", + "parallel_tasks" + ], + "title": "Cluster resources", + "type": "object" + }, + "demix_strategy": { + "default": "auto", + "enum": [ + "auto", + "yes", + "no" + ], + "type": "string" + }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, + "pointing": { + "additionalProperties": false, + "properties": { + "angle1": { + "default": 0.6624317181687094, + "description": "First angle (e.g. RA)", + "title": "Angle 1", + "type": "number" + }, + "angle2": { + "default": 1.5579526427549426, + "description": "Second angle (e.g. DEC)", + "title": "Angle 2", + "type": "number" + }, + "direction_type": { + "default": "J2000", + "description": "", + "enum": [ + "J2000", + "AZELGEO", + "LMN", + "SUN", + "MOON", + "MERCURY", + "VENUS", + "MARS", + "JUPITER", + "SATURN", + "URANUS", + "NEPTUNE", + "PLUTO" + ], + "title": "Reference frame", + "type": "string" + }, + "target": { + "default": "_target_name_", + "description": "Description of where this beam points at", + "minLength": 1, + "title": "Target", + "type": "string" + } + }, + "required": [ + "angle1", + "angle2", + "target" + ], + "type": "object" + }, + "purpose": { + "default": "target", + "description": "The intended use of this pointing: calibrator, target or all sky", + "enum": [ + "calibrator", + "target", + "all sky" + ], + "type": "string" + }, + "QA": { + "additionalProperties": false, + "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", + "properties": { + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} + }, + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" + }, + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" + }, + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" + }, + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" + } + }, + "required": [ + "enabled", + "nr_of_subbands", + "nr_of_timestamps" + ], + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", + "type": "object" + }, + "SAPs": { + "additionalItems": false, + "default": [ + {} + ], + "description": "Station beams", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "{{ i0 }} - {{ self.name }}", + "properties": { + "digital_pointing": { + "$id": "#target_pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "title": "Digital pointing" + }, + "name": { + "default": "_SAP_name_", + "description": "Identifier for this beam", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "subbands": { + "additionalItems": false, + "default": [ + 255 + ], + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "maxItems": 488, + "minItems": 1, + "title": "Subband list", + "type": "array" + } + }, + "required": [ + "name", + "digital_pointing", + "subbands" + ], + "title": "SAP", + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, + "antenna_set": { + "default": "HBA_DUAL", + "description": "Fields & antennas to use", + "enum": [ + "HBA_DUAL", + "HBA_DUAL_INNER", + "HBA_ONE", + "HBA_ONE_INNER", + "HBA_ZERO", + "HBA_ZERO_INNER", + "LBA_INNER", + "LBA_OUTER", + "LBA_SPARSE_EVEN", + "LBA_SPARSE_ODD", + "LBA_ALL" + ], + "title": "Antenna set", + "type": "string" + }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, + "antennas": { + "description": "Structure to describe a set of specific antennafields", + "properties": { + "fields": { + "default": [], + "items": { + "properties": { + "field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Field", + "type": "string" + }, + "station": { + "$ref": "#/definitions/station" + }, + "type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "station", + "field", + "type" + ], + "title": "Field", + "type": "object" + }, + "title": "Fields", + "type": "array" + }, + "set": { + "$ref": "#/definitions/antenna_set", + "default": "HBA_DUAL" + } + }, + "required": [ + "fields" + ], + "title": "Antennas", + "type": "object" + }, + "filter": { + "default": "HBA_110_190", + "description": "Must match antenna type", + "enum": [ + "LBA_10_90", + "LBA_30_90", + "HBA_110_190", + "HBA_210_250" + ], + "title": "Band-pass filter", + "type": "string" + }, + "max_number_of_missing_stations": { + "default": 0, + "description": "Maximum number of stations that can be omitted from a group (due to maintenance for example)", + "minimum": 0, + "title": "Maximum number of stations to omit", + "type": "integer" + }, + "station": { + "description": "These are the LOFAR stations", + "enum": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "FR606", + "SE607", + "UK608", + "DE609", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ], + "title": "Station", + "type": "string" + }, + "station_group": { + "anyOf": [ + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "The group of all stations on the Superterp", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Superterp", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + }, + "description": "The group of all Core stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Core", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch remote stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Remote", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch (Core + Remote) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + }, + "description": "A subgroup of the international stations which are required when doing observation with international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International required", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 6, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all (Core + Remote + International) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", + "type": "object" + } + ], + "default": { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "A set of predefined list of stations, and a constraint on how many stations are allowed to be missing (due to maintenance for example)", + "title": "Station group", + "type": "object" + }, + "station_groups": { + "additionalItems": false, + "additionalProperties": false, + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "description": "One or more predefined or custom groups of stations", + "items": { + "$ref": "#/definitions/station_group" + }, + "minItems": 1, + "title": "Station groups", + "type": "array" + }, + "station_list": { + "additionalItems": false, + "additionalProperties": false, + "default": [], + "items": { + "$ref": "#/definitions/station" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, + "task_connector": { + "additionalProperties": false, + "default": {}, + "description": "A task connector describes what a task can take as input and produces as output.", + "properties": { + "dataformat": { + "description": "The data type of a task connector describes in which format the data is produced/consumed.", + "enum": [ + "MeasurementSet", + "Beamformed", + "QA_HDF5", + "QA_Plots", + "pulp summary", + "pulp analysis" + ], + "title": "Data Format", + "type": "string" + }, + "datatype": { + "description": "The data type of a task connector describes its what kind of data is produced/consumed.", + "enum": [ + "visibilities", + "time series", + "instrument model", + "image", + "quality", + "pulsar profile" + ], + "title": "Data Type", + "type": "string" + }, + "role": { + "description": "The role of a task connector describes its intended use.", + "enum": [ + "correlator", + "beamformer", + "inspection plots", + "calibrator", + "target", + "any" + ], + "title": "Role", + "type": "string" + } + }, + "required": [ + "role", + "datatype", + "dataformat" + ], + "type": "object" + } + }, + "properties": { + "QA": { + "$ref": "#/definitions/QA", + "default": {} + }, + "correlator": { + "$ref": "#/definitions/correlator", + "default": {} + }, + "duration": { + "$id": "#duration", + "$ref": "#/definitions/duration", + "default": 600, + "description": "Duration of this observation (seconds)", + "minimum": 1, + "title": "Duration" + }, + "station_configuration": { + "$ref": "#/definitions/station_configuration", + "default": {} + } + } + }, + "type": "http://localhost:3000/api/task_type/observation", + "type_value": "observation" + }, + { + "description": "This schema defines the parameters for a preprocessing pipeline.", + "name": "preprocessing pipeline", + "purpose": "technical_commissioning", + "schema": { + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/preprocessing%20pipeline/2#", + "$schema": "http://json-schema.org/draft-06/schema#", + "additionalProperties": false, + "description": "This schema defines the parameters for a preprocessing pipeline.", + "patternProperties": { + "^[$]schema$": {} + }, + "properties": { + "average": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 4, + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "time_steps": { + "default": 1, + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [ + "frequency_steps", + "time_steps" + ], + "title": "Averaging", + "type": "object" + }, + "cluster_resources": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/2#/definitions/cluster_resources", + "default": {} + }, + "demix": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 64, + "description": "Must be a multiple of the averaging frequency steps", + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "ignore_target": { + "default": false, + "title": "Ignore target", + "type": "boolean" + }, + "sources": { + "additionalItems": false, + "items": { + "default": "CasA", + "enum": [ + "CasA", + "CygA", + "HerA", + "HydraA", + "TauA", + "VirA" + ], + "type": "string" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "time_steps": { + "default": 10, + "description": "Must be a multiple of the averaging time steps", + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [], + "title": "Demixing", + "type": "object" + }, + "flag": { + "additionalProperties": false, + "default": {}, + "properties": { + "autocorrelations": { + "default": true, + "title": "Flag auto correlations", + "type": "boolean" + }, + "outerchannels": { + "default": true, + "title": "Flag outer channels", + "type": "boolean" + }, + "rfi_strategy": { + "default": "HBAdefault", + "enum": [ + "none", + "HBAdefault", + "LBAdefault" + ], + "title": "RFI flagging strategy", + "type": "string" + } + }, + "required": [ + "outerchannels", + "autocorrelations", + "rfi_strategy" + ], + "title": "Flagging", + "type": "object" + }, + "storagemanager": { + "default": "dysco", + "enum": [ + "standard", + "dysco" + ], + "title": "Storage Manager", + "type": "string" + } + }, + "required": [ + "average" + ], + "title": "preprocessing pipeline", + "type": "object", + "version": 2 + }, + "state": "legacy", + "version": 2, + "id": 20, + "ref_resolved_schema": { + "definitions": { + "beamformer": { + "additionalProperties": false, + "default": {}, + "properties": { + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" + }, + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", + "type": "boolean" + } + }, + "required": [ + "pipelines", + "ppf" + ], + "title": "Beamformer", + "type": "object" + }, + "beamformer_pipeline": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "properties": { + "coherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [ + { + "name": "_SAP_name_", + "tabs": [] + } + ], + "description": "Which SAPs in the observation to beamform.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + }, + "tab_rings": { + "additonalProperties": false, + "default": {}, + "description": "Rings of TABs around the center of the beam.", + "properties": { + "count": { + "default": 0, + "maximum": 11, + "minimum": 0, + "title": "Number of rings", + "type": "integer" + }, + "width": { + "default": 0.01, + "description": "Distance between pointings.", + "minimum": 0, + "title": "Ring width", + "type": "number" + } + }, + "title": "Tied-Array Rings", + "type": "object" + }, + "tabs": { + "additionalItems": false, + "default": [], + "description": "Tied-array beams to form", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "TAB {{ self.index }}", + "properties": { + "allow_after_previous": { + "default": true, + "description": "This TAB can be recorded after the previous TAB, if duration allows.", + "title": "Allow after previous", + "type": "boolean" + }, + "duration": { + "default": 0, + "description": "Exposure time of the TAB. 0 = observation duration.", + "maximum": 0, + "minimum": 0, + "title": "Duration", + "type": "integer" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {} + }, + "relative": { + "default": false, + "description": "The SAP pointing is added to the TAB pointing", + "title": "Relative to SAP", + "type": "boolean" + } + }, + "required": [ + "pointing", + "relative" + ], + "title": "Tied-Array Beam", + "type": "object" + }, + "title": "Tied-Array Beams", + "type": "array" + } + }, + "required": [ + "name", + "tabs" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "SAPs", + "settings" + ], + "title": "Coherent Tied-Array Beams", + "type": "object" + }, + "flys eye": { + "additionalProperties": false, + "default": {}, + "description": "Produce beams containing the individual station signals", + "properties": { + "enabled": { + "default": false, + "title": "Enable Fly's Eye", + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "enabled" + ], + "title": "Fly's Eye Settings", + "type": "object" + }, + "incoherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [], + "description": "Which SAPs in the observation to create incoherent TABs for (empty list = all).", + "items": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + } + }, + "required": [ + "name", + "subbands" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "settings", + "SAPs" + ], + "title": "Incoherent Tied-Array Beams", + "type": "object" + }, + "name": { + "default": "_beamformer_name_", + "description": "Beamformer name, used for identification purposes.", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "description": "While observing, COBALT will beamform on the intersection of all stations in this list and the used stations in the observation. So, specifying all possible stations here means that all observation-stations are used. Specifying a small subset here means that only the observing-stations in this small list are used. By default we let COBALT beamform on the Core stations.", + "minItems": 1 + } + }, + "required": [ + "name" + ], + "title": "Beamformer Pipeline", + "type": "object" + }, + "stokes": { + "default": "I", + "description": "Which Stokes to produce", + "enum": [ + "I", + "IQUV", + "XXYY" + ], + "title": "Stokes", + "type": "string" + }, + "stokes_settings": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 1, + "description": "Number of frequency bands per subband", + "enum": [ + 1, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 1, + "title": "Channels/subband", + "type": "integer" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "properties": { + "bits": { + "default": 8, + "description": "Number of bits for a single value", + "enum": [ + 8 + ], + "title": "Bits/sample", + "type": "integer" + }, + "enabled": { + "default": false, + "title": "Output quantisation into integers", + "type": "boolean" + }, + "scale_max": { + "default": 5, + "description": "Cut off values above this treshold", + "title": "Maximum value", + "type": "number" + }, + "scale_min": { + "default": -5, + "description": "Cut off values below this treshold", + "title": "Minimum value", + "type": "number" + } + }, + "required": [ + "enabled", + "bits", + "scale_min", + "scale_max" + ], + "title": "Output quantisation settings", + "type": "object" + }, + "stokes": { + "$ref": "#/definitions/stokes", + "default": "I" + }, + "subbands_per_file": { + "default": 488, + "description": "The maximum number of subbands to write in each output dataproduct.", + "maximum": 488, + "minimum": 1, + "title": "Subbands per file", + "type": "integer" + }, + "time_integration_factor": { + "default": 1, + "description": "The number of samples to integrate over", + "maximum": 12288, + "minimum": 1, + "title": "Time integration", + "type": "integer" + } + }, + "required": [ + "stokes", + "time_integration_factor", + "channels_per_subband" + ], + "type": "object" + }, + "subband_selection": { + "additionalProperties": false, + "default": {}, + "properties": { + "list": { + "additionalItems": false, + "default": [], + "description": "If method is 'select subset', only beamform these subbands, and only if they occur in the SAP.", + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "minItems": 0, + "title": "Subset selection", + "type": "array" + }, + "method": { + "default": "copy", + "description": "How to select the subbands to beam form", + "enum": [ + "copy", + "largest continuous subset", + "select subset" + ], + "title": "Method", + "type": "string" + } + }, + "required": [ + "method" + ], + "title": "Subband selection", + "type": "object" + }, + "calibrator": { + "additionalProperties": false, + "default": {}, + "properties": { + "autoselect": { + "default": true, + "description": "Auto-select calibrator based on elevation", + "title": "Auto-select", + "type": "boolean" + }, + "name": { + "default": "calibrator", + "description": "Name of the calibrator SAP", + "title": "Name", + "type": "string" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "description": "Manually selected calibrator", + "title": "Digital pointing" + } + }, + "required": [ + "autoselect", + "pointing", + "name" + ], + "type": "object" + }, + "correlator": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 64, + "description": "Number of frequency bands per subband", + "enum": [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 8, + "title": "Channels/subband", + "type": "integer" + }, + "integration_time": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "default": 1, + "description": "Desired integration period (seconds)", + "minimum": 0.1, + "title": "Integration time" + }, + "storage_cluster": { + "default": "CEP4", + "description": "Cluster to write output to", + "enum": [ + "CEP4", + "DragNet" + ], + "title": "Storage cluster", + "type": "string" + }, + "topocentric_frequency_correction": { + "default": false, + "description": "Correct frequencies for the Doppler shift caused by the Earth's rotation.", + "title": "Topocentric Frequency Correction", + "type": "boolean" + } + } + }, + "timedelta": { + "default": 0, + "description": "A time duration or delta expressed in seconds", + "type": "number" + }, + "timestamp": { + "default": "1970-01-01T00:00:00Z", + "description": "A timestamp defined in UTC", + "format": "date-time", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d(\\.\\d+)?Z?", + "type": "string" + }, + "timewindow": { + "additionalProperties": false, + "description": "A timewindow interval: [from, to)", + "properties": { + "from": { + "$ref": "#/definitions/timestamp" + }, + "to": { + "$ref": "#/definitions/timestamp" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "cluster_resources": { + "additionalProperties": false, + "default": {}, + "description": "Which cluster resources to claim for this pipeline.", + "properties": { + "cores_per_task": { + "default": 2, + "description": "Number of cores to reserve for each process in the pipeline.", + "maximum": 24, + "minimum": 1, + "title": "Cores/task", + "type": "integer" + }, + "parallel_tasks": { + "default": 122, + "description": "Maximum number of tasks to run in parallel. Determines the size of the reservation. A smaller reservation results in a longer pipeline run. A bigger reservation results in more in resource waste.", + "maximum": 488, + "minimum": 1, + "title": "Max parallel tasks", + "type": "integer" + }, + "where": { + "additionalProperties": false, + "default": {}, + "description": "Where to run this pipeline.", + "properties": { + "cluster": { + "default": "CEP4", + "enum": [ + "CEP4" + ], + "title": "Cluster", + "type": "string" + }, + "partition": { + "default": "cpu", + "enum": [ + "cpu", + "gpu", + "testing" + ], + "title": "Partition", + "type": "string" + } + }, + "required": [ + "cluster", + "partition" + ], + "title": "Where", + "type": "object" + } + }, + "required": [ + "where", + "cores_per_task", + "parallel_tasks" + ], + "title": "Cluster resources", + "type": "object" + }, + "demix_strategy": { + "default": "auto", + "enum": [ + "auto", + "yes", + "no" + ], + "type": "string" + }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, + "pointing": { + "additionalProperties": false, + "properties": { + "angle1": { + "default": 0.6624317181687094, + "description": "First angle (e.g. RA)", + "title": "Angle 1", + "type": "number" + }, + "angle2": { + "default": 1.5579526427549426, + "description": "Second angle (e.g. DEC)", + "title": "Angle 2", + "type": "number" + }, + "direction_type": { + "default": "J2000", + "description": "", + "enum": [ + "J2000", + "AZELGEO", + "LMN", + "SUN", + "MOON", + "MERCURY", + "VENUS", + "MARS", + "JUPITER", + "SATURN", + "URANUS", + "NEPTUNE", + "PLUTO" + ], + "title": "Reference frame", + "type": "string" + }, + "target": { + "default": "_target_name_", + "description": "Description of where this beam points at", + "minLength": 1, + "title": "Target", + "type": "string" + } + }, + "required": [ + "angle1", + "angle2", + "target" + ], + "type": "object" + }, + "purpose": { + "default": "target", + "description": "The intended use of this pointing: calibrator, target or all sky", + "enum": [ + "calibrator", + "target", + "all sky" + ], + "type": "string" + }, + "QA": { + "additionalProperties": false, + "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", + "properties": { + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} + }, + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" + }, + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" + }, + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" + }, + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" + } + }, + "required": [ + "enabled", + "nr_of_subbands", + "nr_of_timestamps" + ], + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", + "type": "object" + }, + "SAPs": { + "additionalItems": false, + "default": [ + {} + ], + "description": "Station beams", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "{{ i0 }} - {{ self.name }}", + "properties": { + "digital_pointing": { + "$id": "#target_pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "title": "Digital pointing" + }, + "name": { + "default": "_SAP_name_", + "description": "Identifier for this beam", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "subbands": { + "additionalItems": false, + "default": [ + 255 + ], + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "maxItems": 488, + "minItems": 1, + "title": "Subband list", + "type": "array" + } + }, + "required": [ + "name", + "digital_pointing", + "subbands" + ], + "title": "SAP", + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, + "antenna_set": { + "default": "HBA_DUAL", + "description": "Fields & antennas to use", + "enum": [ + "HBA_DUAL", + "HBA_DUAL_INNER", + "HBA_ONE", + "HBA_ONE_INNER", + "HBA_ZERO", + "HBA_ZERO_INNER", + "LBA_INNER", + "LBA_OUTER", + "LBA_SPARSE_EVEN", + "LBA_SPARSE_ODD", + "LBA_ALL" + ], + "title": "Antenna set", + "type": "string" + }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, + "antennas": { + "description": "Structure to describe a set of specific antennafields", + "properties": { + "fields": { + "default": [], + "items": { + "properties": { + "field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Field", + "type": "string" + }, + "station": { + "$ref": "#/definitions/station" + }, + "type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "station", + "field", + "type" + ], + "title": "Field", + "type": "object" + }, + "title": "Fields", + "type": "array" + }, + "set": { + "$ref": "#/definitions/antenna_set", + "default": "HBA_DUAL" + } + }, + "required": [ + "fields" + ], + "title": "Antennas", + "type": "object" + }, + "filter": { + "default": "HBA_110_190", + "description": "Must match antenna type", + "enum": [ + "LBA_10_90", + "LBA_30_90", + "HBA_110_190", + "HBA_210_250" + ], + "title": "Band-pass filter", + "type": "string" + }, + "max_number_of_missing_stations": { + "default": 0, + "description": "Maximum number of stations that can be omitted from a group (due to maintenance for example)", + "minimum": 0, + "title": "Maximum number of stations to omit", + "type": "integer" + }, + "station": { + "description": "These are the LOFAR stations", + "enum": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "FR606", + "SE607", + "UK608", + "DE609", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ], + "title": "Station", + "type": "string" + }, + "station_group": { + "anyOf": [ + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "The group of all stations on the Superterp", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Superterp", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + }, + "description": "The group of all Core stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Core", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch remote stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Remote", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch (Core + Remote) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + }, + "description": "A subgroup of the international stations which are required when doing observation with international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International required", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 6, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all (Core + Remote + International) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", + "type": "object" + } + ], + "default": { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "A set of predefined list of stations, and a constraint on how many stations are allowed to be missing (due to maintenance for example)", + "title": "Station group", + "type": "object" + }, + "station_groups": { + "additionalItems": false, + "additionalProperties": false, + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "description": "One or more predefined or custom groups of stations", + "items": { + "$ref": "#/definitions/station_group" + }, + "minItems": 1, + "title": "Station groups", + "type": "array" + }, + "station_list": { + "additionalItems": false, + "additionalProperties": false, + "default": [], + "items": { + "$ref": "#/definitions/station" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, + "task_connector": { + "additionalProperties": false, + "default": {}, + "description": "A task connector describes what a task can take as input and produces as output.", + "properties": { + "dataformat": { + "description": "The data type of a task connector describes in which format the data is produced/consumed.", + "enum": [ + "MeasurementSet", + "Beamformed", + "QA_HDF5", + "QA_Plots", + "pulp summary", + "pulp analysis" + ], + "title": "Data Format", + "type": "string" + }, + "datatype": { + "description": "The data type of a task connector describes its what kind of data is produced/consumed.", + "enum": [ + "visibilities", + "time series", + "instrument model", + "image", + "quality", + "pulsar profile" + ], + "title": "Data Type", + "type": "string" + }, + "role": { + "description": "The role of a task connector describes its intended use.", + "enum": [ + "correlator", + "beamformer", + "inspection plots", + "calibrator", + "target", + "any" + ], + "title": "Role", + "type": "string" + } + }, + "required": [ + "role", + "datatype", + "dataformat" + ], + "type": "object" + } + }, + "properties": { + "average": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 4, + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "time_steps": { + "default": 1, + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [ + "frequency_steps", + "time_steps" + ], + "title": "Averaging", + "type": "object" + }, + "cluster_resources": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/2#/definitions/cluster_resources", + "default": {} + }, + "demix": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 64, + "description": "Must be a multiple of the averaging frequency steps", + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "ignore_target": { + "default": false, + "title": "Ignore target", + "type": "boolean" + }, + "sources": { + "additionalItems": false, + "items": { + "default": "CasA", + "enum": [ + "CasA", + "CygA", + "HerA", + "HydraA", + "TauA", + "VirA" + ], + "type": "string" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "time_steps": { + "default": 10, + "description": "Must be a multiple of the averaging time steps", + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [], + "title": "Demixing", + "type": "object" + }, + "flag": { + "additionalProperties": false, + "default": {}, + "properties": { + "autocorrelations": { + "default": true, + "title": "Flag auto correlations", + "type": "boolean" + }, + "outerchannels": { + "default": true, + "title": "Flag outer channels", + "type": "boolean" + }, + "rfi_strategy": { + "default": "HBAdefault", + "enum": [ + "none", + "HBAdefault", + "LBAdefault" + ], + "title": "RFI flagging strategy", + "type": "string" + } + }, + "required": [ + "outerchannels", + "autocorrelations", + "rfi_strategy" + ], + "title": "Flagging", + "type": "object" + }, + "storagemanager": { + "default": "dysco", + "enum": [ + "standard", + "dysco" + ], + "title": "Storage Manager", + "type": "string" + } + } + }, + "type": "http://localhost:3000/api/task_type/pipeline", + "type_value": "pipeline" + }, + { + "description": "This schema defines the parameters for a preprocessing pipeline.", + "name": "preprocessing pipeline", + "purpose": "technical_commissioning", + "schema": { + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/preprocessing%20pipeline/5#", + "$schema": "http://json-schema.org/draft-06/schema#", + "additionalProperties": false, + "description": "This schema defines the parameters for a preprocessing pipeline.", + "patternProperties": { + "^[$]schema$": {} + }, + "properties": { + "average": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 4, + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "time_steps": { + "default": 1, + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [ + "frequency_steps", + "time_steps" + ], + "title": "Averaging", + "type": "object" + }, + "cluster_resources": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/2#/definitions/cluster_resources", + "default": {} + }, + "demix": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 64, + "description": "Must be a multiple of the averaging frequency steps", + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "ignore_target": { + "default": false, + "title": "Ignore target", + "type": "boolean" + }, + "sources": { + "additionalItems": false, + "items": { + "default": "CasA", + "enum": [ + "CasA", + "CygA", + "HerA", + "HydraA", + "TauA", + "VirA" + ], + "type": "string" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "time_steps": { + "default": 10, + "description": "Must be a multiple of the averaging time steps", + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [], + "title": "Demixing", + "type": "object" + }, + "flag": { + "additionalProperties": false, + "default": {}, + "properties": { + "autocorrelations": { + "default": true, + "title": "Flag auto correlations", + "type": "boolean" + }, + "outerchannels": { + "default": true, + "title": "Flag outer channels", + "type": "boolean" + }, + "rfi_strategy": { + "default": "HBAdefault", + "enum": [ + "none", + "HBAdefault", + "LBAdefault" + ], + "title": "RFI flagging strategy", + "type": "string" + } + }, + "required": [ + "outerchannels", + "autocorrelations", + "rfi_strategy" + ], + "title": "Flagging", + "type": "object" + }, + "storagemanager": { + "default": "dysco", + "enum": [ + "standard", + "dysco" + ], + "title": "Storage Manager", + "type": "string" + } + }, + "required": [ + "average" + ], + "title": "preprocessing pipeline", + "type": "object", + "version": 5 + }, + "state": "legacy", + "version": 5, + "id": 21, + "ref_resolved_schema": { + "definitions": { + "beamformer": { + "additionalProperties": false, + "default": {}, + "properties": { + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" + }, + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", + "type": "boolean" + } + }, + "required": [ + "pipelines", + "ppf" + ], + "title": "Beamformer", + "type": "object" + }, + "beamformer_pipeline": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "properties": { + "coherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [ + { + "name": "_SAP_name_", + "tabs": [] + } + ], + "description": "Which SAPs in the observation to beamform.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + }, + "tab_rings": { + "additonalProperties": false, + "default": {}, + "description": "Rings of TABs around the center of the beam.", + "properties": { + "count": { + "default": 0, + "maximum": 11, + "minimum": 0, + "title": "Number of rings", + "type": "integer" + }, + "width": { + "default": 0.01, + "description": "Distance between pointings.", + "minimum": 0, + "title": "Ring width", + "type": "number" + } + }, + "title": "Tied-Array Rings", + "type": "object" + }, + "tabs": { + "additionalItems": false, + "default": [], + "description": "Tied-array beams to form", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "TAB {{ self.index }}", + "properties": { + "allow_after_previous": { + "default": true, + "description": "This TAB can be recorded after the previous TAB, if duration allows.", + "title": "Allow after previous", + "type": "boolean" + }, + "duration": { + "default": 0, + "description": "Exposure time of the TAB. 0 = observation duration.", + "maximum": 0, + "minimum": 0, + "title": "Duration", + "type": "integer" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {} + }, + "relative": { + "default": false, + "description": "The SAP pointing is added to the TAB pointing", + "title": "Relative to SAP", + "type": "boolean" + } + }, + "required": [ + "pointing", + "relative" + ], + "title": "Tied-Array Beam", + "type": "object" + }, + "title": "Tied-Array Beams", + "type": "array" + } + }, + "required": [ + "name", + "tabs" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "SAPs", + "settings" + ], + "title": "Coherent Tied-Array Beams", + "type": "object" + }, + "flys eye": { + "additionalProperties": false, + "default": {}, + "description": "Produce beams containing the individual station signals", + "properties": { + "enabled": { + "default": false, + "title": "Enable Fly's Eye", + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "enabled" + ], + "title": "Fly's Eye Settings", + "type": "object" + }, + "incoherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [], + "description": "Which SAPs in the observation to create incoherent TABs for (empty list = all).", + "items": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + } + }, + "required": [ + "name", + "subbands" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "settings", + "SAPs" + ], + "title": "Incoherent Tied-Array Beams", + "type": "object" + }, + "name": { + "default": "_beamformer_name_", + "description": "Beamformer name, used for identification purposes.", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "description": "While observing, COBALT will beamform on the intersection of all stations in this list and the used stations in the observation. So, specifying all possible stations here means that all observation-stations are used. Specifying a small subset here means that only the observing-stations in this small list are used. By default we let COBALT beamform on the Core stations.", + "minItems": 1 + } + }, + "required": [ + "name" + ], + "title": "Beamformer Pipeline", + "type": "object" + }, + "stokes": { + "default": "I", + "description": "Which Stokes to produce", + "enum": [ + "I", + "IQUV", + "XXYY" + ], + "title": "Stokes", + "type": "string" + }, + "stokes_settings": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 1, + "description": "Number of frequency bands per subband", + "enum": [ + 1, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 1, + "title": "Channels/subband", + "type": "integer" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "properties": { + "bits": { + "default": 8, + "description": "Number of bits for a single value", + "enum": [ + 8 + ], + "title": "Bits/sample", + "type": "integer" + }, + "enabled": { + "default": false, + "title": "Output quantisation into integers", + "type": "boolean" + }, + "scale_max": { + "default": 5, + "description": "Cut off values above this treshold", + "title": "Maximum value", + "type": "number" + }, + "scale_min": { + "default": -5, + "description": "Cut off values below this treshold", + "title": "Minimum value", + "type": "number" + } + }, + "required": [ + "enabled", + "bits", + "scale_min", + "scale_max" + ], + "title": "Output quantisation settings", + "type": "object" + }, + "stokes": { + "$ref": "#/definitions/stokes", + "default": "I" + }, + "subbands_per_file": { + "default": 488, + "description": "The maximum number of subbands to write in each output dataproduct.", + "maximum": 488, + "minimum": 1, + "title": "Subbands per file", + "type": "integer" + }, + "time_integration_factor": { + "default": 1, + "description": "The number of samples to integrate over", + "maximum": 12288, + "minimum": 1, + "title": "Time integration", + "type": "integer" + } + }, + "required": [ + "stokes", + "time_integration_factor", + "channels_per_subband" + ], + "type": "object" + }, + "subband_selection": { + "additionalProperties": false, + "default": {}, + "properties": { + "list": { + "additionalItems": false, + "default": [], + "description": "If method is 'select subset', only beamform these subbands, and only if they occur in the SAP.", + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "minItems": 0, + "title": "Subset selection", + "type": "array" + }, + "method": { + "default": "copy", + "description": "How to select the subbands to beam form", + "enum": [ + "copy", + "largest continuous subset", + "select subset" + ], + "title": "Method", + "type": "string" + } + }, + "required": [ + "method" + ], + "title": "Subband selection", + "type": "object" + }, + "calibrator": { + "additionalProperties": false, + "default": {}, + "properties": { + "autoselect": { + "default": true, + "description": "Auto-select calibrator based on elevation", + "title": "Auto-select", + "type": "boolean" + }, + "name": { + "default": "calibrator", + "description": "Name of the calibrator SAP", + "title": "Name", + "type": "string" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "description": "Manually selected calibrator", + "title": "Digital pointing" + } + }, + "required": [ + "autoselect", + "pointing", + "name" + ], + "type": "object" + }, + "correlator": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 64, + "description": "Number of frequency bands per subband", + "enum": [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 8, + "title": "Channels/subband", + "type": "integer" + }, + "integration_time": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "default": 1, + "description": "Desired integration period (seconds)", + "minimum": 0.1, + "title": "Integration time" + }, + "storage_cluster": { + "default": "CEP4", + "description": "Cluster to write output to", + "enum": [ + "CEP4", + "DragNet" + ], + "title": "Storage cluster", + "type": "string" + }, + "topocentric_frequency_correction": { + "default": false, + "description": "Correct frequencies for the Doppler shift caused by the Earth's rotation.", + "title": "Topocentric Frequency Correction", + "type": "boolean" + } + } + }, + "timedelta": { + "default": 0, + "description": "A time duration or delta expressed in seconds", + "type": "number" + }, + "timestamp": { + "default": "1970-01-01T00:00:00Z", + "description": "A timestamp defined in UTC", + "format": "date-time", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d(\\.\\d+)?Z?", + "type": "string" + }, + "timewindow": { + "additionalProperties": false, + "description": "A timewindow interval: [from, to)", + "properties": { + "from": { + "$ref": "#/definitions/timestamp" + }, + "to": { + "$ref": "#/definitions/timestamp" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "cluster_resources": { + "additionalProperties": false, + "default": {}, + "description": "Which cluster resources to claim for this pipeline.", + "properties": { + "cores_per_task": { + "default": 2, + "description": "Number of cores to reserve for each process in the pipeline.", + "maximum": 24, + "minimum": 1, + "title": "Cores/task", + "type": "integer" + }, + "parallel_tasks": { + "default": 122, + "description": "Maximum number of tasks to run in parallel. Determines the size of the reservation. A smaller reservation results in a longer pipeline run. A bigger reservation results in more in resource waste.", + "maximum": 488, + "minimum": 1, + "title": "Max parallel tasks", + "type": "integer" + }, + "where": { + "additionalProperties": false, + "default": {}, + "description": "Where to run this pipeline.", + "properties": { + "cluster": { + "default": "CEP4", + "enum": [ + "CEP4" + ], + "title": "Cluster", + "type": "string" + }, + "partition": { + "default": "cpu", + "enum": [ + "cpu", + "gpu", + "testing" + ], + "title": "Partition", + "type": "string" + } + }, + "required": [ + "cluster", + "partition" + ], + "title": "Where", + "type": "object" + } + }, + "required": [ + "where", + "cores_per_task", + "parallel_tasks" + ], + "title": "Cluster resources", + "type": "object" + }, + "demix_strategy": { + "default": "auto", + "enum": [ + "auto", + "yes", + "no" + ], + "type": "string" + }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, + "pointing": { + "additionalProperties": false, + "properties": { + "angle1": { + "default": 0.6624317181687094, + "description": "First angle (e.g. RA)", + "title": "Angle 1", + "type": "number" + }, + "angle2": { + "default": 1.5579526427549426, + "description": "Second angle (e.g. DEC)", + "title": "Angle 2", + "type": "number" + }, + "direction_type": { + "default": "J2000", + "description": "", + "enum": [ + "J2000", + "AZELGEO", + "LMN", + "SUN", + "MOON", + "MERCURY", + "VENUS", + "MARS", + "JUPITER", + "SATURN", + "URANUS", + "NEPTUNE", + "PLUTO" + ], + "title": "Reference frame", + "type": "string" + }, + "target": { + "default": "_target_name_", + "description": "Description of where this beam points at", + "minLength": 1, + "title": "Target", + "type": "string" + } + }, + "required": [ + "angle1", + "angle2", + "target" + ], + "type": "object" + }, + "purpose": { + "default": "target", + "description": "The intended use of this pointing: calibrator, target or all sky", + "enum": [ + "calibrator", + "target", + "all sky" + ], + "type": "string" + }, + "QA": { + "additionalProperties": false, + "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", + "properties": { + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} + }, + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" + }, + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" + }, + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" + }, + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" + } + }, + "required": [ + "enabled", + "nr_of_subbands", + "nr_of_timestamps" + ], + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", + "type": "object" + }, + "SAPs": { + "additionalItems": false, + "default": [ + {} + ], + "description": "Station beams", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "{{ i0 }} - {{ self.name }}", + "properties": { + "digital_pointing": { + "$id": "#target_pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "title": "Digital pointing" + }, + "name": { + "default": "_SAP_name_", + "description": "Identifier for this beam", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "subbands": { + "additionalItems": false, + "default": [ + 255 + ], + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "maxItems": 488, + "minItems": 1, + "title": "Subband list", + "type": "array" + } + }, + "required": [ + "name", + "digital_pointing", + "subbands" + ], + "title": "SAP", + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, + "antenna_set": { + "default": "HBA_DUAL", + "description": "Fields & antennas to use", + "enum": [ + "HBA_DUAL", + "HBA_DUAL_INNER", + "HBA_ONE", + "HBA_ONE_INNER", + "HBA_ZERO", + "HBA_ZERO_INNER", + "LBA_INNER", + "LBA_OUTER", + "LBA_SPARSE_EVEN", + "LBA_SPARSE_ODD", + "LBA_ALL" + ], + "title": "Antenna set", + "type": "string" + }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, + "antennas": { + "description": "Structure to describe a set of specific antennafields", + "properties": { + "fields": { + "default": [], + "items": { + "properties": { + "field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Field", + "type": "string" + }, + "station": { + "$ref": "#/definitions/station" + }, + "type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "station", + "field", + "type" + ], + "title": "Field", + "type": "object" + }, + "title": "Fields", + "type": "array" + }, + "set": { + "$ref": "#/definitions/antenna_set", + "default": "HBA_DUAL" + } + }, + "required": [ + "fields" + ], + "title": "Antennas", + "type": "object" + }, + "filter": { + "default": "HBA_110_190", + "description": "Must match antenna type", + "enum": [ + "LBA_10_90", + "LBA_30_90", + "HBA_110_190", + "HBA_210_250" + ], + "title": "Band-pass filter", + "type": "string" + }, + "max_number_of_missing_stations": { + "default": 0, + "description": "Maximum number of stations that can be omitted from a group (due to maintenance for example)", + "minimum": 0, + "title": "Maximum number of stations to omit", + "type": "integer" + }, + "station": { + "description": "These are the LOFAR stations", + "enum": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "FR606", + "SE607", + "UK608", + "DE609", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ], + "title": "Station", + "type": "string" + }, + "station_group": { + "anyOf": [ + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "The group of all stations on the Superterp", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Superterp", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + }, + "description": "The group of all Core stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Core", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch remote stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Remote", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch (Core + Remote) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + }, + "description": "A subgroup of the international stations which are required when doing observation with international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International required", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 6, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all (Core + Remote + International) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", + "type": "object" + } + ], + "default": { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "A set of predefined list of stations, and a constraint on how many stations are allowed to be missing (due to maintenance for example)", + "title": "Station group", + "type": "object" + }, + "station_groups": { + "additionalItems": false, + "additionalProperties": false, + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "description": "One or more predefined or custom groups of stations", + "items": { + "$ref": "#/definitions/station_group" + }, + "minItems": 1, + "title": "Station groups", + "type": "array" + }, + "station_list": { + "additionalItems": false, + "additionalProperties": false, + "default": [], + "items": { + "$ref": "#/definitions/station" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, + "task_connector": { + "additionalProperties": false, + "default": {}, + "description": "A task connector describes what a task can take as input and produces as output.", + "properties": { + "dataformat": { + "description": "The data type of a task connector describes in which format the data is produced/consumed.", + "enum": [ + "MeasurementSet", + "Beamformed", + "QA_HDF5", + "QA_Plots", + "pulp summary", + "pulp analysis" + ], + "title": "Data Format", + "type": "string" + }, + "datatype": { + "description": "The data type of a task connector describes its what kind of data is produced/consumed.", + "enum": [ + "visibilities", + "time series", + "instrument model", + "image", + "quality", + "pulsar profile" + ], + "title": "Data Type", + "type": "string" + }, + "role": { + "description": "The role of a task connector describes its intended use.", + "enum": [ + "correlator", + "beamformer", + "inspection plots", + "calibrator", + "target", + "any" + ], + "title": "Role", + "type": "string" + } + }, + "required": [ + "role", + "datatype", + "dataformat" + ], + "type": "object" + } + }, + "properties": { + "average": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 4, + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "time_steps": { + "default": 1, + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [ + "frequency_steps", + "time_steps" + ], + "title": "Averaging", + "type": "object" + }, + "cluster_resources": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/2#/definitions/cluster_resources", + "default": {} + }, + "demix": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 64, + "description": "Must be a multiple of the averaging frequency steps", + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "ignore_target": { + "default": false, + "title": "Ignore target", + "type": "boolean" + }, + "sources": { + "additionalItems": false, + "items": { + "default": "CasA", + "enum": [ + "CasA", + "CygA", + "HerA", + "HydraA", + "TauA", + "VirA" + ], + "type": "string" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "time_steps": { + "default": 10, + "description": "Must be a multiple of the averaging time steps", + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [], + "title": "Demixing", + "type": "object" + }, + "flag": { + "additionalProperties": false, + "default": {}, + "properties": { + "autocorrelations": { + "default": true, + "title": "Flag auto correlations", + "type": "boolean" + }, + "outerchannels": { + "default": true, + "title": "Flag outer channels", + "type": "boolean" + }, + "rfi_strategy": { + "default": "HBAdefault", + "enum": [ + "none", + "HBAdefault", + "LBAdefault" + ], + "title": "RFI flagging strategy", + "type": "string" + } + }, + "required": [ + "outerchannels", + "autocorrelations", + "rfi_strategy" + ], + "title": "Flagging", + "type": "object" + }, + "storagemanager": { + "default": "dysco", + "enum": [ + "standard", + "dysco" + ], + "title": "Storage Manager", + "type": "string" + } + } + }, + "type": "http://localhost:3000/api/task_type/pipeline", + "type_value": "pipeline" + }, + { + "description": "This schema defines the parameters for a preprocessing pipeline.", + "name": "preprocessing pipeline", + "purpose": "technical_commissioning", + "schema": { + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/preprocessing%20pipeline/7#", + "$schema": "http://json-schema.org/draft-06/schema#", + "additionalProperties": false, + "description": "This schema defines the parameters for a preprocessing pipeline.", + "patternProperties": { + "^[$]schema$": {} + }, + "properties": { + "average": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 4, + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "time_steps": { + "default": 1, + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [ + "frequency_steps", + "time_steps" + ], + "title": "Averaging", + "type": "object" + }, + "cluster_resources": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/4#/definitions/cluster_resources", + "default": {} + }, + "demix": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 64, + "description": "Must be a multiple of the averaging frequency steps", + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "ignore_target": { + "default": false, + "title": "Ignore target", + "type": "boolean" + }, + "sources": { + "additionalItems": false, + "items": { + "default": "CasA", + "enum": [ + "CasA", + "CygA", + "HerA", + "HydraA", + "TauA", + "VirA" + ], + "type": "string" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "time_steps": { + "default": 10, + "description": "Must be a multiple of the averaging time steps", + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [], + "title": "Demixing", + "type": "object" + }, + "flag": { + "additionalProperties": false, + "default": {}, + "properties": { + "autocorrelations": { + "default": true, + "title": "Flag auto correlations", + "type": "boolean" + }, + "outerchannels": { + "default": true, + "title": "Flag outer channels", + "type": "boolean" + }, + "rfi_strategy": { + "default": "HBAdefault", + "enum": [ + "none", + "HBAdefault", + "LBAdefault" + ], + "title": "RFI flagging strategy", + "type": "string" + } + }, + "required": [ + "outerchannels", + "autocorrelations", + "rfi_strategy" + ], + "title": "Flagging", + "type": "object" + }, + "storagemanager": { + "default": "dysco", + "enum": [ + "standard", + "dysco" + ], + "title": "Storage Manager", + "type": "string" + } + }, + "required": [ + "average" + ], + "title": "preprocessing pipeline", + "type": "object", + "version": 7 + }, + "state": "legacy", + "version": 7, + "id": 22, + "ref_resolved_schema": { + "definitions": { + "beamformer": { + "additionalProperties": false, + "default": {}, + "properties": { + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" + }, + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", + "type": "boolean" + } + }, + "required": [ + "pipelines", + "ppf" + ], + "title": "Beamformer", + "type": "object" + }, + "beamformer_pipeline": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "properties": { + "coherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [ + { + "name": "_SAP_name_", + "tabs": [] + } + ], + "description": "Which SAPs in the observation to beamform.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + }, + "tab_rings": { + "additonalProperties": false, + "default": {}, + "description": "Rings of TABs around the center of the beam.", + "properties": { + "count": { + "default": 0, + "maximum": 11, + "minimum": 0, + "title": "Number of rings", + "type": "integer" + }, + "width": { + "default": 0.01, + "description": "Distance between pointings.", + "minimum": 0, + "title": "Ring width", + "type": "number" + } + }, + "title": "Tied-Array Rings", + "type": "object" + }, + "tabs": { + "additionalItems": false, + "default": [], + "description": "Tied-array beams to form", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "TAB {{ self.index }}", + "properties": { + "allow_after_previous": { + "default": true, + "description": "This TAB can be recorded after the previous TAB, if duration allows.", + "title": "Allow after previous", + "type": "boolean" + }, + "duration": { + "default": 0, + "description": "Exposure time of the TAB. 0 = observation duration.", + "maximum": 0, + "minimum": 0, + "title": "Duration", + "type": "integer" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {} + }, + "relative": { + "default": false, + "description": "The SAP pointing is added to the TAB pointing", + "title": "Relative to SAP", + "type": "boolean" + } + }, + "required": [ + "pointing", + "relative" + ], + "title": "Tied-Array Beam", + "type": "object" + }, + "title": "Tied-Array Beams", + "type": "array" + } + }, + "required": [ + "name", + "tabs" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "SAPs", + "settings" + ], + "title": "Coherent Tied-Array Beams", + "type": "object" + }, + "flys eye": { + "additionalProperties": false, + "default": {}, + "description": "Produce beams containing the individual station signals", + "properties": { + "enabled": { + "default": false, + "title": "Enable Fly's Eye", + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "enabled" + ], + "title": "Fly's Eye Settings", + "type": "object" + }, + "incoherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [], + "description": "Which SAPs in the observation to create incoherent TABs for (empty list = all).", + "items": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + } + }, + "required": [ + "name", + "subbands" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "settings", + "SAPs" + ], + "title": "Incoherent Tied-Array Beams", + "type": "object" + }, + "name": { + "default": "_beamformer_name_", + "description": "Beamformer name, used for identification purposes.", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "description": "While observing, COBALT will beamform on the intersection of all stations in this list and the used stations in the observation. So, specifying all possible stations here means that all observation-stations are used. Specifying a small subset here means that only the observing-stations in this small list are used. By default we let COBALT beamform on the Core stations.", + "minItems": 1 + } + }, + "required": [ + "name" + ], + "title": "Beamformer Pipeline", + "type": "object" + }, + "stokes": { + "default": "I", + "description": "Which Stokes to produce", + "enum": [ + "I", + "IQUV", + "XXYY" + ], + "title": "Stokes", + "type": "string" + }, + "stokes_settings": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 1, + "description": "Number of frequency bands per subband", + "enum": [ + 1, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 1, + "title": "Channels/subband", + "type": "integer" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "properties": { + "bits": { + "default": 8, + "description": "Number of bits for a single value", + "enum": [ + 8 + ], + "title": "Bits/sample", + "type": "integer" + }, + "enabled": { + "default": false, + "title": "Output quantisation into integers", + "type": "boolean" + }, + "scale_max": { + "default": 5, + "description": "Cut off values above this treshold", + "title": "Maximum value", + "type": "number" + }, + "scale_min": { + "default": -5, + "description": "Cut off values below this treshold", + "title": "Minimum value", + "type": "number" + } + }, + "required": [ + "enabled", + "bits", + "scale_min", + "scale_max" + ], + "title": "Output quantisation settings", + "type": "object" + }, + "stokes": { + "$ref": "#/definitions/stokes", + "default": "I" + }, + "subbands_per_file": { + "default": 488, + "description": "The maximum number of subbands to write in each output dataproduct.", + "maximum": 488, + "minimum": 1, + "title": "Subbands per file", + "type": "integer" + }, + "time_integration_factor": { + "default": 1, + "description": "The number of samples to integrate over", + "maximum": 12288, + "minimum": 1, + "title": "Time integration", + "type": "integer" + } + }, + "required": [ + "stokes", + "time_integration_factor", + "channels_per_subband" + ], + "type": "object" + }, + "subband_selection": { + "additionalProperties": false, + "default": {}, + "properties": { + "list": { + "additionalItems": false, + "default": [], + "description": "If method is 'select subset', only beamform these subbands, and only if they occur in the SAP.", + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "minItems": 0, + "title": "Subset selection", + "type": "array" + }, + "method": { + "default": "copy", + "description": "How to select the subbands to beam form", + "enum": [ + "copy", + "largest continuous subset", + "select subset" + ], + "title": "Method", + "type": "string" + } + }, + "required": [ + "method" + ], + "title": "Subband selection", + "type": "object" + }, + "calibrator": { + "additionalProperties": false, + "default": {}, + "properties": { + "autoselect": { + "default": true, + "description": "Auto-select calibrator based on elevation", + "title": "Auto-select", + "type": "boolean" + }, + "name": { + "default": "calibrator", + "description": "Name of the calibrator SAP", + "title": "Name", + "type": "string" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "description": "Manually selected calibrator", + "title": "Digital pointing" + } + }, + "required": [ + "autoselect", + "pointing", + "name" + ], + "type": "object" + }, + "correlator": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 64, + "description": "Number of frequency bands per subband", + "enum": [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 8, + "title": "Channels/subband", + "type": "integer" + }, + "integration_time": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "default": 1, + "description": "Desired integration period (seconds)", + "minimum": 0.1, + "title": "Integration time" + }, + "storage_cluster": { + "default": "CEP4", + "description": "Cluster to write output to", + "enum": [ + "CEP4", + "DragNet" + ], + "title": "Storage cluster", + "type": "string" + }, + "topocentric_frequency_correction": { + "default": false, + "description": "Correct frequencies for the Doppler shift caused by the Earth's rotation.", + "title": "Topocentric Frequency Correction", + "type": "boolean" + } + } + }, + "timedelta": { + "default": 0, + "description": "A time duration or delta expressed in seconds", + "type": "number" + }, + "timestamp": { + "default": "1970-01-01T00:00:00Z", + "description": "A timestamp defined in UTC", + "format": "date-time", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d(\\.\\d+)?Z?", + "type": "string" + }, + "timewindow": { + "additionalProperties": false, + "description": "A timewindow interval: [from, to)", + "properties": { + "from": { + "$ref": "#/definitions/timestamp" + }, + "to": { + "$ref": "#/definitions/timestamp" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "cluster_resources": { + "additionalProperties": false, + "default": {}, + "description": "Which cluster resources to claim for this pipeline.", + "properties": { + "cores_per_task": { + "default": 2, + "description": "Number of cores to reserve for each process in the pipeline.", + "maximum": 24, + "minimum": 1, + "title": "Cores/task", + "type": "integer" + }, + "parallel_tasks": { + "default": 122, + "description": "Maximum number of tasks to run in parallel. Determines the size of the reservation. A smaller reservation results in a longer pipeline run. A bigger reservation results in more in resource waste.", + "maximum": 488, + "minimum": 1, + "title": "Max parallel tasks", + "type": "integer" + }, + "where": { + "additionalProperties": false, + "default": {}, + "description": "Where to run this pipeline.", + "properties": { + "cluster": { + "default": "CEP4", + "enum": [ + "CEP4" + ], + "title": "Cluster", + "type": "string" + }, + "partition": { + "default": "cpu", + "enum": [ + "cpu", + "gpu", + "testing" + ], + "title": "Partition", + "type": "string" + } + }, + "required": [ + "cluster", + "partition" + ], + "title": "Where", + "type": "object" + } + }, + "required": [ + "where", + "cores_per_task", + "parallel_tasks" + ], + "title": "Cluster resources", + "type": "object" + }, + "demix_strategy": { + "default": "auto", + "enum": [ + "auto", + "yes", + "no" + ], + "type": "string" + }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, + "pointing": { + "additionalProperties": false, + "properties": { + "angle1": { + "default": 0.6624317181687094, + "description": "First angle (e.g. RA)", + "title": "Angle 1", + "type": "number" + }, + "angle2": { + "default": 1.5579526427549426, + "description": "Second angle (e.g. DEC)", + "title": "Angle 2", + "type": "number" + }, + "direction_type": { + "default": "J2000", + "description": "", + "enum": [ + "J2000", + "AZELGEO", + "LMN", + "SUN", + "MOON", + "MERCURY", + "VENUS", + "MARS", + "JUPITER", + "SATURN", + "URANUS", + "NEPTUNE", + "PLUTO" + ], + "title": "Reference frame", + "type": "string" + }, + "target": { + "default": "_target_name_", + "description": "Description of where this beam points at", + "minLength": 1, + "title": "Target", + "type": "string" + } + }, + "required": [ + "angle1", + "angle2", + "target" + ], + "type": "object" + }, + "purpose": { + "default": "target", + "description": "The intended use of this pointing: calibrator, target or all sky", + "enum": [ + "calibrator", + "target", + "all sky" + ], + "type": "string" + }, + "QA": { + "additionalProperties": false, + "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", + "properties": { + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} + }, + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" + }, + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" + }, + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" + }, + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" + } + }, + "required": [ + "enabled", + "nr_of_subbands", + "nr_of_timestamps" + ], + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", + "type": "object" + }, + "SAPs": { + "additionalItems": false, + "default": [ + {} + ], + "description": "Station beams", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "{{ i0 }} - {{ self.name }}", + "properties": { + "digital_pointing": { + "$id": "#target_pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "title": "Digital pointing" + }, + "name": { + "default": "_SAP_name_", + "description": "Identifier for this beam", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "subbands": { + "additionalItems": false, + "default": [ + 255 + ], + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "maxItems": 488, + "minItems": 1, + "title": "Subband list", + "type": "array" + } + }, + "required": [ + "name", + "digital_pointing", + "subbands" + ], + "title": "SAP", + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, + "antenna_set": { + "default": "HBA_DUAL", + "description": "Fields & antennas to use", + "enum": [ + "HBA_DUAL", + "HBA_DUAL_INNER", + "HBA_ONE", + "HBA_ONE_INNER", + "HBA_ZERO", + "HBA_ZERO_INNER", + "LBA_INNER", + "LBA_OUTER", + "LBA_SPARSE_EVEN", + "LBA_SPARSE_ODD", + "LBA_ALL" + ], + "title": "Antenna set", + "type": "string" + }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, + "antennas": { + "description": "Structure to describe a set of specific antennafields", + "properties": { + "fields": { + "default": [], + "items": { + "properties": { + "field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Field", + "type": "string" + }, + "station": { + "$ref": "#/definitions/station" + }, + "type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "station", + "field", + "type" + ], + "title": "Field", + "type": "object" + }, + "title": "Fields", + "type": "array" + }, + "set": { + "$ref": "#/definitions/antenna_set", + "default": "HBA_DUAL" + } + }, + "required": [ + "fields" + ], + "title": "Antennas", + "type": "object" + }, + "filter": { + "default": "HBA_110_190", + "description": "Must match antenna type", + "enum": [ + "LBA_10_90", + "LBA_30_90", + "HBA_110_190", + "HBA_210_250" + ], + "title": "Band-pass filter", + "type": "string" + }, + "max_number_of_missing_stations": { + "default": 0, + "description": "Maximum number of stations that can be omitted from a group (due to maintenance for example)", + "minimum": 0, + "title": "Maximum number of stations to omit", + "type": "integer" + }, + "station": { + "description": "These are the LOFAR stations", + "enum": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "FR606", + "SE607", + "UK608", + "DE609", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ], + "title": "Station", + "type": "string" + }, + "station_group": { + "anyOf": [ + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "The group of all stations on the Superterp", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Superterp", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + }, + "description": "The group of all Core stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Core", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch remote stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Remote", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch (Core + Remote) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + }, + "description": "A subgroup of the international stations which are required when doing observation with international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International required", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 6, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all (Core + Remote + International) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", + "type": "object" + } + ], + "default": { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "A set of predefined list of stations, and a constraint on how many stations are allowed to be missing (due to maintenance for example)", + "title": "Station group", + "type": "object" + }, + "station_groups": { + "additionalItems": false, + "additionalProperties": false, + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "description": "One or more predefined or custom groups of stations", + "items": { + "$ref": "#/definitions/station_group" + }, + "minItems": 1, + "title": "Station groups", + "type": "array" + }, + "station_list": { + "additionalItems": false, + "additionalProperties": false, + "default": [], + "items": { + "$ref": "#/definitions/station" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, + "task_connector": { + "additionalProperties": false, + "default": {}, + "description": "A task connector describes what a task can take as input and produces as output.", + "properties": { + "dataformat": { + "description": "The data type of a task connector describes in which format the data is produced/consumed.", + "enum": [ + "MeasurementSet", + "Beamformed", + "QA_HDF5", + "QA_Plots", + "pulp summary", + "pulp analysis" + ], + "title": "Data Format", + "type": "string" + }, + "datatype": { + "description": "The data type of a task connector describes its what kind of data is produced/consumed.", + "enum": [ + "visibilities", + "time series", + "instrument model", + "image", + "quality", + "pulsar profile" + ], + "title": "Data Type", + "type": "string" + }, + "role": { + "description": "The role of a task connector describes its intended use.", + "enum": [ + "correlator", + "beamformer", + "inspection plots", + "calibrator", + "target", + "any" + ], + "title": "Role", + "type": "string" + } + }, + "required": [ + "role", + "datatype", + "dataformat" + ], + "type": "object" + } + }, + "properties": { + "average": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 4, + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "time_steps": { + "default": 1, + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [ + "frequency_steps", + "time_steps" + ], + "title": "Averaging", + "type": "object" + }, + "cluster_resources": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/4#/definitions/cluster_resources", + "default": {} + }, + "demix": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 64, + "description": "Must be a multiple of the averaging frequency steps", + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "ignore_target": { + "default": false, + "title": "Ignore target", + "type": "boolean" + }, + "sources": { + "additionalItems": false, + "items": { + "default": "CasA", + "enum": [ + "CasA", + "CygA", + "HerA", + "HydraA", + "TauA", + "VirA" + ], + "type": "string" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "time_steps": { + "default": 10, + "description": "Must be a multiple of the averaging time steps", + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [], + "title": "Demixing", + "type": "object" + }, + "flag": { + "additionalProperties": false, + "default": {}, + "properties": { + "autocorrelations": { + "default": true, + "title": "Flag auto correlations", + "type": "boolean" + }, + "outerchannels": { + "default": true, + "title": "Flag outer channels", + "type": "boolean" + }, + "rfi_strategy": { + "default": "HBAdefault", + "enum": [ + "none", + "HBAdefault", + "LBAdefault" + ], + "title": "RFI flagging strategy", + "type": "string" + } + }, + "required": [ + "outerchannels", + "autocorrelations", + "rfi_strategy" + ], + "title": "Flagging", + "type": "object" + }, + "storagemanager": { + "default": "dysco", + "enum": [ + "standard", + "dysco" + ], + "title": "Storage Manager", + "type": "string" + } + } + }, + "type": "http://localhost:3000/api/task_type/pipeline", + "type_value": "pipeline" + }, + { + "description": "This schema defines the parameters for a preprocessing pipeline.", + "name": "preprocessing pipeline", + "purpose": "technical_commissioning", + "schema": { + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/preprocessing%20pipeline/8#", + "$schema": "http://json-schema.org/draft-06/schema#", + "additionalProperties": false, + "description": "This schema defines the parameters for a preprocessing pipeline.", + "patternProperties": { + "^[$]schema$": {} + }, + "properties": { + "average": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 4, + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "time_steps": { + "default": 1, + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [ + "frequency_steps", + "time_steps" + ], + "title": "Averaging", + "type": "object" + }, + "cluster_resources": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/7#/definitions/cluster_resources", + "default": {} + }, + "demix": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 64, + "description": "Must be a multiple of the averaging frequency steps", + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "ignore_target": { + "default": false, + "title": "Ignore target", + "type": "boolean" + }, + "sources": { + "additionalItems": false, + "items": { + "default": "CasA", + "enum": [ + "CasA", + "CygA", + "HerA", + "HydraA", + "TauA", + "VirA" + ], + "type": "string" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "time_steps": { + "default": 10, + "description": "Must be a multiple of the averaging time steps", + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [], + "title": "Demixing", + "type": "object" + }, + "flag": { + "additionalProperties": false, + "default": {}, + "properties": { + "autocorrelations": { + "default": true, + "title": "Flag auto correlations", + "type": "boolean" + }, + "outerchannels": { + "default": true, + "title": "Flag outer channels", + "type": "boolean" + }, + "rfi_strategy": { + "default": "HBAdefault", + "enum": [ + "none", + "HBAdefault", + "LBAdefault" + ], + "title": "RFI flagging strategy", + "type": "string" + } + }, + "required": [ + "outerchannels", + "autocorrelations", + "rfi_strategy" + ], + "title": "Flagging", + "type": "object" + }, + "storagemanager": { + "default": "dysco", + "enum": [ + "standard", + "dysco" + ], + "title": "Storage Manager", + "type": "string" + } + }, + "required": [ + "average" + ], + "title": "preprocessing pipeline", + "type": "object", + "version": 8 + }, + "state": "active", + "version": 8, + "id": 23, + "ref_resolved_schema": { + "definitions": { + "beamformer": { + "additionalProperties": false, + "default": {}, + "properties": { + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" + }, + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", + "type": "boolean" + } + }, + "required": [ + "pipelines", + "ppf" + ], + "title": "Beamformer", + "type": "object" + }, + "beamformer_pipeline": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "properties": { + "coherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [ + { + "name": "_SAP_name_", + "tabs": [] + } + ], + "description": "Which SAPs in the observation to beamform.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + }, + "tab_rings": { + "additonalProperties": false, + "default": {}, + "description": "Rings of TABs around the center of the beam.", + "properties": { + "count": { + "default": 0, + "maximum": 11, + "minimum": 0, + "title": "Number of rings", + "type": "integer" + }, + "width": { + "default": 0.01, + "description": "Distance between pointings.", + "minimum": 0, + "title": "Ring width", + "type": "number" + } + }, + "title": "Tied-Array Rings", + "type": "object" + }, + "tabs": { + "additionalItems": false, + "default": [], + "description": "Tied-array beams to form", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "TAB {{ self.index }}", + "properties": { + "allow_after_previous": { + "default": true, + "description": "This TAB can be recorded after the previous TAB, if duration allows.", + "title": "Allow after previous", + "type": "boolean" + }, + "duration": { + "default": 0, + "description": "Exposure time of the TAB. 0 = observation duration.", + "maximum": 0, + "minimum": 0, + "title": "Duration", + "type": "integer" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {} + }, + "relative": { + "default": false, + "description": "The SAP pointing is added to the TAB pointing", + "title": "Relative to SAP", + "type": "boolean" + } + }, + "required": [ + "pointing", + "relative" + ], + "title": "Tied-Array Beam", + "type": "object" + }, + "title": "Tied-Array Beams", + "type": "array" + } + }, + "required": [ + "name", + "tabs" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "SAPs", + "settings" + ], + "title": "Coherent Tied-Array Beams", + "type": "object" + }, + "flys eye": { + "additionalProperties": false, + "default": {}, + "description": "Produce beams containing the individual station signals", + "properties": { + "enabled": { + "default": false, + "title": "Enable Fly's Eye", + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "enabled" + ], + "title": "Fly's Eye Settings", + "type": "object" + }, + "incoherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [], + "description": "Which SAPs in the observation to create incoherent TABs for (empty list = all).", + "items": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + } + }, + "required": [ + "name", + "subbands" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "settings", + "SAPs" + ], + "title": "Incoherent Tied-Array Beams", + "type": "object" + }, + "name": { + "default": "_beamformer_name_", + "description": "Beamformer name, used for identification purposes.", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "description": "While observing, COBALT will beamform on the intersection of all stations in this list and the used stations in the observation. So, specifying all possible stations here means that all observation-stations are used. Specifying a small subset here means that only the observing-stations in this small list are used. By default we let COBALT beamform on the Core stations.", + "minItems": 1 + } + }, + "required": [ + "name" + ], + "title": "Beamformer Pipeline", + "type": "object" + }, + "stokes": { + "default": "I", + "description": "Which Stokes to produce", + "enum": [ + "I", + "IQUV", + "XXYY" + ], + "title": "Stokes", + "type": "string" + }, + "stokes_settings": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 1, + "description": "Number of frequency bands per subband", + "enum": [ + 1, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 1, + "title": "Channels/subband", + "type": "integer" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "properties": { + "bits": { + "default": 8, + "description": "Number of bits for a single value", + "enum": [ + 8 + ], + "title": "Bits/sample", + "type": "integer" + }, + "enabled": { + "default": false, + "title": "Output quantisation into integers", + "type": "boolean" + }, + "scale_max": { + "default": 5, + "description": "Cut off values above this treshold", + "title": "Maximum value", + "type": "number" + }, + "scale_min": { + "default": -5, + "description": "Cut off values below this treshold", + "title": "Minimum value", + "type": "number" + } + }, + "required": [ + "enabled", + "bits", + "scale_min", + "scale_max" + ], + "title": "Output quantisation settings", + "type": "object" + }, + "stokes": { + "$ref": "#/definitions/stokes", + "default": "I" + }, + "subbands_per_file": { + "default": 488, + "description": "The maximum number of subbands to write in each output dataproduct.", + "maximum": 488, + "minimum": 1, + "title": "Subbands per file", + "type": "integer" + }, + "time_integration_factor": { + "default": 1, + "description": "The number of samples to integrate over", + "maximum": 12288, + "minimum": 1, + "title": "Time integration", + "type": "integer" + } + }, + "required": [ + "stokes", + "time_integration_factor", + "channels_per_subband" + ], + "type": "object" + }, + "subband_selection": { + "additionalProperties": false, + "default": {}, + "properties": { + "list": { + "additionalItems": false, + "default": [], + "description": "If method is 'select subset', only beamform these subbands, and only if they occur in the SAP.", + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "minItems": 0, + "title": "Subset selection", + "type": "array" + }, + "method": { + "default": "copy", + "description": "How to select the subbands to beam form", + "enum": [ + "copy", + "largest continuous subset", + "select subset" + ], + "title": "Method", + "type": "string" + } + }, + "required": [ + "method" + ], + "title": "Subband selection", + "type": "object" + }, + "calibrator": { + "additionalProperties": false, + "default": {}, + "properties": { + "autoselect": { + "default": true, + "description": "Auto-select calibrator based on elevation", + "title": "Auto-select", + "type": "boolean" + }, + "name": { + "default": "calibrator", + "description": "Name of the calibrator SAP", + "title": "Name", + "type": "string" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "description": "Manually selected calibrator", + "title": "Digital pointing" + } + }, + "required": [ + "autoselect", + "pointing", + "name" + ], + "type": "object" + }, + "correlator": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 64, + "description": "Number of frequency bands per subband", + "enum": [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 8, + "title": "Channels/subband", + "type": "integer" + }, + "integration_time": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "default": 1, + "description": "Desired integration period (seconds)", + "minimum": 0.1, + "title": "Integration time" + }, + "storage_cluster": { + "default": "CEP4", + "description": "Cluster to write output to", + "enum": [ + "CEP4", + "DragNet" + ], + "title": "Storage cluster", + "type": "string" + }, + "topocentric_frequency_correction": { + "default": false, + "description": "Correct frequencies for the Doppler shift caused by the Earth's rotation.", + "title": "Topocentric Frequency Correction", + "type": "boolean" + } + } + }, + "timedelta": { + "default": 0, + "description": "A time duration or delta expressed in seconds", + "type": "number" + }, + "timestamp": { + "default": "1970-01-01T00:00:00Z", + "description": "A timestamp defined in UTC", + "format": "date-time", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d(\\.\\d+)?Z?", + "type": "string" + }, + "timewindow": { + "additionalProperties": false, + "description": "A timewindow interval: [from, to)", + "properties": { + "from": { + "$ref": "#/definitions/timestamp" + }, + "to": { + "$ref": "#/definitions/timestamp" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "cluster_resources": { + "additionalProperties": false, + "default": {}, + "description": "Which cluster resources to claim for this pipeline.", + "properties": { + "cores_per_task": { + "default": 2, + "description": "Number of cores to reserve for each process in the pipeline.", + "maximum": 24, + "minimum": 1, + "title": "Cores/task", + "type": "integer" + }, + "parallel_tasks": { + "default": 122, + "description": "Maximum number of tasks to run in parallel. Determines the size of the reservation. A smaller reservation results in a longer pipeline run. A bigger reservation results in more in resource waste.", + "maximum": 488, + "minimum": 1, + "title": "Max parallel tasks", + "type": "integer" + }, + "where": { + "additionalProperties": false, + "default": {}, + "description": "Where to run this pipeline.", + "properties": { + "cluster": { + "default": "CEP4", + "enum": [ + "CEP4" + ], + "title": "Cluster", + "type": "string" + }, + "partition": { + "default": "cpu", + "enum": [ + "cpu", + "gpu", + "testing" + ], + "title": "Partition", + "type": "string" + } + }, + "required": [ + "cluster", + "partition" + ], + "title": "Where", + "type": "object" + } + }, + "required": [ + "where", + "cores_per_task", + "parallel_tasks" + ], + "title": "Cluster resources", + "type": "object" + }, + "demix_strategy": { + "default": "auto", + "enum": [ + "auto", + "yes", + "no" + ], + "type": "string" + }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, + "pointing": { + "additionalProperties": false, + "properties": { + "angle1": { + "default": 0.6624317181687094, + "description": "First angle (e.g. RA)", + "title": "Angle 1", + "type": "number" + }, + "angle2": { + "default": 1.5579526427549426, + "description": "Second angle (e.g. DEC)", + "title": "Angle 2", + "type": "number" + }, + "direction_type": { + "default": "J2000", + "description": "", + "enum": [ + "J2000", + "AZELGEO", + "LMN", + "SUN", + "MOON", + "MERCURY", + "VENUS", + "MARS", + "JUPITER", + "SATURN", + "URANUS", + "NEPTUNE", + "PLUTO" + ], + "title": "Reference frame", + "type": "string" + }, + "target": { + "default": "_target_name_", + "description": "Description of where this beam points at", + "minLength": 1, + "title": "Target", + "type": "string" + } + }, + "required": [ + "angle1", + "angle2", + "target" + ], + "type": "object" + }, + "purpose": { + "default": "target", + "description": "The intended use of this pointing: calibrator, target or all sky", + "enum": [ + "calibrator", + "target", + "all sky" + ], + "type": "string" + }, + "QA": { + "additionalProperties": false, + "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", + "properties": { + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} + }, + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" + }, + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" + }, + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" + }, + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" + } + }, + "required": [ + "enabled", + "nr_of_subbands", + "nr_of_timestamps" + ], + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", + "type": "object" + }, + "SAPs": { + "additionalItems": false, + "default": [ + {} + ], + "description": "Station beams", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "{{ i0 }} - {{ self.name }}", + "properties": { + "digital_pointing": { + "$id": "#target_pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "title": "Digital pointing" + }, + "name": { + "default": "_SAP_name_", + "description": "Identifier for this beam", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "subbands": { + "additionalItems": false, + "default": [ + 255 + ], + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "maxItems": 488, + "minItems": 1, + "title": "Subband list", + "type": "array" + } + }, + "required": [ + "name", + "digital_pointing", + "subbands" + ], + "title": "SAP", + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, + "antenna_set": { + "default": "HBA_DUAL", + "description": "Fields & antennas to use", + "enum": [ + "HBA_DUAL", + "HBA_DUAL_INNER", + "HBA_ONE", + "HBA_ONE_INNER", + "HBA_ZERO", + "HBA_ZERO_INNER", + "LBA_INNER", + "LBA_OUTER", + "LBA_SPARSE_EVEN", + "LBA_SPARSE_ODD", + "LBA_ALL" + ], + "title": "Antenna set", + "type": "string" + }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, + "antennas": { + "description": "Structure to describe a set of specific antennafields", + "properties": { + "fields": { + "default": [], + "items": { + "properties": { + "field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Field", + "type": "string" + }, + "station": { + "$ref": "#/definitions/station" + }, + "type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "station", + "field", + "type" + ], + "title": "Field", + "type": "object" + }, + "title": "Fields", + "type": "array" + }, + "set": { + "$ref": "#/definitions/antenna_set", + "default": "HBA_DUAL" + } + }, + "required": [ + "fields" + ], + "title": "Antennas", + "type": "object" + }, + "filter": { + "default": "HBA_110_190", + "description": "Must match antenna type", + "enum": [ + "LBA_10_90", + "LBA_30_90", + "HBA_110_190", + "HBA_210_250" + ], + "title": "Band-pass filter", + "type": "string" + }, + "max_number_of_missing_stations": { + "default": 0, + "description": "Maximum number of stations that can be omitted from a group (due to maintenance for example)", + "minimum": 0, + "title": "Maximum number of stations to omit", + "type": "integer" + }, + "station": { + "description": "These are the LOFAR stations", + "enum": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "FR606", + "SE607", + "UK608", + "DE609", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ], + "title": "Station", + "type": "string" + }, + "station_group": { + "anyOf": [ + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "The group of all stations on the Superterp", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Superterp", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + }, + "description": "The group of all Core stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Core", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch remote stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Remote", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch (Core + Remote) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + }, + "description": "A subgroup of the international stations which are required when doing observation with international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International required", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 6, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all (Core + Remote + International) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", + "type": "object" + } + ], + "default": { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "A set of predefined list of stations, and a constraint on how many stations are allowed to be missing (due to maintenance for example)", + "title": "Station group", + "type": "object" + }, + "station_groups": { + "additionalItems": false, + "additionalProperties": false, + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "description": "One or more predefined or custom groups of stations", + "items": { + "$ref": "#/definitions/station_group" + }, + "minItems": 1, + "title": "Station groups", + "type": "array" + }, + "station_list": { + "additionalItems": false, + "additionalProperties": false, + "default": [], + "items": { + "$ref": "#/definitions/station" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, + "task_connector": { + "additionalProperties": false, + "default": {}, + "description": "A task connector describes what a task can take as input and produces as output.", + "properties": { + "dataformat": { + "description": "The data type of a task connector describes in which format the data is produced/consumed.", + "enum": [ + "MeasurementSet", + "Beamformed", + "QA_HDF5", + "QA_Plots", + "pulp summary", + "pulp analysis" + ], + "title": "Data Format", + "type": "string" + }, + "datatype": { + "description": "The data type of a task connector describes its what kind of data is produced/consumed.", + "enum": [ + "visibilities", + "time series", + "instrument model", + "image", + "quality", + "pulsar profile" + ], + "title": "Data Type", + "type": "string" + }, + "role": { + "description": "The role of a task connector describes its intended use.", + "enum": [ + "correlator", + "beamformer", + "inspection plots", + "calibrator", + "target", + "any" + ], + "title": "Role", + "type": "string" + } + }, + "required": [ + "role", + "datatype", + "dataformat" + ], + "type": "object" + } + }, + "properties": { + "average": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 4, + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "time_steps": { + "default": 1, + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [ + "frequency_steps", + "time_steps" + ], + "title": "Averaging", + "type": "object" + }, + "cluster_resources": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/7#/definitions/cluster_resources", + "default": {} + }, + "demix": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 64, + "description": "Must be a multiple of the averaging frequency steps", + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "ignore_target": { + "default": false, + "title": "Ignore target", + "type": "boolean" + }, + "sources": { + "additionalItems": false, + "items": { + "default": "CasA", + "enum": [ + "CasA", + "CygA", + "HerA", + "HydraA", + "TauA", + "VirA" + ], + "type": "string" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "time_steps": { + "default": 10, + "description": "Must be a multiple of the averaging time steps", + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [], + "title": "Demixing", + "type": "object" + }, + "flag": { + "additionalProperties": false, + "default": {}, + "properties": { + "autocorrelations": { + "default": true, + "title": "Flag auto correlations", + "type": "boolean" + }, + "outerchannels": { + "default": true, + "title": "Flag outer channels", + "type": "boolean" + }, + "rfi_strategy": { + "default": "HBAdefault", + "enum": [ + "none", + "HBAdefault", + "LBAdefault" + ], + "title": "RFI flagging strategy", + "type": "string" + } + }, + "required": [ + "outerchannels", + "autocorrelations", + "rfi_strategy" + ], + "title": "Flagging", + "type": "object" + }, + "storagemanager": { + "default": "dysco", + "enum": [ + "standard", + "dysco" + ], + "title": "Storage Manager", + "type": "string" + } + } + }, + "type": "http://localhost:3000/api/task_type/pipeline", + "type_value": "pipeline" + }, + { + "description": "This schema defines the parameters for a preprocessing pipeline.", + "name": "preprocessing pipeline", + "purpose": "production", + "schema": { + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/preprocessing%20pipeline/9#", + "$schema": "http://json-schema.org/draft-06/schema#", + "additionalProperties": false, + "description": "This schema defines the parameters for a preprocessing pipeline.", + "patternProperties": { + "^[$]schema$": {} + }, + "properties": { + "average": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 4, + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "time_steps": { + "default": 1, + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [ + "frequency_steps", + "time_steps" + ], + "title": "Averaging", + "type": "object" + }, + "cluster_resources": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/7#/definitions/cluster_resources", + "default": {} + }, + "demix": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 64, + "description": "Must be a multiple of the averaging frequency steps", + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "ignore_target": { + "default": false, + "title": "Ignore target", + "type": "boolean" + }, + "sources": { + "additionalItems": false, + "items": { + "default": "CasA", + "enum": [ + "CasA", + "CygA", + "HerA", + "HydraA", + "TauA", + "VirA" + ], + "type": "string" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "time_steps": { + "default": 10, + "description": "Must be a multiple of the averaging time steps", + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [], + "title": "Demixing", + "type": "object" + }, + "flag": { + "additionalProperties": false, + "default": {}, + "properties": { + "autocorrelations": { + "default": true, + "title": "Flag auto correlations", + "type": "boolean" + }, + "outerchannels": { + "default": true, + "title": "Flag outer channels", + "type": "boolean" + }, + "rfi_strategy": { + "default": "HBAdefault", + "enum": [ + "none", + "HBAdefault", + "LBAdefault" + ], + "title": "RFI flagging strategy", + "type": "string" + } + }, + "required": [ + "outerchannels", + "autocorrelations", + "rfi_strategy" + ], + "title": "Flagging", + "type": "object" + }, + "software_version": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/9#/definitions/software_version", + "default": "lofar-pipeline:latest" + }, + "storagemanager": { + "default": "dysco", + "enum": [ + "standard", + "dysco" + ], + "title": "Storage Manager", + "type": "string" + } + }, + "required": [ + "average" + ], + "title": "preprocessing pipeline", + "type": "object", + "version": 9 + }, + "state": "active", + "version": 9, + "id": 24, + "ref_resolved_schema": { + "definitions": { + "beamformer": { + "additionalProperties": false, + "default": {}, + "properties": { + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" + }, + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", + "type": "boolean" + } + }, + "required": [ + "pipelines", + "ppf" + ], + "title": "Beamformer", + "type": "object" + }, + "beamformer_pipeline": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "properties": { + "coherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [ + { + "name": "_SAP_name_", + "tabs": [] + } + ], + "description": "Which SAPs in the observation to beamform.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + }, + "tab_rings": { + "additonalProperties": false, + "default": {}, + "description": "Rings of TABs around the center of the beam.", + "properties": { + "count": { + "default": 0, + "maximum": 11, + "minimum": 0, + "title": "Number of rings", + "type": "integer" + }, + "width": { + "default": 0.01, + "description": "Distance between pointings.", + "minimum": 0, + "title": "Ring width", + "type": "number" + } + }, + "title": "Tied-Array Rings", + "type": "object" + }, + "tabs": { + "additionalItems": false, + "default": [], + "description": "Tied-array beams to form", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "TAB {{ self.index }}", + "properties": { + "allow_after_previous": { + "default": true, + "description": "This TAB can be recorded after the previous TAB, if duration allows.", + "title": "Allow after previous", + "type": "boolean" + }, + "duration": { + "default": 0, + "description": "Exposure time of the TAB. 0 = observation duration.", + "maximum": 0, + "minimum": 0, + "title": "Duration", + "type": "integer" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {} + }, + "relative": { + "default": false, + "description": "The SAP pointing is added to the TAB pointing", + "title": "Relative to SAP", + "type": "boolean" + } + }, + "required": [ + "pointing", + "relative" + ], + "title": "Tied-Array Beam", + "type": "object" + }, + "title": "Tied-Array Beams", + "type": "array" + } + }, + "required": [ + "name", + "tabs" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "SAPs", + "settings" + ], + "title": "Coherent Tied-Array Beams", + "type": "object" + }, + "flys eye": { + "additionalProperties": false, + "default": {}, + "description": "Produce beams containing the individual station signals", + "properties": { + "enabled": { + "default": false, + "title": "Enable Fly's Eye", + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "enabled" + ], + "title": "Fly's Eye Settings", + "type": "object" + }, + "incoherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [], + "description": "Which SAPs in the observation to create incoherent TABs for (empty list = all).", + "items": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + } + }, + "required": [ + "name", + "subbands" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "settings", + "SAPs" + ], + "title": "Incoherent Tied-Array Beams", + "type": "object" + }, + "name": { + "default": "_beamformer_name_", + "description": "Beamformer name, used for identification purposes.", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "description": "While observing, COBALT will beamform on the intersection of all stations in this list and the used stations in the observation. So, specifying all possible stations here means that all observation-stations are used. Specifying a small subset here means that only the observing-stations in this small list are used. By default we let COBALT beamform on the Core stations.", + "minItems": 1 + } + }, + "required": [ + "name" + ], + "title": "Beamformer Pipeline", + "type": "object" + }, + "stokes": { + "default": "I", + "description": "Which Stokes to produce", + "enum": [ + "I", + "IQUV", + "XXYY" + ], + "title": "Stokes", + "type": "string" + }, + "stokes_settings": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 1, + "description": "Number of frequency bands per subband", + "enum": [ + 1, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 1, + "title": "Channels/subband", + "type": "integer" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "properties": { + "bits": { + "default": 8, + "description": "Number of bits for a single value", + "enum": [ + 8 + ], + "title": "Bits/sample", + "type": "integer" + }, + "enabled": { + "default": false, + "title": "Output quantisation into integers", + "type": "boolean" + }, + "scale_max": { + "default": 5, + "description": "Cut off values above this treshold", + "title": "Maximum value", + "type": "number" + }, + "scale_min": { + "default": -5, + "description": "Cut off values below this treshold", + "title": "Minimum value", + "type": "number" + } + }, + "required": [ + "enabled", + "bits", + "scale_min", + "scale_max" + ], + "title": "Output quantisation settings", + "type": "object" + }, + "stokes": { + "$ref": "#/definitions/stokes", + "default": "I" + }, + "subbands_per_file": { + "default": 488, + "description": "The maximum number of subbands to write in each output dataproduct.", + "maximum": 488, + "minimum": 1, + "title": "Subbands per file", + "type": "integer" + }, + "time_integration_factor": { + "default": 1, + "description": "The number of samples to integrate over", + "maximum": 12288, + "minimum": 1, + "title": "Time integration", + "type": "integer" + } + }, + "required": [ + "stokes", + "time_integration_factor", + "channels_per_subband" + ], + "type": "object" + }, + "subband_selection": { + "additionalProperties": false, + "default": {}, + "properties": { + "list": { + "additionalItems": false, + "default": [], + "description": "If method is 'select subset', only beamform these subbands, and only if they occur in the SAP.", + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "minItems": 0, + "title": "Subset selection", + "type": "array" + }, + "method": { + "default": "copy", + "description": "How to select the subbands to beam form", + "enum": [ + "copy", + "largest continuous subset", + "select subset" + ], + "title": "Method", + "type": "string" + } + }, + "required": [ + "method" + ], + "title": "Subband selection", + "type": "object" + }, + "calibrator": { + "additionalProperties": false, + "default": {}, + "properties": { + "autoselect": { + "default": true, + "description": "Auto-select calibrator based on elevation", + "title": "Auto-select", + "type": "boolean" + }, + "name": { + "default": "calibrator", + "description": "Name of the calibrator SAP", + "title": "Name", + "type": "string" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "description": "Manually selected calibrator", + "title": "Digital pointing" + } + }, + "required": [ + "autoselect", + "pointing", + "name" + ], + "type": "object" + }, + "correlator": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 64, + "description": "Number of frequency bands per subband", + "enum": [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 8, + "title": "Channels/subband", + "type": "integer" + }, + "integration_time": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "default": 1, + "description": "Desired integration period (seconds)", + "minimum": 0.1, + "title": "Integration time" + }, + "storage_cluster": { + "default": "CEP4", + "description": "Cluster to write output to", + "enum": [ + "CEP4", + "DragNet" + ], + "title": "Storage cluster", + "type": "string" + }, + "topocentric_frequency_correction": { + "default": false, + "description": "Correct frequencies for the Doppler shift caused by the Earth's rotation.", + "title": "Topocentric Frequency Correction", + "type": "boolean" + } + } + }, + "timedelta": { + "default": 0, + "description": "A time duration or delta expressed in seconds", + "type": "number" + }, + "timestamp": { + "default": "1970-01-01T00:00:00Z", + "description": "A timestamp defined in UTC", + "format": "date-time", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d(\\.\\d+)?Z?", + "type": "string" + }, + "timewindow": { + "additionalProperties": false, + "description": "A timewindow interval: [from, to)", + "properties": { + "from": { + "$ref": "#/definitions/timestamp" + }, + "to": { + "$ref": "#/definitions/timestamp" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "cluster_resources": { + "additionalProperties": false, + "default": {}, + "description": "Which cluster resources to claim for this pipeline.", + "properties": { + "cores_per_task": { + "default": 2, + "description": "Number of cores to reserve for each process in the pipeline.", + "maximum": 24, + "minimum": 1, + "title": "Cores/task", + "type": "integer" + }, + "parallel_tasks": { + "default": 122, + "description": "Maximum number of tasks to run in parallel. Determines the size of the reservation. A smaller reservation results in a longer pipeline run. A bigger reservation results in more in resource waste.", + "maximum": 488, + "minimum": 1, + "title": "Max parallel tasks", + "type": "integer" + }, + "where": { + "additionalProperties": false, + "default": {}, + "description": "Where to run this pipeline.", + "properties": { + "cluster": { + "default": "CEP4", + "enum": [ + "CEP4" + ], + "title": "Cluster", + "type": "string" + }, + "partition": { + "default": "cpu", + "enum": [ + "cpu", + "gpu", + "testing" + ], + "title": "Partition", + "type": "string" + } + }, + "required": [ + "cluster", + "partition" + ], + "title": "Where", + "type": "object" + } + }, + "required": [ + "where", + "cores_per_task", + "parallel_tasks" + ], + "title": "Cluster resources", + "type": "object" + }, + "demix_strategy": { + "default": "auto", + "enum": [ + "auto", + "yes", + "no" + ], + "type": "string" + }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, + "pointing": { + "additionalProperties": false, + "properties": { + "angle1": { + "default": 0.6624317181687094, + "description": "First angle (e.g. RA)", + "title": "Angle 1", + "type": "number" + }, + "angle2": { + "default": 1.5579526427549426, + "description": "Second angle (e.g. DEC)", + "title": "Angle 2", + "type": "number" + }, + "direction_type": { + "default": "J2000", + "description": "", + "enum": [ + "J2000", + "AZELGEO", + "LMN", + "SUN", + "MOON", + "MERCURY", + "VENUS", + "MARS", + "JUPITER", + "SATURN", + "URANUS", + "NEPTUNE", + "PLUTO" + ], + "title": "Reference frame", + "type": "string" + }, + "target": { + "default": "_target_name_", + "description": "Description of where this beam points at", + "minLength": 1, + "title": "Target", + "type": "string" + } + }, + "required": [ + "angle1", + "angle2", + "target" + ], + "type": "object" + }, + "purpose": { + "default": "target", + "description": "The intended use of this pointing: calibrator, target or all sky", + "enum": [ + "calibrator", + "target", + "all sky" + ], + "type": "string" + }, + "QA": { + "additionalProperties": false, + "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", + "properties": { + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} + }, + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" + }, + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" + }, + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" + }, + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" + } + }, + "required": [ + "enabled", + "nr_of_subbands", + "nr_of_timestamps" + ], + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", + "type": "object" + }, + "SAPs": { + "additionalItems": false, + "default": [ + {} + ], + "description": "Station beams", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "{{ i0 }} - {{ self.name }}", + "properties": { + "digital_pointing": { + "$id": "#target_pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "title": "Digital pointing" + }, + "name": { + "default": "_SAP_name_", + "description": "Identifier for this beam", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "subbands": { + "additionalItems": false, + "default": [ + 255 + ], + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "maxItems": 488, + "minItems": 1, + "title": "Subband list", + "type": "array" + } + }, + "required": [ + "name", + "digital_pointing", + "subbands" + ], + "title": "SAP", + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, + "antenna_set": { + "default": "HBA_DUAL", + "description": "Fields & antennas to use", + "enum": [ + "HBA_DUAL", + "HBA_DUAL_INNER", + "HBA_ONE", + "HBA_ONE_INNER", + "HBA_ZERO", + "HBA_ZERO_INNER", + "LBA_INNER", + "LBA_OUTER", + "LBA_SPARSE_EVEN", + "LBA_SPARSE_ODD", + "LBA_ALL" + ], + "title": "Antenna set", + "type": "string" + }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, + "antennas": { + "description": "Structure to describe a set of specific antennafields", + "properties": { + "fields": { + "default": [], + "items": { + "properties": { + "field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Field", + "type": "string" + }, + "station": { + "$ref": "#/definitions/station" + }, + "type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "station", + "field", + "type" + ], + "title": "Field", + "type": "object" + }, + "title": "Fields", + "type": "array" + }, + "set": { + "$ref": "#/definitions/antenna_set", + "default": "HBA_DUAL" + } + }, + "required": [ + "fields" + ], + "title": "Antennas", + "type": "object" + }, + "filter": { + "default": "HBA_110_190", + "description": "Must match antenna type", + "enum": [ + "LBA_10_90", + "LBA_30_90", + "HBA_110_190", + "HBA_210_250" + ], + "title": "Band-pass filter", + "type": "string" + }, + "max_number_of_missing_stations": { + "default": 0, + "description": "Maximum number of stations that can be omitted from a group (due to maintenance for example)", + "minimum": 0, + "title": "Maximum number of stations to omit", + "type": "integer" + }, + "station": { + "description": "These are the LOFAR stations", + "enum": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "FR606", + "SE607", + "UK608", + "DE609", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ], + "title": "Station", + "type": "string" + }, + "station_group": { + "anyOf": [ + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "The group of all stations on the Superterp", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Superterp", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + }, + "description": "The group of all Core stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Core", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch remote stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Remote", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch (Core + Remote) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + }, + "description": "A subgroup of the international stations which are required when doing observation with international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International required", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 6, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all (Core + Remote + International) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", + "type": "object" + } + ], + "default": { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "A set of predefined list of stations, and a constraint on how many stations are allowed to be missing (due to maintenance for example)", + "title": "Station group", + "type": "object" + }, + "station_groups": { + "additionalItems": false, + "additionalProperties": false, + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "description": "One or more predefined or custom groups of stations", + "items": { + "$ref": "#/definitions/station_group" + }, + "minItems": 1, + "title": "Station groups", + "type": "array" + }, + "station_list": { + "additionalItems": false, + "additionalProperties": false, + "default": [], + "items": { + "$ref": "#/definitions/station" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, "task_connector": { "additionalProperties": false, "default": {}, @@ -15590,118 +42128,6917 @@ "additionalProperties": false, "default": {}, "properties": { - "frequency_steps": { - "default": 4, - "minimum": 1, - "title": "Frequency steps", - "type": "integer" + "frequency_steps": { + "default": 4, + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "time_steps": { + "default": 1, + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [ + "frequency_steps", + "time_steps" + ], + "title": "Averaging", + "type": "object" + }, + "cluster_resources": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/7#/definitions/cluster_resources", + "default": {} + }, + "demix": { + "additionalProperties": false, + "default": {}, + "properties": { + "frequency_steps": { + "default": 64, + "description": "Must be a multiple of the averaging frequency steps", + "minimum": 1, + "title": "Frequency steps", + "type": "integer" + }, + "ignore_target": { + "default": false, + "title": "Ignore target", + "type": "boolean" + }, + "sources": { + "additionalItems": false, + "items": { + "default": "CasA", + "enum": [ + "CasA", + "CygA", + "HerA", + "HydraA", + "TauA", + "VirA" + ], + "type": "string" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "time_steps": { + "default": 10, + "description": "Must be a multiple of the averaging time steps", + "minimum": 1, + "title": "Time steps", + "type": "integer" + } + }, + "required": [], + "title": "Demixing", + "type": "object" + }, + "flag": { + "additionalProperties": false, + "default": {}, + "properties": { + "autocorrelations": { + "default": true, + "title": "Flag auto correlations", + "type": "boolean" + }, + "outerchannels": { + "default": true, + "title": "Flag outer channels", + "type": "boolean" + }, + "rfi_strategy": { + "default": "HBAdefault", + "enum": [ + "none", + "HBAdefault", + "LBAdefault" + ], + "title": "RFI flagging strategy", + "type": "string" + } + }, + "required": [ + "outerchannels", + "autocorrelations", + "rfi_strategy" + ], + "title": "Flagging", + "type": "object" + }, + "software_version": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/9#/definitions/software_version", + "default": "lofar-pipeline:latest" + }, + "storagemanager": { + "default": "dysco", + "enum": [ + "standard", + "dysco" + ], + "title": "Storage Manager", + "type": "string" + } + } + }, + "type": "http://localhost:3000/api/task_type/pipeline", + "type_value": "pipeline" + }, + { + "description": "This schema defines the parameters for a pulsar pipeline.", + "name": "pulsar pipeline", + "purpose": "technical_commissioning", + "schema": { + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/pulsar%20pipeline/3#", + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "description": "This schema defines the parameters for a pulsar pipeline.", + "patternProperties": { + "^[$]schema$": {} + }, + "properties": { + "cluster_resources": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/2#/definitions/cluster_resources", + "default": {} + }, + "dspsr": { + "additionalProperties": false, + "default": {}, + "properties": { + "digifil": { + "additionalProperties": false, + "default": {}, + "description": "Processes single pulses in CV data if single-pulse search is enabled", + "properties": { + "channels_per_part": { + "default": 512, + "description": "Number of frequency channels per part (multiple of subbands per part).", + "maximum": 512, + "minimum": 1, + "title": "Nr of Frequency Channels", + "type": "integer" + }, + "coherent_dedispersion": { + "default": true, + "title": "Coherent Dedispersion", + "type": "boolean" + }, + "dm": { + "default": -1, + "desciption": "Dispersion Measure (-1 for none)", + "minimum": -1, + "title": "DM", + "type": "number" + }, + "integration_time_factor": { + "default": 4, + "minimum": 1, + "title": "Integration time", + "type": "integer" + } + }, + "title": "Digifil", + "type": "object" + }, + "enabled": { + "default": true, + "title": "Enabled", + "type": "boolean" + }, + "filterbank": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_part": { + "default": 120, + "description": "Number of frequency channels per part (multiple of subbands per part).", + "maximum": 512, + "minimum": 1, + "title": "Nr of Frequency Channels", + "type": "integer" + }, + "coherent_dedispersion": { + "default": true, + "title": "Coherent Dedispersion", + "type": "boolean" + }, + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + } + }, + "title": "Create extra channels", + "type": "object" + }, + "optimise_period_dm": { + "default": true, + "title": "Optimise period & DM", + "type": "boolean" + }, + "rfi_excision": { + "default": true, + "description": "Excise/clean/remove detected RFI", + "title": "RFI excision", + "type": "boolean" + }, + "single_pulse_subintegration": { + "default": false, + "description": "Create single-pulse subintegrations with inter-channel dispersion delays removed.", + "title": "Single pulse subintegration", + "type": "boolean" + }, + "subintegration_length": { + "default": -1, + "minimum": -1, + "title": "Subintegration length", + "type": "integer" + } + }, + "title": "DSPSR", + "type": "object" + }, + "output": { + "additionalProperties": false, + "default": {}, + "properties": { + "dynamic_spectrum": { + "additionalProperties": false, + "default": {}, + "properties": { + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + }, + "time_average": { + "default": 0.5, + "description": "Time averaging, in seconds.", + "minimum": 0.01, + "title": "Time average", + "type": "number" + } + }, + "title": "Dynamic Spectrum", + "type": "object" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "description": "Quantise output into 8-bit samples", + "properties": { + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + }, + "scale": { + "default": 5, + "description": "Conversion sigma to use when converting to 8-bit samples", + "minimum": 1, + "title": "Conversion sigma", + "type": "number" + } + }, + "title": "Quantisation", + "type": "object" + } + }, + "title": "Output", + "type": "object" + }, + "presto": { + "additionalProperties": false, + "default": {}, + "properties": { + "fold_profile": { + "default": true, + "description": "Fold the pulsar profile", + "title": "Fold", + "type": "boolean" + }, + "input": { + "additionalProperties": false, + "properties": { + "decode_sigma": { + "default": 3, + "description": "Sigma threshold for decoding", + "minimum": 1, + "title": "Decode sigma", + "type": "number" + }, + "nr_blocks": { + "default": 100, + "description": "Number of blocks to read at a time", + "minimum": 1, + "title": "Nr of blocks", + "type": "integer" + }, + "samples_per_block": { + "default": 8192, + "minimum": 16, + "title": "Block size (samples)", + "type": "integer" + } + }, + "title": "Input", + "type": "object" + }, + "prepdata": { + "additionalProperties": false, + "default": {}, + "properties": { + "dm": { + "default": -1, + "desciption": "Dispersion Measure (-1 for none)", + "minimum": -1, + "title": "DM", + "type": "number" + } + }, + "title": "prepdata", + "type": "object" + }, + "prepfold": { + "default": true, + "title": "Enable prepfold", + "type": "boolean" + }, + "rfifind": { + "additionalProperties": false, + "default": {}, + "properties": { + "blocks": { + "default": 16, + "minimum": 1, + "title": "blocks", + "type": "integer" + } + }, + "title": "rfifind", + "type": "object" + }, + "rrats": { + "additionalProperties": false, + "default": {}, + "properties": { + "dm_range": { + "default": 5, + "minimum": 0, + "title": "DM range", + "type": "number" + }, + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + } + }, + "title": "RRATs analysis", + "type": "object" + } + }, + "title": "PRESTO", + "type": "object" + }, + "pulsar": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "", + "description": "Name of the pulsar to fold, if strategy=manual", + "title": "Name", + "type": "string" + }, + "strategy": { + "default": "manual", + "description": "How to look up the pulsar to fold", + "enum": [ + "manual", + "meta", + "sapfind", + "sapfind3", + "tabfind", + "tabfind+" + ], + "enum_titles": [ + "Pulsar name specified here", + "SAP target is pulsar name", + "Brightest known pulsar in SAP", + "Brightest 3 known pulsars in SAP", + "Brightest known pulsar in TAB", + "Brightest 3 known pulsars in TAB" + ], + "title": "Strategy", + "type": "string" + } + }, + "title": "Pulsar to fold", + "type": "object" + }, + "single_pulse_search": { + "default": false, + "description": "Instructs PRESTO to process single pulses, and enables Digifil for CV data", + "title": "Single-pulse search", + "type": "boolean" + } + }, + "required": [ + "pulsar", + "presto", + "dspsr", + "output" + ], + "title": "pulsar pipeline", + "type": "object", + "version": 3 + }, + "state": "legacy", + "version": 3, + "id": 25, + "ref_resolved_schema": { + "definitions": { + "beamformer": { + "additionalProperties": false, + "default": {}, + "properties": { + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" + }, + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", + "type": "boolean" + } + }, + "required": [ + "pipelines", + "ppf" + ], + "title": "Beamformer", + "type": "object" + }, + "beamformer_pipeline": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "properties": { + "coherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [ + { + "name": "_SAP_name_", + "tabs": [] + } + ], + "description": "Which SAPs in the observation to beamform.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + }, + "tab_rings": { + "additonalProperties": false, + "default": {}, + "description": "Rings of TABs around the center of the beam.", + "properties": { + "count": { + "default": 0, + "maximum": 11, + "minimum": 0, + "title": "Number of rings", + "type": "integer" + }, + "width": { + "default": 0.01, + "description": "Distance between pointings.", + "minimum": 0, + "title": "Ring width", + "type": "number" + } + }, + "title": "Tied-Array Rings", + "type": "object" + }, + "tabs": { + "additionalItems": false, + "default": [], + "description": "Tied-array beams to form", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "TAB {{ self.index }}", + "properties": { + "allow_after_previous": { + "default": true, + "description": "This TAB can be recorded after the previous TAB, if duration allows.", + "title": "Allow after previous", + "type": "boolean" + }, + "duration": { + "default": 0, + "description": "Exposure time of the TAB. 0 = observation duration.", + "maximum": 0, + "minimum": 0, + "title": "Duration", + "type": "integer" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {} + }, + "relative": { + "default": false, + "description": "The SAP pointing is added to the TAB pointing", + "title": "Relative to SAP", + "type": "boolean" + } + }, + "required": [ + "pointing", + "relative" + ], + "title": "Tied-Array Beam", + "type": "object" + }, + "title": "Tied-Array Beams", + "type": "array" + } + }, + "required": [ + "name", + "tabs" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "SAPs", + "settings" + ], + "title": "Coherent Tied-Array Beams", + "type": "object" + }, + "flys eye": { + "additionalProperties": false, + "default": {}, + "description": "Produce beams containing the individual station signals", + "properties": { + "enabled": { + "default": false, + "title": "Enable Fly's Eye", + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "enabled" + ], + "title": "Fly's Eye Settings", + "type": "object" + }, + "incoherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [], + "description": "Which SAPs in the observation to create incoherent TABs for (empty list = all).", + "items": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + } + }, + "required": [ + "name", + "subbands" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "settings", + "SAPs" + ], + "title": "Incoherent Tied-Array Beams", + "type": "object" + }, + "name": { + "default": "_beamformer_name_", + "description": "Beamformer name, used for identification purposes.", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "description": "While observing, COBALT will beamform on the intersection of all stations in this list and the used stations in the observation. So, specifying all possible stations here means that all observation-stations are used. Specifying a small subset here means that only the observing-stations in this small list are used. By default we let COBALT beamform on the Core stations.", + "minItems": 1 + } + }, + "required": [ + "name" + ], + "title": "Beamformer Pipeline", + "type": "object" + }, + "stokes": { + "default": "I", + "description": "Which Stokes to produce", + "enum": [ + "I", + "IQUV", + "XXYY" + ], + "title": "Stokes", + "type": "string" + }, + "stokes_settings": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 1, + "description": "Number of frequency bands per subband", + "enum": [ + 1, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 1, + "title": "Channels/subband", + "type": "integer" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "properties": { + "bits": { + "default": 8, + "description": "Number of bits for a single value", + "enum": [ + 8 + ], + "title": "Bits/sample", + "type": "integer" + }, + "enabled": { + "default": false, + "title": "Output quantisation into integers", + "type": "boolean" + }, + "scale_max": { + "default": 5, + "description": "Cut off values above this treshold", + "title": "Maximum value", + "type": "number" + }, + "scale_min": { + "default": -5, + "description": "Cut off values below this treshold", + "title": "Minimum value", + "type": "number" + } + }, + "required": [ + "enabled", + "bits", + "scale_min", + "scale_max" + ], + "title": "Output quantisation settings", + "type": "object" + }, + "stokes": { + "$ref": "#/definitions/stokes", + "default": "I" + }, + "subbands_per_file": { + "default": 488, + "description": "The maximum number of subbands to write in each output dataproduct.", + "maximum": 488, + "minimum": 1, + "title": "Subbands per file", + "type": "integer" + }, + "time_integration_factor": { + "default": 1, + "description": "The number of samples to integrate over", + "maximum": 12288, + "minimum": 1, + "title": "Time integration", + "type": "integer" + } + }, + "required": [ + "stokes", + "time_integration_factor", + "channels_per_subband" + ], + "type": "object" + }, + "subband_selection": { + "additionalProperties": false, + "default": {}, + "properties": { + "list": { + "additionalItems": false, + "default": [], + "description": "If method is 'select subset', only beamform these subbands, and only if they occur in the SAP.", + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "minItems": 0, + "title": "Subset selection", + "type": "array" + }, + "method": { + "default": "copy", + "description": "How to select the subbands to beam form", + "enum": [ + "copy", + "largest continuous subset", + "select subset" + ], + "title": "Method", + "type": "string" + } + }, + "required": [ + "method" + ], + "title": "Subband selection", + "type": "object" + }, + "calibrator": { + "additionalProperties": false, + "default": {}, + "properties": { + "autoselect": { + "default": true, + "description": "Auto-select calibrator based on elevation", + "title": "Auto-select", + "type": "boolean" + }, + "name": { + "default": "calibrator", + "description": "Name of the calibrator SAP", + "title": "Name", + "type": "string" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "description": "Manually selected calibrator", + "title": "Digital pointing" + } + }, + "required": [ + "autoselect", + "pointing", + "name" + ], + "type": "object" + }, + "correlator": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 64, + "description": "Number of frequency bands per subband", + "enum": [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 8, + "title": "Channels/subband", + "type": "integer" + }, + "integration_time": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "default": 1, + "description": "Desired integration period (seconds)", + "minimum": 0.1, + "title": "Integration time" + }, + "storage_cluster": { + "default": "CEP4", + "description": "Cluster to write output to", + "enum": [ + "CEP4", + "DragNet" + ], + "title": "Storage cluster", + "type": "string" + }, + "topocentric_frequency_correction": { + "default": false, + "description": "Correct frequencies for the Doppler shift caused by the Earth's rotation.", + "title": "Topocentric Frequency Correction", + "type": "boolean" + } + } + }, + "timedelta": { + "default": 0, + "description": "A time duration or delta expressed in seconds", + "type": "number" + }, + "timestamp": { + "default": "1970-01-01T00:00:00Z", + "description": "A timestamp defined in UTC", + "format": "date-time", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d(\\.\\d+)?Z?", + "type": "string" + }, + "timewindow": { + "additionalProperties": false, + "description": "A timewindow interval: [from, to)", + "properties": { + "from": { + "$ref": "#/definitions/timestamp" + }, + "to": { + "$ref": "#/definitions/timestamp" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "cluster_resources": { + "additionalProperties": false, + "default": {}, + "description": "Which cluster resources to claim for this pipeline.", + "properties": { + "cores_per_task": { + "default": 2, + "description": "Number of cores to reserve for each process in the pipeline.", + "maximum": 24, + "minimum": 1, + "title": "Cores/task", + "type": "integer" + }, + "parallel_tasks": { + "default": 122, + "description": "Maximum number of tasks to run in parallel. Determines the size of the reservation. A smaller reservation results in a longer pipeline run. A bigger reservation results in more in resource waste.", + "maximum": 488, + "minimum": 1, + "title": "Max parallel tasks", + "type": "integer" + }, + "where": { + "additionalProperties": false, + "default": {}, + "description": "Where to run this pipeline.", + "properties": { + "cluster": { + "default": "CEP4", + "enum": [ + "CEP4" + ], + "title": "Cluster", + "type": "string" + }, + "partition": { + "default": "cpu", + "enum": [ + "cpu", + "gpu", + "testing" + ], + "title": "Partition", + "type": "string" + } + }, + "required": [ + "cluster", + "partition" + ], + "title": "Where", + "type": "object" + } + }, + "required": [ + "where", + "cores_per_task", + "parallel_tasks" + ], + "title": "Cluster resources", + "type": "object" + }, + "demix_strategy": { + "default": "auto", + "enum": [ + "auto", + "yes", + "no" + ], + "type": "string" + }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, + "pointing": { + "additionalProperties": false, + "properties": { + "angle1": { + "default": 0.6624317181687094, + "description": "First angle (e.g. RA)", + "title": "Angle 1", + "type": "number" + }, + "angle2": { + "default": 1.5579526427549426, + "description": "Second angle (e.g. DEC)", + "title": "Angle 2", + "type": "number" + }, + "direction_type": { + "default": "J2000", + "description": "", + "enum": [ + "J2000", + "AZELGEO", + "LMN", + "SUN", + "MOON", + "MERCURY", + "VENUS", + "MARS", + "JUPITER", + "SATURN", + "URANUS", + "NEPTUNE", + "PLUTO" + ], + "title": "Reference frame", + "type": "string" + }, + "target": { + "default": "_target_name_", + "description": "Description of where this beam points at", + "minLength": 1, + "title": "Target", + "type": "string" + } + }, + "required": [ + "angle1", + "angle2", + "target" + ], + "type": "object" + }, + "purpose": { + "default": "target", + "description": "The intended use of this pointing: calibrator, target or all sky", + "enum": [ + "calibrator", + "target", + "all sky" + ], + "type": "string" + }, + "QA": { + "additionalProperties": false, + "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", + "properties": { + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} + }, + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" + }, + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" + }, + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" + }, + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" + } + }, + "required": [ + "enabled", + "nr_of_subbands", + "nr_of_timestamps" + ], + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", + "type": "object" + }, + "SAPs": { + "additionalItems": false, + "default": [ + {} + ], + "description": "Station beams", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "{{ i0 }} - {{ self.name }}", + "properties": { + "digital_pointing": { + "$id": "#target_pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "title": "Digital pointing" + }, + "name": { + "default": "_SAP_name_", + "description": "Identifier for this beam", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "subbands": { + "additionalItems": false, + "default": [ + 255 + ], + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "maxItems": 488, + "minItems": 1, + "title": "Subband list", + "type": "array" + } + }, + "required": [ + "name", + "digital_pointing", + "subbands" + ], + "title": "SAP", + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, + "antenna_set": { + "default": "HBA_DUAL", + "description": "Fields & antennas to use", + "enum": [ + "HBA_DUAL", + "HBA_DUAL_INNER", + "HBA_ONE", + "HBA_ONE_INNER", + "HBA_ZERO", + "HBA_ZERO_INNER", + "LBA_INNER", + "LBA_OUTER", + "LBA_SPARSE_EVEN", + "LBA_SPARSE_ODD", + "LBA_ALL" + ], + "title": "Antenna set", + "type": "string" + }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, + "antennas": { + "description": "Structure to describe a set of specific antennafields", + "properties": { + "fields": { + "default": [], + "items": { + "properties": { + "field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Field", + "type": "string" + }, + "station": { + "$ref": "#/definitions/station" + }, + "type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "station", + "field", + "type" + ], + "title": "Field", + "type": "object" + }, + "title": "Fields", + "type": "array" + }, + "set": { + "$ref": "#/definitions/antenna_set", + "default": "HBA_DUAL" + } + }, + "required": [ + "fields" + ], + "title": "Antennas", + "type": "object" + }, + "filter": { + "default": "HBA_110_190", + "description": "Must match antenna type", + "enum": [ + "LBA_10_90", + "LBA_30_90", + "HBA_110_190", + "HBA_210_250" + ], + "title": "Band-pass filter", + "type": "string" + }, + "max_number_of_missing_stations": { + "default": 0, + "description": "Maximum number of stations that can be omitted from a group (due to maintenance for example)", + "minimum": 0, + "title": "Maximum number of stations to omit", + "type": "integer" + }, + "station": { + "description": "These are the LOFAR stations", + "enum": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "FR606", + "SE607", + "UK608", + "DE609", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ], + "title": "Station", + "type": "string" + }, + "station_group": { + "anyOf": [ + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "The group of all stations on the Superterp", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Superterp", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + }, + "description": "The group of all Core stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Core", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch remote stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Remote", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch (Core + Remote) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + }, + "description": "A subgroup of the international stations which are required when doing observation with international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International required", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 6, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all (Core + Remote + International) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", + "type": "object" + } + ], + "default": { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "A set of predefined list of stations, and a constraint on how many stations are allowed to be missing (due to maintenance for example)", + "title": "Station group", + "type": "object" + }, + "station_groups": { + "additionalItems": false, + "additionalProperties": false, + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "description": "One or more predefined or custom groups of stations", + "items": { + "$ref": "#/definitions/station_group" + }, + "minItems": 1, + "title": "Station groups", + "type": "array" + }, + "station_list": { + "additionalItems": false, + "additionalProperties": false, + "default": [], + "items": { + "$ref": "#/definitions/station" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, + "task_connector": { + "additionalProperties": false, + "default": {}, + "description": "A task connector describes what a task can take as input and produces as output.", + "properties": { + "dataformat": { + "description": "The data type of a task connector describes in which format the data is produced/consumed.", + "enum": [ + "MeasurementSet", + "Beamformed", + "QA_HDF5", + "QA_Plots", + "pulp summary", + "pulp analysis" + ], + "title": "Data Format", + "type": "string" + }, + "datatype": { + "description": "The data type of a task connector describes its what kind of data is produced/consumed.", + "enum": [ + "visibilities", + "time series", + "instrument model", + "image", + "quality", + "pulsar profile" + ], + "title": "Data Type", + "type": "string" + }, + "role": { + "description": "The role of a task connector describes its intended use.", + "enum": [ + "correlator", + "beamformer", + "inspection plots", + "calibrator", + "target", + "any" + ], + "title": "Role", + "type": "string" + } + }, + "required": [ + "role", + "datatype", + "dataformat" + ], + "type": "object" + } + }, + "properties": { + "cluster_resources": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/2#/definitions/cluster_resources", + "default": {} + }, + "dspsr": { + "additionalProperties": false, + "default": {}, + "properties": { + "digifil": { + "additionalProperties": false, + "default": {}, + "description": "Processes single pulses in CV data if single-pulse search is enabled", + "properties": { + "channels_per_part": { + "default": 512, + "description": "Number of frequency channels per part (multiple of subbands per part).", + "maximum": 512, + "minimum": 1, + "title": "Nr of Frequency Channels", + "type": "integer" + }, + "coherent_dedispersion": { + "default": true, + "title": "Coherent Dedispersion", + "type": "boolean" + }, + "dm": { + "default": -1, + "desciption": "Dispersion Measure (-1 for none)", + "minimum": -1, + "title": "DM", + "type": "number" + }, + "integration_time_factor": { + "default": 4, + "minimum": 1, + "title": "Integration time", + "type": "integer" + } + }, + "title": "Digifil", + "type": "object" + }, + "enabled": { + "default": true, + "title": "Enabled", + "type": "boolean" + }, + "filterbank": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_part": { + "default": 120, + "description": "Number of frequency channels per part (multiple of subbands per part).", + "maximum": 512, + "minimum": 1, + "title": "Nr of Frequency Channels", + "type": "integer" + }, + "coherent_dedispersion": { + "default": true, + "title": "Coherent Dedispersion", + "type": "boolean" + }, + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + } + }, + "title": "Create extra channels", + "type": "object" + }, + "optimise_period_dm": { + "default": true, + "title": "Optimise period & DM", + "type": "boolean" + }, + "rfi_excision": { + "default": true, + "description": "Excise/clean/remove detected RFI", + "title": "RFI excision", + "type": "boolean" + }, + "single_pulse_subintegration": { + "default": false, + "description": "Create single-pulse subintegrations with inter-channel dispersion delays removed.", + "title": "Single pulse subintegration", + "type": "boolean" + }, + "subintegration_length": { + "default": -1, + "minimum": -1, + "title": "Subintegration length", + "type": "integer" + } + }, + "title": "DSPSR", + "type": "object" + }, + "output": { + "additionalProperties": false, + "default": {}, + "properties": { + "dynamic_spectrum": { + "additionalProperties": false, + "default": {}, + "properties": { + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + }, + "time_average": { + "default": 0.5, + "description": "Time averaging, in seconds.", + "minimum": 0.01, + "title": "Time average", + "type": "number" + } + }, + "title": "Dynamic Spectrum", + "type": "object" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "description": "Quantise output into 8-bit samples", + "properties": { + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + }, + "scale": { + "default": 5, + "description": "Conversion sigma to use when converting to 8-bit samples", + "minimum": 1, + "title": "Conversion sigma", + "type": "number" + } + }, + "title": "Quantisation", + "type": "object" + } + }, + "title": "Output", + "type": "object" + }, + "presto": { + "additionalProperties": false, + "default": {}, + "properties": { + "fold_profile": { + "default": true, + "description": "Fold the pulsar profile", + "title": "Fold", + "type": "boolean" + }, + "input": { + "additionalProperties": false, + "properties": { + "decode_sigma": { + "default": 3, + "description": "Sigma threshold for decoding", + "minimum": 1, + "title": "Decode sigma", + "type": "number" + }, + "nr_blocks": { + "default": 100, + "description": "Number of blocks to read at a time", + "minimum": 1, + "title": "Nr of blocks", + "type": "integer" + }, + "samples_per_block": { + "default": 8192, + "minimum": 16, + "title": "Block size (samples)", + "type": "integer" + } + }, + "title": "Input", + "type": "object" + }, + "prepdata": { + "additionalProperties": false, + "default": {}, + "properties": { + "dm": { + "default": -1, + "desciption": "Dispersion Measure (-1 for none)", + "minimum": -1, + "title": "DM", + "type": "number" + } + }, + "title": "prepdata", + "type": "object" + }, + "prepfold": { + "default": true, + "title": "Enable prepfold", + "type": "boolean" + }, + "rfifind": { + "additionalProperties": false, + "default": {}, + "properties": { + "blocks": { + "default": 16, + "minimum": 1, + "title": "blocks", + "type": "integer" + } + }, + "title": "rfifind", + "type": "object" + }, + "rrats": { + "additionalProperties": false, + "default": {}, + "properties": { + "dm_range": { + "default": 5, + "minimum": 0, + "title": "DM range", + "type": "number" + }, + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + } + }, + "title": "RRATs analysis", + "type": "object" + } + }, + "title": "PRESTO", + "type": "object" + }, + "pulsar": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "", + "description": "Name of the pulsar to fold, if strategy=manual", + "title": "Name", + "type": "string" + }, + "strategy": { + "default": "manual", + "description": "How to look up the pulsar to fold", + "enum": [ + "manual", + "meta", + "sapfind", + "sapfind3", + "tabfind", + "tabfind+" + ], + "enum_titles": [ + "Pulsar name specified here", + "SAP target is pulsar name", + "Brightest known pulsar in SAP", + "Brightest 3 known pulsars in SAP", + "Brightest known pulsar in TAB", + "Brightest 3 known pulsars in TAB" + ], + "title": "Strategy", + "type": "string" + } + }, + "title": "Pulsar to fold", + "type": "object" + }, + "single_pulse_search": { + "default": false, + "description": "Instructs PRESTO to process single pulses, and enables Digifil for CV data", + "title": "Single-pulse search", + "type": "boolean" + } + } + }, + "type": "http://localhost:3000/api/task_type/pipeline", + "type_value": "pipeline" + }, + { + "description": "This schema defines the parameters for a pulsar pipeline.", + "name": "pulsar pipeline", + "purpose": "technical_commissioning", + "schema": { + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/pulsar%20pipeline/5#", + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "description": "This schema defines the parameters for a pulsar pipeline.", + "patternProperties": { + "^[$]schema$": {} + }, + "properties": { + "cluster_resources": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/4#/definitions/cluster_resources", + "default": {} + }, + "dspsr": { + "additionalProperties": false, + "default": {}, + "properties": { + "digifil": { + "additionalProperties": false, + "default": {}, + "description": "Processes single pulses in CV data if single-pulse search is enabled", + "properties": { + "channels_per_part": { + "default": 512, + "description": "Number of frequency channels per part (multiple of subbands per part).", + "maximum": 512, + "minimum": 1, + "title": "Nr of Frequency Channels", + "type": "integer" + }, + "coherent_dedispersion": { + "default": true, + "title": "Coherent Dedispersion", + "type": "boolean" + }, + "dm": { + "default": -1, + "desciption": "Dispersion Measure (-1 for none)", + "minimum": -1, + "title": "DM", + "type": "number" + }, + "integration_time_factor": { + "default": 4, + "minimum": 1, + "title": "Integration time", + "type": "integer" + } + }, + "title": "Digifil", + "type": "object" + }, + "enabled": { + "default": true, + "title": "Enabled", + "type": "boolean" + }, + "filterbank": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_part": { + "default": 120, + "description": "Number of frequency channels per part (multiple of subbands per part).", + "maximum": 512, + "minimum": 1, + "title": "Nr of Frequency Channels", + "type": "integer" + }, + "coherent_dedispersion": { + "default": true, + "title": "Coherent Dedispersion", + "type": "boolean" + }, + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + } + }, + "title": "Create extra channels", + "type": "object" + }, + "optimise_period_dm": { + "default": true, + "title": "Optimise period & DM", + "type": "boolean" + }, + "rfi_excision": { + "default": true, + "description": "Excise/clean/remove detected RFI", + "title": "RFI excision", + "type": "boolean" + }, + "single_pulse_subintegration": { + "default": false, + "description": "Create single-pulse subintegrations with inter-channel dispersion delays removed.", + "title": "Single pulse subintegration", + "type": "boolean" + }, + "subintegration_length": { + "default": -1, + "minimum": -1, + "title": "Subintegration length", + "type": "integer" + } + }, + "title": "DSPSR", + "type": "object" + }, + "output": { + "additionalProperties": false, + "default": {}, + "properties": { + "dynamic_spectrum": { + "additionalProperties": false, + "default": {}, + "properties": { + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + }, + "time_average": { + "default": 0.5, + "description": "Time averaging, in seconds.", + "minimum": 0.01, + "title": "Time average", + "type": "number" + } + }, + "title": "Dynamic Spectrum", + "type": "object" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "description": "Quantise output into 8-bit samples", + "properties": { + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + }, + "scale": { + "default": 5, + "description": "Conversion sigma to use when converting to 8-bit samples", + "minimum": 1, + "title": "Conversion sigma", + "type": "number" + } + }, + "title": "Quantisation", + "type": "object" + } + }, + "title": "Output", + "type": "object" + }, + "presto": { + "additionalProperties": false, + "default": {}, + "properties": { + "fold_profile": { + "default": true, + "description": "Fold the pulsar profile", + "title": "Fold", + "type": "boolean" + }, + "input": { + "additionalProperties": false, + "properties": { + "decode_sigma": { + "default": 3, + "description": "Sigma threshold for decoding", + "minimum": 1, + "title": "Decode sigma", + "type": "number" + }, + "nr_blocks": { + "default": 100, + "description": "Number of blocks to read at a time", + "minimum": 1, + "title": "Nr of blocks", + "type": "integer" + }, + "samples_per_block": { + "default": 8192, + "minimum": 16, + "title": "Block size (samples)", + "type": "integer" + } + }, + "title": "Input", + "type": "object" + }, + "prepdata": { + "additionalProperties": false, + "default": {}, + "properties": { + "dm": { + "default": -1, + "desciption": "Dispersion Measure (-1 for none)", + "minimum": -1, + "title": "DM", + "type": "number" + } + }, + "title": "prepdata", + "type": "object" + }, + "prepfold": { + "default": true, + "title": "Enable prepfold", + "type": "boolean" + }, + "rfifind": { + "additionalProperties": false, + "default": {}, + "properties": { + "blocks": { + "default": 16, + "minimum": 1, + "title": "blocks", + "type": "integer" + } + }, + "title": "rfifind", + "type": "object" + }, + "rrats": { + "additionalProperties": false, + "default": {}, + "properties": { + "dm_range": { + "default": 5, + "minimum": 0, + "title": "DM range", + "type": "number" + }, + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + } + }, + "title": "RRATs analysis", + "type": "object" + } + }, + "title": "PRESTO", + "type": "object" + }, + "pulsar": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "", + "description": "Name of the pulsar to fold, if strategy=manual", + "title": "Name", + "type": "string" + }, + "strategy": { + "default": "manual", + "description": "How to look up the pulsar to fold", + "enum": [ + "manual", + "meta", + "sapfind", + "sapfind3", + "tabfind", + "tabfind+" + ], + "enum_titles": [ + "Pulsar name specified here", + "SAP target is pulsar name", + "Brightest known pulsar in SAP", + "Brightest 3 known pulsars in SAP", + "Brightest known pulsar in TAB", + "Brightest 3 known pulsars in TAB" + ], + "title": "Strategy", + "type": "string" + } + }, + "title": "Pulsar to fold", + "type": "object" + }, + "single_pulse_search": { + "default": false, + "description": "Instructs PRESTO to process single pulses, and enables Digifil for CV data", + "title": "Single-pulse search", + "type": "boolean" + } + }, + "required": [ + "pulsar", + "presto", + "dspsr", + "output" + ], + "title": "pulsar pipeline", + "type": "object", + "version": 5 + }, + "state": "legacy", + "version": 5, + "id": 26, + "ref_resolved_schema": { + "definitions": { + "beamformer": { + "additionalProperties": false, + "default": {}, + "properties": { + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" + }, + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", + "type": "boolean" + } + }, + "required": [ + "pipelines", + "ppf" + ], + "title": "Beamformer", + "type": "object" + }, + "beamformer_pipeline": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "properties": { + "coherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [ + { + "name": "_SAP_name_", + "tabs": [] + } + ], + "description": "Which SAPs in the observation to beamform.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + }, + "tab_rings": { + "additonalProperties": false, + "default": {}, + "description": "Rings of TABs around the center of the beam.", + "properties": { + "count": { + "default": 0, + "maximum": 11, + "minimum": 0, + "title": "Number of rings", + "type": "integer" + }, + "width": { + "default": 0.01, + "description": "Distance between pointings.", + "minimum": 0, + "title": "Ring width", + "type": "number" + } + }, + "title": "Tied-Array Rings", + "type": "object" + }, + "tabs": { + "additionalItems": false, + "default": [], + "description": "Tied-array beams to form", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "TAB {{ self.index }}", + "properties": { + "allow_after_previous": { + "default": true, + "description": "This TAB can be recorded after the previous TAB, if duration allows.", + "title": "Allow after previous", + "type": "boolean" + }, + "duration": { + "default": 0, + "description": "Exposure time of the TAB. 0 = observation duration.", + "maximum": 0, + "minimum": 0, + "title": "Duration", + "type": "integer" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {} + }, + "relative": { + "default": false, + "description": "The SAP pointing is added to the TAB pointing", + "title": "Relative to SAP", + "type": "boolean" + } + }, + "required": [ + "pointing", + "relative" + ], + "title": "Tied-Array Beam", + "type": "object" + }, + "title": "Tied-Array Beams", + "type": "array" + } + }, + "required": [ + "name", + "tabs" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "SAPs", + "settings" + ], + "title": "Coherent Tied-Array Beams", + "type": "object" + }, + "flys eye": { + "additionalProperties": false, + "default": {}, + "description": "Produce beams containing the individual station signals", + "properties": { + "enabled": { + "default": false, + "title": "Enable Fly's Eye", + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "enabled" + ], + "title": "Fly's Eye Settings", + "type": "object" + }, + "incoherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [], + "description": "Which SAPs in the observation to create incoherent TABs for (empty list = all).", + "items": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + } + }, + "required": [ + "name", + "subbands" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "settings", + "SAPs" + ], + "title": "Incoherent Tied-Array Beams", + "type": "object" + }, + "name": { + "default": "_beamformer_name_", + "description": "Beamformer name, used for identification purposes.", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "description": "While observing, COBALT will beamform on the intersection of all stations in this list and the used stations in the observation. So, specifying all possible stations here means that all observation-stations are used. Specifying a small subset here means that only the observing-stations in this small list are used. By default we let COBALT beamform on the Core stations.", + "minItems": 1 + } + }, + "required": [ + "name" + ], + "title": "Beamformer Pipeline", + "type": "object" + }, + "stokes": { + "default": "I", + "description": "Which Stokes to produce", + "enum": [ + "I", + "IQUV", + "XXYY" + ], + "title": "Stokes", + "type": "string" + }, + "stokes_settings": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 1, + "description": "Number of frequency bands per subband", + "enum": [ + 1, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 1, + "title": "Channels/subband", + "type": "integer" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "properties": { + "bits": { + "default": 8, + "description": "Number of bits for a single value", + "enum": [ + 8 + ], + "title": "Bits/sample", + "type": "integer" + }, + "enabled": { + "default": false, + "title": "Output quantisation into integers", + "type": "boolean" + }, + "scale_max": { + "default": 5, + "description": "Cut off values above this treshold", + "title": "Maximum value", + "type": "number" + }, + "scale_min": { + "default": -5, + "description": "Cut off values below this treshold", + "title": "Minimum value", + "type": "number" + } + }, + "required": [ + "enabled", + "bits", + "scale_min", + "scale_max" + ], + "title": "Output quantisation settings", + "type": "object" + }, + "stokes": { + "$ref": "#/definitions/stokes", + "default": "I" + }, + "subbands_per_file": { + "default": 488, + "description": "The maximum number of subbands to write in each output dataproduct.", + "maximum": 488, + "minimum": 1, + "title": "Subbands per file", + "type": "integer" + }, + "time_integration_factor": { + "default": 1, + "description": "The number of samples to integrate over", + "maximum": 12288, + "minimum": 1, + "title": "Time integration", + "type": "integer" + } + }, + "required": [ + "stokes", + "time_integration_factor", + "channels_per_subband" + ], + "type": "object" + }, + "subband_selection": { + "additionalProperties": false, + "default": {}, + "properties": { + "list": { + "additionalItems": false, + "default": [], + "description": "If method is 'select subset', only beamform these subbands, and only if they occur in the SAP.", + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "minItems": 0, + "title": "Subset selection", + "type": "array" + }, + "method": { + "default": "copy", + "description": "How to select the subbands to beam form", + "enum": [ + "copy", + "largest continuous subset", + "select subset" + ], + "title": "Method", + "type": "string" + } + }, + "required": [ + "method" + ], + "title": "Subband selection", + "type": "object" + }, + "calibrator": { + "additionalProperties": false, + "default": {}, + "properties": { + "autoselect": { + "default": true, + "description": "Auto-select calibrator based on elevation", + "title": "Auto-select", + "type": "boolean" + }, + "name": { + "default": "calibrator", + "description": "Name of the calibrator SAP", + "title": "Name", + "type": "string" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "description": "Manually selected calibrator", + "title": "Digital pointing" + } + }, + "required": [ + "autoselect", + "pointing", + "name" + ], + "type": "object" + }, + "correlator": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 64, + "description": "Number of frequency bands per subband", + "enum": [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 8, + "title": "Channels/subband", + "type": "integer" + }, + "integration_time": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "default": 1, + "description": "Desired integration period (seconds)", + "minimum": 0.1, + "title": "Integration time" + }, + "storage_cluster": { + "default": "CEP4", + "description": "Cluster to write output to", + "enum": [ + "CEP4", + "DragNet" + ], + "title": "Storage cluster", + "type": "string" + }, + "topocentric_frequency_correction": { + "default": false, + "description": "Correct frequencies for the Doppler shift caused by the Earth's rotation.", + "title": "Topocentric Frequency Correction", + "type": "boolean" + } + } + }, + "timedelta": { + "default": 0, + "description": "A time duration or delta expressed in seconds", + "type": "number" + }, + "timestamp": { + "default": "1970-01-01T00:00:00Z", + "description": "A timestamp defined in UTC", + "format": "date-time", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d(\\.\\d+)?Z?", + "type": "string" + }, + "timewindow": { + "additionalProperties": false, + "description": "A timewindow interval: [from, to)", + "properties": { + "from": { + "$ref": "#/definitions/timestamp" + }, + "to": { + "$ref": "#/definitions/timestamp" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "cluster_resources": { + "additionalProperties": false, + "default": {}, + "description": "Which cluster resources to claim for this pipeline.", + "properties": { + "cores_per_task": { + "default": 2, + "description": "Number of cores to reserve for each process in the pipeline.", + "maximum": 24, + "minimum": 1, + "title": "Cores/task", + "type": "integer" + }, + "parallel_tasks": { + "default": 122, + "description": "Maximum number of tasks to run in parallel. Determines the size of the reservation. A smaller reservation results in a longer pipeline run. A bigger reservation results in more in resource waste.", + "maximum": 488, + "minimum": 1, + "title": "Max parallel tasks", + "type": "integer" + }, + "where": { + "additionalProperties": false, + "default": {}, + "description": "Where to run this pipeline.", + "properties": { + "cluster": { + "default": "CEP4", + "enum": [ + "CEP4" + ], + "title": "Cluster", + "type": "string" + }, + "partition": { + "default": "cpu", + "enum": [ + "cpu", + "gpu", + "testing" + ], + "title": "Partition", + "type": "string" + } + }, + "required": [ + "cluster", + "partition" + ], + "title": "Where", + "type": "object" + } + }, + "required": [ + "where", + "cores_per_task", + "parallel_tasks" + ], + "title": "Cluster resources", + "type": "object" + }, + "demix_strategy": { + "default": "auto", + "enum": [ + "auto", + "yes", + "no" + ], + "type": "string" + }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, + "pointing": { + "additionalProperties": false, + "properties": { + "angle1": { + "default": 0.6624317181687094, + "description": "First angle (e.g. RA)", + "title": "Angle 1", + "type": "number" + }, + "angle2": { + "default": 1.5579526427549426, + "description": "Second angle (e.g. DEC)", + "title": "Angle 2", + "type": "number" + }, + "direction_type": { + "default": "J2000", + "description": "", + "enum": [ + "J2000", + "AZELGEO", + "LMN", + "SUN", + "MOON", + "MERCURY", + "VENUS", + "MARS", + "JUPITER", + "SATURN", + "URANUS", + "NEPTUNE", + "PLUTO" + ], + "title": "Reference frame", + "type": "string" + }, + "target": { + "default": "_target_name_", + "description": "Description of where this beam points at", + "minLength": 1, + "title": "Target", + "type": "string" + } + }, + "required": [ + "angle1", + "angle2", + "target" + ], + "type": "object" + }, + "purpose": { + "default": "target", + "description": "The intended use of this pointing: calibrator, target or all sky", + "enum": [ + "calibrator", + "target", + "all sky" + ], + "type": "string" + }, + "QA": { + "additionalProperties": false, + "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", + "properties": { + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} + }, + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" + }, + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" + }, + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" + }, + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" + } + }, + "required": [ + "enabled", + "nr_of_subbands", + "nr_of_timestamps" + ], + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", + "type": "object" + }, + "SAPs": { + "additionalItems": false, + "default": [ + {} + ], + "description": "Station beams", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "{{ i0 }} - {{ self.name }}", + "properties": { + "digital_pointing": { + "$id": "#target_pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "title": "Digital pointing" + }, + "name": { + "default": "_SAP_name_", + "description": "Identifier for this beam", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "subbands": { + "additionalItems": false, + "default": [ + 255 + ], + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "maxItems": 488, + "minItems": 1, + "title": "Subband list", + "type": "array" + } + }, + "required": [ + "name", + "digital_pointing", + "subbands" + ], + "title": "SAP", + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, + "antenna_set": { + "default": "HBA_DUAL", + "description": "Fields & antennas to use", + "enum": [ + "HBA_DUAL", + "HBA_DUAL_INNER", + "HBA_ONE", + "HBA_ONE_INNER", + "HBA_ZERO", + "HBA_ZERO_INNER", + "LBA_INNER", + "LBA_OUTER", + "LBA_SPARSE_EVEN", + "LBA_SPARSE_ODD", + "LBA_ALL" + ], + "title": "Antenna set", + "type": "string" + }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, + "antennas": { + "description": "Structure to describe a set of specific antennafields", + "properties": { + "fields": { + "default": [], + "items": { + "properties": { + "field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Field", + "type": "string" + }, + "station": { + "$ref": "#/definitions/station" + }, + "type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "station", + "field", + "type" + ], + "title": "Field", + "type": "object" + }, + "title": "Fields", + "type": "array" + }, + "set": { + "$ref": "#/definitions/antenna_set", + "default": "HBA_DUAL" + } + }, + "required": [ + "fields" + ], + "title": "Antennas", + "type": "object" + }, + "filter": { + "default": "HBA_110_190", + "description": "Must match antenna type", + "enum": [ + "LBA_10_90", + "LBA_30_90", + "HBA_110_190", + "HBA_210_250" + ], + "title": "Band-pass filter", + "type": "string" + }, + "max_number_of_missing_stations": { + "default": 0, + "description": "Maximum number of stations that can be omitted from a group (due to maintenance for example)", + "minimum": 0, + "title": "Maximum number of stations to omit", + "type": "integer" + }, + "station": { + "description": "These are the LOFAR stations", + "enum": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "FR606", + "SE607", + "UK608", + "DE609", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ], + "title": "Station", + "type": "string" + }, + "station_group": { + "anyOf": [ + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "The group of all stations on the Superterp", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Superterp", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + }, + "description": "The group of all Core stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Core", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch remote stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Remote", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch (Core + Remote) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + }, + "description": "A subgroup of the international stations which are required when doing observation with international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International required", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 6, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all (Core + Remote + International) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", + "type": "object" + } + ], + "default": { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "A set of predefined list of stations, and a constraint on how many stations are allowed to be missing (due to maintenance for example)", + "title": "Station group", + "type": "object" + }, + "station_groups": { + "additionalItems": false, + "additionalProperties": false, + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "description": "One or more predefined or custom groups of stations", + "items": { + "$ref": "#/definitions/station_group" + }, + "minItems": 1, + "title": "Station groups", + "type": "array" + }, + "station_list": { + "additionalItems": false, + "additionalProperties": false, + "default": [], + "items": { + "$ref": "#/definitions/station" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, + "task_connector": { + "additionalProperties": false, + "default": {}, + "description": "A task connector describes what a task can take as input and produces as output.", + "properties": { + "dataformat": { + "description": "The data type of a task connector describes in which format the data is produced/consumed.", + "enum": [ + "MeasurementSet", + "Beamformed", + "QA_HDF5", + "QA_Plots", + "pulp summary", + "pulp analysis" + ], + "title": "Data Format", + "type": "string" + }, + "datatype": { + "description": "The data type of a task connector describes its what kind of data is produced/consumed.", + "enum": [ + "visibilities", + "time series", + "instrument model", + "image", + "quality", + "pulsar profile" + ], + "title": "Data Type", + "type": "string" + }, + "role": { + "description": "The role of a task connector describes its intended use.", + "enum": [ + "correlator", + "beamformer", + "inspection plots", + "calibrator", + "target", + "any" + ], + "title": "Role", + "type": "string" + } + }, + "required": [ + "role", + "datatype", + "dataformat" + ], + "type": "object" + } + }, + "properties": { + "cluster_resources": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/4#/definitions/cluster_resources", + "default": {} + }, + "dspsr": { + "additionalProperties": false, + "default": {}, + "properties": { + "digifil": { + "additionalProperties": false, + "default": {}, + "description": "Processes single pulses in CV data if single-pulse search is enabled", + "properties": { + "channels_per_part": { + "default": 512, + "description": "Number of frequency channels per part (multiple of subbands per part).", + "maximum": 512, + "minimum": 1, + "title": "Nr of Frequency Channels", + "type": "integer" + }, + "coherent_dedispersion": { + "default": true, + "title": "Coherent Dedispersion", + "type": "boolean" + }, + "dm": { + "default": -1, + "desciption": "Dispersion Measure (-1 for none)", + "minimum": -1, + "title": "DM", + "type": "number" + }, + "integration_time_factor": { + "default": 4, + "minimum": 1, + "title": "Integration time", + "type": "integer" + } + }, + "title": "Digifil", + "type": "object" + }, + "enabled": { + "default": true, + "title": "Enabled", + "type": "boolean" + }, + "filterbank": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_part": { + "default": 120, + "description": "Number of frequency channels per part (multiple of subbands per part).", + "maximum": 512, + "minimum": 1, + "title": "Nr of Frequency Channels", + "type": "integer" + }, + "coherent_dedispersion": { + "default": true, + "title": "Coherent Dedispersion", + "type": "boolean" + }, + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + } + }, + "title": "Create extra channels", + "type": "object" + }, + "optimise_period_dm": { + "default": true, + "title": "Optimise period & DM", + "type": "boolean" + }, + "rfi_excision": { + "default": true, + "description": "Excise/clean/remove detected RFI", + "title": "RFI excision", + "type": "boolean" + }, + "single_pulse_subintegration": { + "default": false, + "description": "Create single-pulse subintegrations with inter-channel dispersion delays removed.", + "title": "Single pulse subintegration", + "type": "boolean" + }, + "subintegration_length": { + "default": -1, + "minimum": -1, + "title": "Subintegration length", + "type": "integer" + } + }, + "title": "DSPSR", + "type": "object" + }, + "output": { + "additionalProperties": false, + "default": {}, + "properties": { + "dynamic_spectrum": { + "additionalProperties": false, + "default": {}, + "properties": { + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + }, + "time_average": { + "default": 0.5, + "description": "Time averaging, in seconds.", + "minimum": 0.01, + "title": "Time average", + "type": "number" + } + }, + "title": "Dynamic Spectrum", + "type": "object" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "description": "Quantise output into 8-bit samples", + "properties": { + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + }, + "scale": { + "default": 5, + "description": "Conversion sigma to use when converting to 8-bit samples", + "minimum": 1, + "title": "Conversion sigma", + "type": "number" + } + }, + "title": "Quantisation", + "type": "object" + } + }, + "title": "Output", + "type": "object" + }, + "presto": { + "additionalProperties": false, + "default": {}, + "properties": { + "fold_profile": { + "default": true, + "description": "Fold the pulsar profile", + "title": "Fold", + "type": "boolean" + }, + "input": { + "additionalProperties": false, + "properties": { + "decode_sigma": { + "default": 3, + "description": "Sigma threshold for decoding", + "minimum": 1, + "title": "Decode sigma", + "type": "number" + }, + "nr_blocks": { + "default": 100, + "description": "Number of blocks to read at a time", + "minimum": 1, + "title": "Nr of blocks", + "type": "integer" + }, + "samples_per_block": { + "default": 8192, + "minimum": 16, + "title": "Block size (samples)", + "type": "integer" + } + }, + "title": "Input", + "type": "object" + }, + "prepdata": { + "additionalProperties": false, + "default": {}, + "properties": { + "dm": { + "default": -1, + "desciption": "Dispersion Measure (-1 for none)", + "minimum": -1, + "title": "DM", + "type": "number" + } + }, + "title": "prepdata", + "type": "object" + }, + "prepfold": { + "default": true, + "title": "Enable prepfold", + "type": "boolean" + }, + "rfifind": { + "additionalProperties": false, + "default": {}, + "properties": { + "blocks": { + "default": 16, + "minimum": 1, + "title": "blocks", + "type": "integer" + } + }, + "title": "rfifind", + "type": "object" + }, + "rrats": { + "additionalProperties": false, + "default": {}, + "properties": { + "dm_range": { + "default": 5, + "minimum": 0, + "title": "DM range", + "type": "number" + }, + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + } + }, + "title": "RRATs analysis", + "type": "object" + } + }, + "title": "PRESTO", + "type": "object" + }, + "pulsar": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "", + "description": "Name of the pulsar to fold, if strategy=manual", + "title": "Name", + "type": "string" + }, + "strategy": { + "default": "manual", + "description": "How to look up the pulsar to fold", + "enum": [ + "manual", + "meta", + "sapfind", + "sapfind3", + "tabfind", + "tabfind+" + ], + "enum_titles": [ + "Pulsar name specified here", + "SAP target is pulsar name", + "Brightest known pulsar in SAP", + "Brightest 3 known pulsars in SAP", + "Brightest known pulsar in TAB", + "Brightest 3 known pulsars in TAB" + ], + "title": "Strategy", + "type": "string" + } + }, + "title": "Pulsar to fold", + "type": "object" + }, + "single_pulse_search": { + "default": false, + "description": "Instructs PRESTO to process single pulses, and enables Digifil for CV data", + "title": "Single-pulse search", + "type": "boolean" + } + } + }, + "type": "http://localhost:3000/api/task_type/pipeline", + "type_value": "pipeline" + }, + { + "description": "This schema defines the parameters for a pulsar pipeline.", + "name": "pulsar pipeline", + "purpose": "technical_commissioning", + "schema": { + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/pulsar%20pipeline/6#", + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "description": "This schema defines the parameters for a pulsar pipeline.", + "patternProperties": { + "^[$]schema$": {} + }, + "properties": { + "cluster_resources": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/7#/definitions/cluster_resources", + "default": {} + }, + "dspsr": { + "additionalProperties": false, + "default": {}, + "properties": { + "digifil": { + "additionalProperties": false, + "default": {}, + "description": "Processes single pulses in CV data if single-pulse search is enabled", + "properties": { + "channels_per_part": { + "default": 512, + "description": "Number of frequency channels per part (multiple of subbands per part).", + "maximum": 512, + "minimum": 1, + "title": "Nr of Frequency Channels", + "type": "integer" + }, + "coherent_dedispersion": { + "default": true, + "title": "Coherent Dedispersion", + "type": "boolean" + }, + "dm": { + "default": -1, + "desciption": "Dispersion Measure (-1 for none)", + "minimum": -1, + "title": "DM", + "type": "number" + }, + "integration_time_factor": { + "default": 4, + "minimum": 1, + "title": "Integration time", + "type": "integer" + } + }, + "title": "Digifil", + "type": "object" + }, + "enabled": { + "default": true, + "title": "Enabled", + "type": "boolean" + }, + "filterbank": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_part": { + "default": 120, + "description": "Number of frequency channels per part (multiple of subbands per part).", + "maximum": 512, + "minimum": 1, + "title": "Nr of Frequency Channels", + "type": "integer" + }, + "coherent_dedispersion": { + "default": true, + "title": "Coherent Dedispersion", + "type": "boolean" + }, + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + } + }, + "title": "Create extra channels", + "type": "object" + }, + "optimise_period_dm": { + "default": true, + "title": "Optimise period & DM", + "type": "boolean" + }, + "rfi_excision": { + "default": true, + "description": "Excise/clean/remove detected RFI", + "title": "RFI excision", + "type": "boolean" + }, + "single_pulse_subintegration": { + "default": false, + "description": "Create single-pulse subintegrations with inter-channel dispersion delays removed.", + "title": "Single pulse subintegration", + "type": "boolean" + }, + "subintegration_length": { + "default": -1, + "minimum": -1, + "title": "Subintegration length", + "type": "integer" + } + }, + "title": "DSPSR", + "type": "object" + }, + "output": { + "additionalProperties": false, + "default": {}, + "properties": { + "dynamic_spectrum": { + "additionalProperties": false, + "default": {}, + "properties": { + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + }, + "time_average": { + "default": 0.5, + "description": "Time averaging, in seconds.", + "minimum": 0.01, + "title": "Time average", + "type": "number" + } + }, + "title": "Dynamic Spectrum", + "type": "object" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "description": "Quantise output into 8-bit samples", + "properties": { + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + }, + "scale": { + "default": 5, + "description": "Conversion sigma to use when converting to 8-bit samples", + "minimum": 1, + "title": "Conversion sigma", + "type": "number" + } + }, + "title": "Quantisation", + "type": "object" + } + }, + "title": "Output", + "type": "object" + }, + "presto": { + "additionalProperties": false, + "default": {}, + "properties": { + "fold_profile": { + "default": true, + "description": "Fold the pulsar profile", + "title": "Fold", + "type": "boolean" + }, + "input": { + "additionalProperties": false, + "properties": { + "decode_sigma": { + "default": 3, + "description": "Sigma threshold for decoding", + "minimum": 1, + "title": "Decode sigma", + "type": "number" + }, + "nr_blocks": { + "default": 100, + "description": "Number of blocks to read at a time", + "minimum": 1, + "title": "Nr of blocks", + "type": "integer" + }, + "samples_per_block": { + "default": 8192, + "minimum": 16, + "title": "Block size (samples)", + "type": "integer" + } + }, + "title": "Input", + "type": "object" + }, + "prepdata": { + "additionalProperties": false, + "default": {}, + "properties": { + "dm": { + "default": -1, + "desciption": "Dispersion Measure (-1 for none)", + "minimum": -1, + "title": "DM", + "type": "number" + } + }, + "title": "prepdata", + "type": "object" + }, + "prepfold": { + "default": true, + "title": "Enable prepfold", + "type": "boolean" + }, + "rfifind": { + "additionalProperties": false, + "default": {}, + "properties": { + "blocks": { + "default": 16, + "minimum": 1, + "title": "blocks", + "type": "integer" + } + }, + "title": "rfifind", + "type": "object" + }, + "rrats": { + "additionalProperties": false, + "default": {}, + "properties": { + "dm_range": { + "default": 5, + "minimum": 0, + "title": "DM range", + "type": "number" + }, + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + } + }, + "title": "RRATs analysis", + "type": "object" + } + }, + "title": "PRESTO", + "type": "object" + }, + "pulsar": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "", + "description": "Name of the pulsar to fold, if strategy=manual", + "title": "Name", + "type": "string" + }, + "strategy": { + "default": "manual", + "description": "How to look up the pulsar to fold", + "enum": [ + "manual", + "meta", + "sapfind", + "sapfind3", + "tabfind", + "tabfind+" + ], + "enum_titles": [ + "Pulsar name specified here", + "SAP target is pulsar name", + "Brightest known pulsar in SAP", + "Brightest 3 known pulsars in SAP", + "Brightest known pulsar in TAB", + "Brightest 3 known pulsars in TAB" + ], + "title": "Strategy", + "type": "string" + } + }, + "title": "Pulsar to fold", + "type": "object" + }, + "single_pulse_search": { + "default": false, + "description": "Instructs PRESTO to process single pulses, and enables Digifil for CV data", + "title": "Single-pulse search", + "type": "boolean" + } + }, + "required": [ + "pulsar", + "presto", + "dspsr", + "output" + ], + "title": "pulsar pipeline", + "type": "object", + "version": 6 + }, + "state": "legacy", + "version": 6, + "id": 27, + "ref_resolved_schema": { + "definitions": { + "beamformer": { + "additionalProperties": false, + "default": {}, + "properties": { + "pipelines": { + "additionalItems": false, + "default": [ + {} + ], + "description": "This array of beamformer pipelines is currently restricted to exactly 1 item. Support for handling multiple pipelines (in cobalt) will be added in the future.", + "items": { + "$ref": "#/definitions/beamformer_pipeline" + }, + "maxItems": 1, + "minItems": 1, + "title": "Pipelines", + "type": "array" + }, + "ppf": { + "default": false, + "description": "Use a PPF for the channellisation for beamforming. If not, an FFT is used.", + "title": "Use PPF when beamforming", + "type": "boolean" + } + }, + "required": [ + "pipelines", + "ppf" + ], + "title": "Beamformer", + "type": "object" + }, + "beamformer_pipeline": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "Beamformer Pipeline {{ self.index }}", + "properties": { + "coherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [ + { + "name": "_SAP_name_", + "tabs": [] + } + ], + "description": "Which SAPs in the observation to beamform.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + }, + "tab_rings": { + "additonalProperties": false, + "default": {}, + "description": "Rings of TABs around the center of the beam.", + "properties": { + "count": { + "default": 0, + "maximum": 11, + "minimum": 0, + "title": "Number of rings", + "type": "integer" + }, + "width": { + "default": 0.01, + "description": "Distance between pointings.", + "minimum": 0, + "title": "Ring width", + "type": "number" + } + }, + "title": "Tied-Array Rings", + "type": "object" + }, + "tabs": { + "additionalItems": false, + "default": [], + "description": "Tied-array beams to form", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "TAB {{ self.index }}", + "properties": { + "allow_after_previous": { + "default": true, + "description": "This TAB can be recorded after the previous TAB, if duration allows.", + "title": "Allow after previous", + "type": "boolean" + }, + "duration": { + "default": 0, + "description": "Exposure time of the TAB. 0 = observation duration.", + "maximum": 0, + "minimum": 0, + "title": "Duration", + "type": "integer" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {} + }, + "relative": { + "default": false, + "description": "The SAP pointing is added to the TAB pointing", + "title": "Relative to SAP", + "type": "boolean" + } + }, + "required": [ + "pointing", + "relative" + ], + "title": "Tied-Array Beam", + "type": "object" + }, + "title": "Tied-Array Beams", + "type": "array" + } + }, + "required": [ + "name", + "tabs" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "SAPs", + "settings" + ], + "title": "Coherent Tied-Array Beams", + "type": "object" + }, + "flys eye": { + "additionalProperties": false, + "default": {}, + "description": "Produce beams containing the individual station signals", + "properties": { + "enabled": { + "default": false, + "title": "Enable Fly's Eye", + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "enabled" + ], + "title": "Fly's Eye Settings", + "type": "object" + }, + "incoherent": { + "additionalProperties": false, + "default": {}, + "properties": { + "SAPs": { + "additionalItems": false, + "default": [], + "description": "Which SAPs in the observation to create incoherent TABs for (empty list = all).", + "items": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "_SAP_to_beamform_", + "description": "Name of the SAP to beamform", + "minLength": 1, + "title": "SAP name", + "type": "string" + }, + "subbands": { + "$ref": "#/definitions/subband_selection", + "default": {} + } + }, + "required": [ + "name", + "subbands" + ], + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "settings": { + "$ref": "#/definitions/stokes_settings", + "default": {} + } + }, + "required": [ + "settings", + "SAPs" + ], + "title": "Incoherent Tied-Array Beams", + "type": "object" + }, + "name": { + "default": "_beamformer_name_", + "description": "Beamformer name, used for identification purposes.", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ], + "description": "While observing, COBALT will beamform on the intersection of all stations in this list and the used stations in the observation. So, specifying all possible stations here means that all observation-stations are used. Specifying a small subset here means that only the observing-stations in this small list are used. By default we let COBALT beamform on the Core stations.", + "minItems": 1 + } + }, + "required": [ + "name" + ], + "title": "Beamformer Pipeline", + "type": "object" + }, + "stokes": { + "default": "I", + "description": "Which Stokes to produce", + "enum": [ + "I", + "IQUV", + "XXYY" + ], + "title": "Stokes", + "type": "string" + }, + "stokes_settings": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 1, + "description": "Number of frequency bands per subband", + "enum": [ + 1, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 1, + "title": "Channels/subband", + "type": "integer" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "properties": { + "bits": { + "default": 8, + "description": "Number of bits for a single value", + "enum": [ + 8 + ], + "title": "Bits/sample", + "type": "integer" + }, + "enabled": { + "default": false, + "title": "Output quantisation into integers", + "type": "boolean" + }, + "scale_max": { + "default": 5, + "description": "Cut off values above this treshold", + "title": "Maximum value", + "type": "number" + }, + "scale_min": { + "default": -5, + "description": "Cut off values below this treshold", + "title": "Minimum value", + "type": "number" + } + }, + "required": [ + "enabled", + "bits", + "scale_min", + "scale_max" + ], + "title": "Output quantisation settings", + "type": "object" + }, + "stokes": { + "$ref": "#/definitions/stokes", + "default": "I" + }, + "subbands_per_file": { + "default": 488, + "description": "The maximum number of subbands to write in each output dataproduct.", + "maximum": 488, + "minimum": 1, + "title": "Subbands per file", + "type": "integer" + }, + "time_integration_factor": { + "default": 1, + "description": "The number of samples to integrate over", + "maximum": 12288, + "minimum": 1, + "title": "Time integration", + "type": "integer" + } + }, + "required": [ + "stokes", + "time_integration_factor", + "channels_per_subband" + ], + "type": "object" + }, + "subband_selection": { + "additionalProperties": false, + "default": {}, + "properties": { + "list": { + "additionalItems": false, + "default": [], + "description": "If method is 'select subset', only beamform these subbands, and only if they occur in the SAP.", + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "minItems": 0, + "title": "Subset selection", + "type": "array" + }, + "method": { + "default": "copy", + "description": "How to select the subbands to beam form", + "enum": [ + "copy", + "largest continuous subset", + "select subset" + ], + "title": "Method", + "type": "string" + } + }, + "required": [ + "method" + ], + "title": "Subband selection", + "type": "object" + }, + "calibrator": { + "additionalProperties": false, + "default": {}, + "properties": { + "autoselect": { + "default": true, + "description": "Auto-select calibrator based on elevation", + "title": "Auto-select", + "type": "boolean" + }, + "name": { + "default": "calibrator", + "description": "Name of the calibrator SAP", + "title": "Name", + "type": "string" + }, + "pointing": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "description": "Manually selected calibrator", + "title": "Digital pointing" + } + }, + "required": [ + "autoselect", + "pointing", + "name" + ], + "type": "object" + }, + "correlator": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_subband": { + "default": 64, + "description": "Number of frequency bands per subband", + "enum": [ + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024 + ], + "minimum": 8, + "title": "Channels/subband", + "type": "integer" + }, + "integration_time": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "default": 1, + "description": "Desired integration period (seconds)", + "minimum": 0.1, + "title": "Integration time" + }, + "storage_cluster": { + "default": "CEP4", + "description": "Cluster to write output to", + "enum": [ + "CEP4", + "DragNet" + ], + "title": "Storage cluster", + "type": "string" + }, + "topocentric_frequency_correction": { + "default": false, + "description": "Correct frequencies for the Doppler shift caused by the Earth's rotation.", + "title": "Topocentric Frequency Correction", + "type": "boolean" + } + } + }, + "timedelta": { + "default": 0, + "description": "A time duration or delta expressed in seconds", + "type": "number" + }, + "timestamp": { + "default": "1970-01-01T00:00:00Z", + "description": "A timestamp defined in UTC", + "format": "date-time", + "pattern": "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d(\\.\\d+)?Z?", + "type": "string" + }, + "timewindow": { + "additionalProperties": false, + "description": "A timewindow interval: [from, to)", + "properties": { + "from": { + "$ref": "#/definitions/timestamp" + }, + "to": { + "$ref": "#/definitions/timestamp" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "cluster_resources": { + "additionalProperties": false, + "default": {}, + "description": "Which cluster resources to claim for this pipeline.", + "properties": { + "cores_per_task": { + "default": 2, + "description": "Number of cores to reserve for each process in the pipeline.", + "maximum": 24, + "minimum": 1, + "title": "Cores/task", + "type": "integer" + }, + "parallel_tasks": { + "default": 122, + "description": "Maximum number of tasks to run in parallel. Determines the size of the reservation. A smaller reservation results in a longer pipeline run. A bigger reservation results in more in resource waste.", + "maximum": 488, + "minimum": 1, + "title": "Max parallel tasks", + "type": "integer" + }, + "where": { + "additionalProperties": false, + "default": {}, + "description": "Where to run this pipeline.", + "properties": { + "cluster": { + "default": "CEP4", + "enum": [ + "CEP4" + ], + "title": "Cluster", + "type": "string" + }, + "partition": { + "default": "cpu", + "enum": [ + "cpu", + "gpu", + "testing" + ], + "title": "Partition", + "type": "string" + } + }, + "required": [ + "cluster", + "partition" + ], + "title": "Where", + "type": "object" + } + }, + "required": [ + "where", + "cores_per_task", + "parallel_tasks" + ], + "title": "Cluster resources", + "type": "object" + }, + "demix_strategy": { + "default": "auto", + "enum": [ + "auto", + "yes", + "no" + ], + "type": "string" + }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, + "pointing": { + "additionalProperties": false, + "properties": { + "angle1": { + "default": 0.6624317181687094, + "description": "First angle (e.g. RA)", + "title": "Angle 1", + "type": "number" + }, + "angle2": { + "default": 1.5579526427549426, + "description": "Second angle (e.g. DEC)", + "title": "Angle 2", + "type": "number" + }, + "direction_type": { + "default": "J2000", + "description": "", + "enum": [ + "J2000", + "AZELGEO", + "LMN", + "SUN", + "MOON", + "MERCURY", + "VENUS", + "MARS", + "JUPITER", + "SATURN", + "URANUS", + "NEPTUNE", + "PLUTO" + ], + "title": "Reference frame", + "type": "string" + }, + "target": { + "default": "_target_name_", + "description": "Description of where this beam points at", + "minLength": 1, + "title": "Target", + "type": "string" + } + }, + "required": [ + "angle1", + "angle2", + "target" + ], + "type": "object" + }, + "purpose": { + "default": "target", + "description": "The intended use of this pointing: calibrator, target or all sky", + "enum": [ + "calibrator", + "target", + "all sky" + ], + "type": "string" + }, + "QA": { + "additionalProperties": false, + "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", + "properties": { + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} + }, + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" + }, + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" + }, + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" + }, + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" + } + }, + "required": [ + "enabled", + "nr_of_subbands", + "nr_of_timestamps" + ], + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", + "type": "object" + }, + "SAPs": { + "additionalItems": false, + "default": [ + {} + ], + "description": "Station beams", + "items": { + "additionalProperties": false, + "default": {}, + "headerTemplate": "{{ i0 }} - {{ self.name }}", + "properties": { + "digital_pointing": { + "$id": "#target_pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "default": {}, + "title": "Digital pointing" + }, + "name": { + "default": "_SAP_name_", + "description": "Identifier for this beam", + "minLength": 1, + "title": "Name", + "type": "string" + }, + "subbands": { + "additionalItems": false, + "default": [ + 255 + ], + "items": { + "maximum": 511, + "minimum": 0, + "title": "Subband", + "type": "integer" + }, + "maxItems": 488, + "minItems": 1, + "title": "Subband list", + "type": "array" + } + }, + "required": [ + "name", + "digital_pointing", + "subbands" + ], + "title": "SAP", + "type": "object" + }, + "minItems": 0, + "title": "SAPs", + "type": "array" + }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, + "antenna_set": { + "default": "HBA_DUAL", + "description": "Fields & antennas to use", + "enum": [ + "HBA_DUAL", + "HBA_DUAL_INNER", + "HBA_ONE", + "HBA_ONE_INNER", + "HBA_ZERO", + "HBA_ZERO_INNER", + "LBA_INNER", + "LBA_OUTER", + "LBA_SPARSE_EVEN", + "LBA_SPARSE_ODD", + "LBA_ALL" + ], + "title": "Antenna set", + "type": "string" + }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, + "antennas": { + "description": "Structure to describe a set of specific antennafields", + "properties": { + "fields": { + "default": [], + "items": { + "properties": { + "field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Field", + "type": "string" + }, + "station": { + "$ref": "#/definitions/station" + }, + "type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "station", + "field", + "type" + ], + "title": "Field", + "type": "object" + }, + "title": "Fields", + "type": "array" + }, + "set": { + "$ref": "#/definitions/antenna_set", + "default": "HBA_DUAL" + } + }, + "required": [ + "fields" + ], + "title": "Antennas", + "type": "object" + }, + "filter": { + "default": "HBA_110_190", + "description": "Must match antenna type", + "enum": [ + "LBA_10_90", + "LBA_30_90", + "HBA_110_190", + "HBA_210_250" + ], + "title": "Band-pass filter", + "type": "string" + }, + "max_number_of_missing_stations": { + "default": 0, + "description": "Maximum number of stations that can be omitted from a group (due to maintenance for example)", + "minimum": 0, + "title": "Maximum number of stations to omit", + "type": "integer" + }, + "station": { + "description": "These are the LOFAR stations", + "enum": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "FR606", + "SE607", + "UK608", + "DE609", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ], + "title": "Station", + "type": "string" + }, + "station_group": { + "anyOf": [ + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "The group of all stations on the Superterp", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Superterp", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + }, + "description": "The group of all Core stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Core", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch remote stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Remote", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + }, + "description": "The group of all Dutch (Core + Remote) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 1, + "stations": [ + "DE601", + "DE605" + ] + }, + "description": "A subgroup of the international stations which are required when doing observation with international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "International required", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 6, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all (Core + Remote + International) stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", + "type": "object" + } + ], + "default": { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + }, + "description": "A set of predefined list of stations, and a constraint on how many stations are allowed to be missing (due to maintenance for example)", + "title": "Station group", + "type": "object" + }, + "station_groups": { + "additionalItems": false, + "additionalProperties": false, + "default": [ + { + "max_nr_missing": 1, + "stations": [ + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007" + ] + } + ], + "description": "One or more predefined or custom groups of stations", + "items": { + "$ref": "#/definitions/station_group" + }, + "minItems": 1, + "title": "Station groups", + "type": "array" + }, + "station_list": { + "additionalItems": false, + "additionalProperties": false, + "default": [], + "items": { + "$ref": "#/definitions/station" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, + "task_connector": { + "additionalProperties": false, + "default": {}, + "description": "A task connector describes what a task can take as input and produces as output.", + "properties": { + "dataformat": { + "description": "The data type of a task connector describes in which format the data is produced/consumed.", + "enum": [ + "MeasurementSet", + "Beamformed", + "QA_HDF5", + "QA_Plots", + "pulp summary", + "pulp analysis" + ], + "title": "Data Format", + "type": "string" }, - "time_steps": { - "default": 1, - "minimum": 1, - "title": "Time steps", - "type": "integer" + "datatype": { + "description": "The data type of a task connector describes its what kind of data is produced/consumed.", + "enum": [ + "visibilities", + "time series", + "instrument model", + "image", + "quality", + "pulsar profile" + ], + "title": "Data Type", + "type": "string" + }, + "role": { + "description": "The role of a task connector describes its intended use.", + "enum": [ + "correlator", + "beamformer", + "inspection plots", + "calibrator", + "target", + "any" + ], + "title": "Role", + "type": "string" } }, "required": [ - "frequency_steps", - "time_steps" + "role", + "datatype", + "dataformat" ], - "title": "Averaging", "type": "object" - }, + } + }, + "properties": { "cluster_resources": { - "$ref": "#/definitions/cluster_resources", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/7#/definitions/cluster_resources", "default": {} }, - "demix": { + "dspsr": { "additionalProperties": false, "default": {}, "properties": { - "frequency_steps": { - "default": 64, - "description": "Must be a multiple of the averaging frequency steps", - "minimum": 1, - "title": "Frequency steps", - "type": "integer" + "digifil": { + "additionalProperties": false, + "default": {}, + "description": "Processes single pulses in CV data if single-pulse search is enabled", + "properties": { + "channels_per_part": { + "default": 512, + "description": "Number of frequency channels per part (multiple of subbands per part).", + "maximum": 512, + "minimum": 1, + "title": "Nr of Frequency Channels", + "type": "integer" + }, + "coherent_dedispersion": { + "default": true, + "title": "Coherent Dedispersion", + "type": "boolean" + }, + "dm": { + "default": -1, + "desciption": "Dispersion Measure (-1 for none)", + "minimum": -1, + "title": "DM", + "type": "number" + }, + "integration_time_factor": { + "default": 4, + "minimum": 1, + "title": "Integration time", + "type": "integer" + } + }, + "title": "Digifil", + "type": "object" }, - "ignore_target": { - "default": false, - "title": "Ignore target", + "enabled": { + "default": true, + "title": "Enabled", "type": "boolean" }, - "sources": { - "additionalItems": false, - "items": { - "default": "CasA", - "enum": [ - "CasA", - "CygA", - "HerA", - "HydraA", - "TauA", - "VirA" - ], - "type": "string" + "filterbank": { + "additionalProperties": false, + "default": {}, + "properties": { + "channels_per_part": { + "default": 120, + "description": "Number of frequency channels per part (multiple of subbands per part).", + "maximum": 512, + "minimum": 1, + "title": "Nr of Frequency Channels", + "type": "integer" + }, + "coherent_dedispersion": { + "default": true, + "title": "Coherent Dedispersion", + "type": "boolean" + }, + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + } }, - "maxItems": 2, - "minItems": 0, - "type": "array", - "uniqueItems": true + "title": "Create extra channels", + "type": "object" }, - "time_steps": { - "default": 10, - "description": "Must be a multiple of the averaging time steps", - "minimum": 1, - "title": "Time steps", + "optimise_period_dm": { + "default": true, + "title": "Optimise period & DM", + "type": "boolean" + }, + "rfi_excision": { + "default": true, + "description": "Excise/clean/remove detected RFI", + "title": "RFI excision", + "type": "boolean" + }, + "single_pulse_subintegration": { + "default": false, + "description": "Create single-pulse subintegrations with inter-channel dispersion delays removed.", + "title": "Single pulse subintegration", + "type": "boolean" + }, + "subintegration_length": { + "default": -1, + "minimum": -1, + "title": "Subintegration length", "type": "integer" } }, - "required": [], - "title": "Demixing", + "title": "DSPSR", "type": "object" }, - "flag": { + "output": { "additionalProperties": false, "default": {}, "properties": { - "autocorrelations": { + "dynamic_spectrum": { + "additionalProperties": false, + "default": {}, + "properties": { + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + }, + "time_average": { + "default": 0.5, + "description": "Time averaging, in seconds.", + "minimum": 0.01, + "title": "Time average", + "type": "number" + } + }, + "title": "Dynamic Spectrum", + "type": "object" + }, + "quantisation": { + "additionalProperties": false, + "default": {}, + "description": "Quantise output into 8-bit samples", + "properties": { + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + }, + "scale": { + "default": 5, + "description": "Conversion sigma to use when converting to 8-bit samples", + "minimum": 1, + "title": "Conversion sigma", + "type": "number" + } + }, + "title": "Quantisation", + "type": "object" + } + }, + "title": "Output", + "type": "object" + }, + "presto": { + "additionalProperties": false, + "default": {}, + "properties": { + "fold_profile": { "default": true, - "title": "Flag auto correlations", + "description": "Fold the pulsar profile", + "title": "Fold", "type": "boolean" }, - "outerchannels": { + "input": { + "additionalProperties": false, + "properties": { + "decode_sigma": { + "default": 3, + "description": "Sigma threshold for decoding", + "minimum": 1, + "title": "Decode sigma", + "type": "number" + }, + "nr_blocks": { + "default": 100, + "description": "Number of blocks to read at a time", + "minimum": 1, + "title": "Nr of blocks", + "type": "integer" + }, + "samples_per_block": { + "default": 8192, + "minimum": 16, + "title": "Block size (samples)", + "type": "integer" + } + }, + "title": "Input", + "type": "object" + }, + "prepdata": { + "additionalProperties": false, + "default": {}, + "properties": { + "dm": { + "default": -1, + "desciption": "Dispersion Measure (-1 for none)", + "minimum": -1, + "title": "DM", + "type": "number" + } + }, + "title": "prepdata", + "type": "object" + }, + "prepfold": { "default": true, - "title": "Flag outer channels", + "title": "Enable prepfold", "type": "boolean" }, - "rfi_strategy": { - "default": "HBAdefault", + "rfifind": { + "additionalProperties": false, + "default": {}, + "properties": { + "blocks": { + "default": 16, + "minimum": 1, + "title": "blocks", + "type": "integer" + } + }, + "title": "rfifind", + "type": "object" + }, + "rrats": { + "additionalProperties": false, + "default": {}, + "properties": { + "dm_range": { + "default": 5, + "minimum": 0, + "title": "DM range", + "type": "number" + }, + "enabled": { + "default": false, + "title": "Enabled", + "type": "boolean" + } + }, + "title": "RRATs analysis", + "type": "object" + } + }, + "title": "PRESTO", + "type": "object" + }, + "pulsar": { + "additionalProperties": false, + "default": {}, + "properties": { + "name": { + "default": "", + "description": "Name of the pulsar to fold, if strategy=manual", + "title": "Name", + "type": "string" + }, + "strategy": { + "default": "manual", + "description": "How to look up the pulsar to fold", "enum": [ - "none", - "HBAdefault", - "LBAdefault" + "manual", + "meta", + "sapfind", + "sapfind3", + "tabfind", + "tabfind+" ], - "title": "RFI flagging strategy", + "enum_titles": [ + "Pulsar name specified here", + "SAP target is pulsar name", + "Brightest known pulsar in SAP", + "Brightest 3 known pulsars in SAP", + "Brightest known pulsar in TAB", + "Brightest 3 known pulsars in TAB" + ], + "title": "Strategy", "type": "string" } }, - "required": [ - "outerchannels", - "autocorrelations", - "rfi_strategy" - ], - "title": "Flagging", + "title": "Pulsar to fold", "type": "object" }, - "storagemanager": { - "default": "dysco", - "enum": [ - "standard", - "dysco" - ], - "title": "Storage Manager", - "type": "string" + "single_pulse_search": { + "default": false, + "description": "Instructs PRESTO to process single pulses, and enables Digifil for CV data", + "title": "Single-pulse search", + "type": "boolean" } } }, @@ -15711,9 +49048,9 @@ { "description": "This schema defines the parameters for a pulsar pipeline.", "name": "pulsar pipeline", - "purpose": "technical_commissioning", + "purpose": "production", "schema": { - "$id": "http://localhost:3000/schemas/tasktemplate/pulsar%20pipeline-6.json#", + "$id": "https://tmss.lofar.eu/api/schemas/tasktemplate/pulsar%20pipeline/7#", "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "description": "This schema defines the parameters for a pulsar pipeline.", @@ -15722,7 +49059,7 @@ }, "properties": { "cluster_resources": { - "$ref": "#/definitions/cluster_resources", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/7#/definitions/cluster_resources", "default": {} }, "dspsr": { @@ -16006,6 +49343,10 @@ "description": "Instructs PRESTO to process single pulses, and enables Digifil for CV data", "title": "Single-pulse search", "type": "boolean" + }, + "software_version": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/9#/definitions/software_version", + "default": "lofar-pulp:tmss" } }, "required": [ @@ -16016,115 +49357,13 @@ ], "title": "pulsar pipeline", "type": "object", - "version": 6 + "version": 7 }, "state": "active", - "version": 6, - "id": 10, + "version": 7, + "id": 28, "ref_resolved_schema": { "definitions": { - "QA": { - "additionalProperties": false, - "default": {}, - "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", - "properties": { - "file_conversion": { - "$ref": "#/definitions/file_conversion", - "default": {} - }, - "inspection_plots": { - "$ref": "#/definitions/inspection_plots", - "default": "msplots" - }, - "plots": { - "$ref": "#/definitions/plots", - "default": {} - } - }, - "required": [ - "file_conversion", - "plots", - "inspection_plots" - ], - "title": "QA", - "type": "object" - }, - "file_conversion": { - "additionalProperties": false, - "default": {}, - "description": "Create a QA file for the observation", - "properties": { - "enabled": { - "default": true, - "description": "Do/Don't create a QA file for the observation", - "title": "enabled", - "type": "boolean" - }, - "nr_of_subbands": { - "default": -1, - "description": "Keep this number of subbands from the observation in the QA file, or all if -1", - "title": "#subbands", - "type": "integer" - }, - "nr_of_timestamps": { - "default": 256, - "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", - "minimum": 1, - "title": "#timestamps", - "type": "integer" - } - }, - "required": [ - "enabled", - "nr_of_subbands", - "nr_of_timestamps" - ], - "title": "File Conversion", - "type": "object" - }, - "inspection_plots": { - "decription": "Type of inspection plots to run", - "default": "msplots", - "enum": [ - "msplots", - "dynspec", - "none" - ], - "title": "Inspection Plots", - "type": "string" - }, - "plots": { - "additionalProperties": false, - "default": {}, - "description": "Create dynamic spectrum plots", - "properties": { - "autocorrelation": { - "default": true, - "description": "Create autocorrelation plots for all stations", - "title": "autocorrelation", - "type": "boolean" - }, - "crosscorrelation": { - "default": true, - "description": "Create crosscorrelation plots for all baselines", - "title": "crosscorrelation", - "type": "boolean" - }, - "enabled": { - "default": true, - "description": "Do/Don't create plots from the QA file from the observation", - "title": "enabled", - "type": "boolean" - } - }, - "required": [ - "enabled", - "autocorrelation", - "crosscorrelation" - ], - "title": "Plots", - "type": "object" - }, "beamformer": { "additionalProperties": false, "default": {}, @@ -16236,12 +49475,12 @@ "type": "integer" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {} }, "relative": { "default": false, - "description": "Angular offset applied to the TAB pointing", + "description": "The SAP pointing is added to the TAB pointing", "title": "Relative to SAP", "type": "boolean" } @@ -16354,11 +49593,12 @@ "type": "string" }, "station_groups": { - "$ref": "#/definitions/station_groups", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", "default": [ { "max_nr_missing": 1, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -16546,7 +49786,7 @@ "type": "string" }, "pointing": { - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -16581,7 +49821,7 @@ "type": "integer" }, "integration_time": { - "$ref": "#/definitions/timedelta", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -16704,6 +49944,11 @@ ], "type": "string" }, + "software_version": { + "default": "lofar-pipeline:latest", + "description": "The version/tag of the pipeline that should be used", + "type": "string" + }, "pointing": { "additionalProperties": false, "properties": { @@ -16765,71 +50010,106 @@ ], "type": "string" }, - "station_configuration": { + "QA": { + "additionalProperties": false, "default": {}, + "description": "Perform all Quality Assurance (QA) tasks, including file conversion and plotting.", "properties": { - "SAPs": { - "$ref": "#/definitions/SAPs", - "default": [ - {} - ], - "minItems": 1 + "file_conversion": { + "$ref": "#/definitions/file_conversion", + "default": {} }, - "antenna_set": { - "$ref": "#/definitions/antenna_set", - "default": "HBA_DUAL" + "inspection_plots": { + "$ref": "#/definitions/inspection_plots", + "default": "msplots" }, - "filter": { - "$ref": "#/definitions/filter", - "default": "HBA_110_190" + "plots": { + "$ref": "#/definitions/plots", + "default": {} + } + }, + "required": [ + "file_conversion", + "plots", + "inspection_plots" + ], + "title": "QA", + "type": "object" + }, + "file_conversion": { + "additionalProperties": false, + "default": {}, + "description": "Create a QA file for the observation", + "properties": { + "enabled": { + "default": true, + "description": "Do/Don't create a QA file for the observation", + "title": "enabled", + "type": "boolean" }, - "station_groups": { - "$ref": "#/definitions/station_groups", - "default": [ - { - "max_nr_missing": 4, - "stations": [ - "CS002", - "CS003", - "CS004", - "CS005", - "CS006", - "CS007", - "CS011", - "CS013", - "CS017", - "CS021", - "CS024", - "CS026", - "CS028", - "CS030", - "CS031", - "CS032", - "CS101", - "CS103", - "CS201", - "CS301", - "CS302", - "CS401", - "CS501" - ] - } - ] + "nr_of_subbands": { + "default": -1, + "description": "Keep this number of subbands from the observation in the QA file, or all if -1", + "title": "#subbands", + "type": "integer" }, - "tile_beam": { - "$ref": "#/definitions/pointing", - "default": {}, - "description": "HBA only", - "title": "Tile beam" + "nr_of_timestamps": { + "default": 256, + "description": "Extract this number of timestamps from the observation in the QA file (equidistantanly sampled, no averaging/interpolation)", + "minimum": 1, + "title": "#timestamps", + "type": "integer" } }, "required": [ - "station_groups", - "antenna_set", - "filter", - "SAPs" + "enabled", + "nr_of_subbands", + "nr_of_timestamps" ], - "title": "station_configuration", + "title": "File Conversion", + "type": "object" + }, + "inspection_plots": { + "decription": "Type of inspection plots to run", + "default": "msplots", + "enum": [ + "msplots", + "dynspec", + "none" + ], + "title": "Inspection Plots", + "type": "string" + }, + "plots": { + "additionalProperties": false, + "default": {}, + "description": "Create dynamic spectrum plots", + "properties": { + "autocorrelation": { + "default": true, + "description": "Create autocorrelation plots for all stations", + "title": "autocorrelation", + "type": "boolean" + }, + "crosscorrelation": { + "default": true, + "description": "Create crosscorrelation plots for all baselines", + "title": "crosscorrelation", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "Do/Don't create plots from the QA file from the observation", + "title": "enabled", + "type": "boolean" + } + }, + "required": [ + "enabled", + "autocorrelation", + "crosscorrelation" + ], + "title": "Plots", "type": "object" }, "SAPs": { @@ -16845,7 +50125,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "#/definitions/pointing", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -16885,6 +50165,17 @@ "title": "SAPs", "type": "array" }, + "antenna_field": { + "default": "HBA", + "enum": [ + "LBA", + "HBA", + "HBA0", + "HBA1" + ], + "title": "Antenna Field", + "type": "string" + }, "antenna_set": { "default": "HBA_DUAL", "description": "Fields & antennas to use", @@ -16904,6 +50195,15 @@ "title": "Antenna set", "type": "string" }, + "antenna_type": { + "default": "HBA", + "enum": [ + "LBA", + "HBA" + ], + "title": "Antenna Type", + "type": "string" + }, "antennas": { "description": "Structure to describe a set of specific antennafields", "properties": { @@ -16977,7 +50277,7 @@ "type": "integer" }, "station": { - "description": "These are all LOFAR (1 and 2) stations", + "description": "These are the LOFAR stations", "enum": [ "CS001", "CS002", @@ -17081,6 +50381,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -17115,6 +50416,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -17209,6 +50511,7 @@ "default": { "max_nr_missing": 4, "stations": [ + "CS001", "CS002", "CS003", "CS004", @@ -17245,211 +50548,10 @@ "RS409", "RS503", "RS508", - "RS509" - ] - }, - "description": "The group of all Dutch (Core + Remote) stations", - "properties": { - "max_nr_missing": { - "$ref": "#/definitions/max_number_of_missing_stations" - }, - "stations": { - "$ref": "#/definitions/station_list", - "enum": [ - [ - "CS002", - "CS003", - "CS004", - "CS005", - "CS006", - "CS007", - "CS011", - "CS013", - "CS017", - "CS021", - "CS024", - "CS026", - "CS028", - "CS030", - "CS031", - "CS032", - "CS101", - "CS103", - "CS201", - "CS301", - "CS302", - "CS401", - "CS501", - "RS106", - "RS205", - "RS208", - "RS210", - "RS305", - "RS306", - "RS307", - "RS310", - "RS406", - "RS407", - "RS409", - "RS503", - "RS508", - "RS509" - ] - ] - } - }, - "required": [ - "stations", - "max_nr_missing" - ], - "title": "Dutch", - "type": "object" - }, - { - "additionalProperties": false, - "default": { - "max_nr_missing": 2, - "stations": [ - "DE601", - "DE602", - "DE603", - "DE604", - "DE605", - "DE609", - "FR606", - "SE607", - "UK608", - "PL610", - "PL611", - "PL612", - "IE613", - "LV614" - ] - }, - "description": "The group of all international stations", - "properties": { - "max_nr_missing": { - "$ref": "#/definitions/max_number_of_missing_stations" - }, - "stations": { - "$ref": "#/definitions/station_list", - "enum": [ - [ - "DE601", - "DE602", - "DE603", - "DE604", - "DE605", - "DE609", - "FR606", - "SE607", - "UK608", - "PL610", - "PL611", - "PL612", - "IE613", - "LV614" - ] - ] - } - }, - "required": [ - "stations", - "max_nr_missing" - ], - "title": "International", - "type": "object" - }, - { - "additionalProperties": false, - "default": { - "max_nr_missing": 1, - "stations": [ - "DE601", - "DE605" - ] - }, - "description": "A subgroup of the international stations which are required when doing observation with international stations", - "properties": { - "max_nr_missing": { - "$ref": "#/definitions/max_number_of_missing_stations" - }, - "stations": { - "$ref": "#/definitions/station_list", - "enum": [ - [ - "DE601", - "DE605" - ] - ] - } - }, - "required": [ - "stations", - "max_nr_missing" - ], - "title": "International required", - "type": "object" - }, - { - "additionalProperties": false, - "default": { - "max_nr_missing": 6, - "stations": [ - "CS002", - "CS003", - "CS004", - "CS005", - "CS006", - "CS007", - "CS011", - "CS013", - "CS017", - "CS021", - "CS024", - "CS026", - "CS028", - "CS030", - "CS031", - "CS032", - "CS101", - "CS103", - "CS201", - "CS301", - "CS302", - "CS401", - "CS501", - "RS106", - "RS205", - "RS208", - "RS210", - "RS305", - "RS306", - "RS307", - "RS310", - "RS406", - "RS407", - "RS409", - "RS503", - "RS508", - "RS509", - "DE601", - "DE602", - "DE603", - "DE604", - "DE605", - "DE609", - "FR606", - "SE607", - "UK608", - "PL610", - "PL611", - "PL612", - "IE613", - "LV614" + "RS509" ] }, - "description": "The group of all (Core + Remote + International) stations", + "description": "The group of all Dutch (Core + Remote) stations", "properties": { "max_nr_missing": { "$ref": "#/definitions/max_number_of_missing_stations" @@ -17458,6 +50560,7 @@ "$ref": "#/definitions/station_list", "enum": [ [ + "CS001", "CS002", "CS003", "CS004", @@ -17494,7 +50597,48 @@ "RS409", "RS503", "RS508", - "RS509", + "RS509" + ] + ] + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Dutch", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 2, + "stations": [ + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" + ] + }, + "description": "The group of all international stations", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list", + "enum": [ + [ "DE601", "DE602", "DE603", @@ -17517,42 +50661,100 @@ "stations", "max_nr_missing" ], - "title": "All", + "title": "International", "type": "object" }, { "additionalProperties": false, "default": { - "max_nr_missing": 0, + "max_nr_missing": 1, "stations": [ - "CS002" + "DE601", + "DE605" ] }, - "description": "A custom group of stations which can be defined by the user", + "description": "A subgroup of the international stations which are required when doing observation with international stations", "properties": { "max_nr_missing": { "$ref": "#/definitions/max_number_of_missing_stations" }, "stations": { - "$ref": "#/definitions/station_list" + "$ref": "#/definitions/station_list", + "enum": [ + [ + "DE601", + "DE605" + ] + ] } }, "required": [ "stations", "max_nr_missing" ], - "title": "Custom", + "title": "International required", "type": "object" }, { "additionalProperties": false, "default": { - "max_nr_missing": 0, + "max_nr_missing": 6, "stations": [ - "CS001" + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" ] }, - "description": "All LOFAR2 stations", + "description": "The group of all (Core + Remote + International) stations", "properties": { "max_nr_missing": { "$ref": "#/definitions/max_number_of_missing_stations" @@ -17561,7 +50763,58 @@ "$ref": "#/definitions/station_list", "enum": [ [ - "CS001" + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501", + "RS106", + "RS205", + "RS208", + "RS210", + "RS305", + "RS306", + "RS307", + "RS310", + "RS406", + "RS407", + "RS409", + "RS503", + "RS508", + "RS509", + "DE601", + "DE602", + "DE603", + "DE604", + "DE605", + "DE609", + "FR606", + "SE607", + "UK608", + "PL610", + "PL611", + "PL612", + "IE613", + "LV614" ] ] } @@ -17570,7 +50823,31 @@ "stations", "max_nr_missing" ], - "title": "LOFAR2", + "title": "All", + "type": "object" + }, + { + "additionalProperties": false, + "default": { + "max_nr_missing": 0, + "stations": [ + "CS001" + ] + }, + "description": "A custom group of stations which can be defined by the user", + "properties": { + "max_nr_missing": { + "$ref": "#/definitions/max_number_of_missing_stations" + }, + "stations": { + "$ref": "#/definitions/station_list" + } + }, + "required": [ + "stations", + "max_nr_missing" + ], + "title": "Custom", "type": "object" } ], @@ -17624,6 +50901,74 @@ "type": "array", "uniqueItems": true }, + "station_configuration": { + "default": {}, + "properties": { + "SAPs": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "default": [ + {} + ], + "minItems": 1 + }, + "antenna_set": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "default": "HBA_DUAL" + }, + "filter": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "default": "HBA_110_190" + }, + "station_groups": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "default": [ + { + "max_nr_missing": 4, + "stations": [ + "CS001", + "CS002", + "CS003", + "CS004", + "CS005", + "CS006", + "CS007", + "CS011", + "CS013", + "CS017", + "CS021", + "CS024", + "CS026", + "CS028", + "CS030", + "CS031", + "CS032", + "CS101", + "CS103", + "CS201", + "CS301", + "CS302", + "CS401", + "CS501" + ] + } + ] + }, + "tile_beam": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "default": {}, + "description": "HBA only", + "title": "Tile beam" + } + }, + "required": [ + "station_groups", + "antenna_set", + "filter", + "SAPs" + ], + "title": "station_configuration", + "type": "object" + }, "task_connector": { "additionalProperties": false, "default": {}, @@ -17679,7 +51024,7 @@ }, "properties": { "cluster_resources": { - "$ref": "#/definitions/cluster_resources", + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/7#/definitions/cluster_resources", "default": {} }, "dspsr": { @@ -17963,6 +51308,10 @@ "description": "Instructs PRESTO to process single pulses, and enables Digifil for CV data", "title": "Single-pulse search", "type": "boolean" + }, + "software_version": { + "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/9#/definitions/software_version", + "default": "lofar-pulp:tmss" } } }, diff --git a/SAS/TMSS/frontend/tmss_webapp/src/authenticate/auth.js b/SAS/TMSS/frontend/tmss_webapp/src/authenticate/auth.js index 5b3e72c288dc46004c450b2634c23b081e302381..60a488ec8e399c2ddfbf71e965dc2729921214ef 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/authenticate/auth.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/authenticate/auth.js @@ -28,7 +28,6 @@ const Auth = { return prev; }, {}); const userDetails = {'name':res.username, 'token': cookies.csrftoken, 'websocket_token': res.websocket_token}; - // axios.defaults.headers.common['Authorization'] = `Token ${cookies.csrftoken}`; localStorage.setItem("user", JSON.stringify(userDetails)); return Auth.getUserPermission(userDetails); } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/authenticate/login.js b/SAS/TMSS/frontend/tmss_webapp/src/authenticate/login.js index 900d14ad913f494c2f35066fbe889f090b70096d..5801a96671bc896ce97e93dedafd97ff2cb5a6b5 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/authenticate/login.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/authenticate/login.js @@ -79,7 +79,7 @@ export class Login extends Component { * Keycloak login, redirect to keycloak page * @param {*} */ - async doKeyCloakLogin(e) { + async doKeyCloakLogin() { window.location.href = this.KEYCLOAK_AUTH_URL; } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js b/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js index 476265887ecdde2f5ec856e6d06a428a9fc53eba..0a065cb4cd25c52c203fe0bc7e173992d7cef45e 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js @@ -423,8 +423,8 @@ function Jeditor(props) { props.parentFunction(editorFunction); } }); - editor.on('change',(e) => { - setEditorOutput(e); + editor.on('change',() => { + setEditorOutput(); }); // Called when a row is deleted // editor.on('deleteRow', (e) => { @@ -646,7 +646,7 @@ function Jeditor(props) { * Function to call on button click and send the output back to parent through callback * */ - function setEditorOutput(e) { + function setEditorOutput() { const editorOutput = editorRef.current.getValue(); /* Sends editor output without formatting if requested */ const formatOutput = props.formatOutput === undefined ? true : props.formatOutput; diff --git a/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JViewer.js b/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JViewer.js index bb5b5d5b1ae991dec9643c727d8f8a6beeb4bd90..7c5c6c6aabc0365dfc6826cdddf0aa7bf82eda4a 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JViewer.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JViewer.js @@ -2,7 +2,7 @@ * Component to view the JSON data using 'react-json-view' package */ import React, {Component} from 'react'; -import ReactJson from 'microlink/react-json-view'; +import ReactJson from '@microlink/react-json-view'; export default class JViewer extends Component { constructor(props) { @@ -18,7 +18,7 @@ export default class JViewer extends Component { * @param {JSON} outputJSON */ updateOutput(outputJSON) { - this.state.outputJSON = outputJSON; + this.setState({outputJSON:outputJSON}); } render() { diff --git a/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/Jeditor.test.js b/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/Jeditor.test.js new file mode 100644 index 0000000000000000000000000000000000000000..61f1d50005443238b9a932abf4b28fcd4837028f --- /dev/null +++ b/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/Jeditor.test.js @@ -0,0 +1,36 @@ +import JViewer from './JViewer'; // Import the JViewer component +import renderer from 'react-test-renderer'; +import rerenderer from 'react-test-renderer'; + +describe('JViewer Component', () => { + // JSON objects for testing + const testStartJSON = { + key1: 'value1', + }; + + + + + + test("should correctly display the JSON data", () => { + const page = renderer + .create(<JViewer outputJSON={testStartJSON} />) + .toJSON(); + expect(page).toMatchSnapshot(); +}) + +test("should update the JSON data when calling updateOutput", () => { + // Create a renderer and render the component + const component = renderer.create(<JViewer outputJSON={testStartJSON} />); + const jViewerInstance = component.getInstance(); + + // Define new JSON data + const newJSONData = { key2: 'value3' }; + + // Call the updateOutput function with the new JSON data + jViewerInstance.updateOutput(newJSONData); + + // Assert that the component's state has been updated + expect(jViewerInstance.state.outputJSON).toEqual(newJSONData); + }); +}); diff --git a/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/__snapshots__/Jeditor.test.js.snap b/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/__snapshots__/Jeditor.test.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..86bdd5c0e9fc7db82993e78aba2f767a5da2a016 --- /dev/null +++ b/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/__snapshots__/Jeditor.test.js.snap @@ -0,0 +1,410 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`JViewer Component should correctly display the JSON data 1`] = ` +<div + className="react-json-view" + style={ + Object { + "backgroundColor": "rgba(0, 0, 0, 0)", + "cursor": "default", + "fontFamily": "monospace", + "position": "relative", + } + } +> + <div + className="pretty-json-container object-container" + > + <div + className="object-content" + > + <div + className="object-key-val" + onMouseEnter={[Function]} + onMouseLeave={[Function]} + > + <span> + <span + onClick={[Function]} + style={ + Object { + "cursor": "pointer", + "display": "inline-block", + } + } + > + <div + className="icon-container" + style={ + Object { + "display": "inline-block", + "width": "17px", + } + } + > + <span + className="expanded-icon" + > + <svg + fill="currentColor" + style={ + Object { + "color": "#586e75", + "height": "1em", + "paddingLeft": "2px", + "verticalAlign": "top", + "width": "1em", + } + } + viewBox="0 0 15 15" + > + <path + d="M0 5l6 6 6-6z" + /> + </svg> + </span> + </div> + <span + style={ + Object { + ":hover": Object { + "opacity": "1", + }, + "color": "#002b36", + "display": "inline-block", + "fontStyle": "none", + "letterSpacing": "0.5px", + "opacity": "0.85", + "verticalAlign": "top", + } + } + > + <span + className="object-key" + > + <span + style={ + Object { + "verticalAlign": "top", + } + } + > + " + </span> + <span> + root + </span> + <span + style={ + Object { + "verticalAlign": "top", + } + } + > + " + </span> + </span> + <span + style={ + Object { + "color": "#002b36", + "display": "inline-block", + "margin": "0px 5px", + "verticalAlign": "top", + } + } + > + : + </span> + </span> + <span + style={ + Object { + "color": "#002b36", + "cursor": "pointer", + "display": "inline-block", + "fontWeight": "bold", + } + } + > + { + </span> + </span> + <div + className="object-meta-data" + onClick={[Function]} + style={ + Object { + "display": "inline-block", + "padding": "0px 0px 0px 10px", + } + } + > + <span + className="object-size" + style={ + Object { + "borderRadius": "3px", + "color": "rgba(0, 0, 0, 0.3)", + "cursor": "default", + "fontStyle": "italic", + "margin": "0px 6px 0px 0px", + } + } + > + 1 + item + </span> + <span + className="copy-to-clipboard-container" + style={ + Object { + "display": "none", + "verticalAlign": "top", + } + } + title="Copy to clipboard" + > + <span + onClick={[Function]} + style={ + Object { + "cursor": "pointer", + "display": "inline", + } + } + > + <span + className="copy-icon" + > + <svg + fill="currentColor" + preserveAspectRatio="xMidYMid meet" + style={ + Object { + "color": "#268bd2", + "fontSize": "15px", + "height": "1em", + "marginRight": "3px", + "verticalAlign": "top", + "width": "1em", + } + } + viewBox="0 0 40 40" + > + <g> + <path + d="m30 35h-25v-22.5h25v7.5h2.5v-12.5c0-1.4-1.1-2.5-2.5-2.5h-7.5c0-2.8-2.2-5-5-5s-5 2.2-5 5h-7.5c-1.4 0-2.5 1.1-2.5 2.5v27.5c0 1.4 1.1 2.5 2.5 2.5h25c1.4 0 2.5-1.1 2.5-2.5v-5h-2.5v5z m-20-27.5h2.5s2.5-1.1 2.5-2.5 1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5 1.3 2.5 2.5 2.5h2.5s2.5 1.1 2.5 2.5h-20c0-1.5 1.1-2.5 2.5-2.5z m-2.5 20h5v-2.5h-5v2.5z m17.5-5v-5l-10 7.5 10 7.5v-5h12.5v-5h-12.5z m-17.5 10h7.5v-2.5h-7.5v2.5z m12.5-17.5h-12.5v2.5h12.5v-2.5z m-7.5 5h-5v2.5h5v-2.5z" + /> + </g> + </svg> + </span> + </span> + </span> + </div> + </span> + <div + className="pushed-content object-container" + > + <div + className="object-content" + style={ + Object { + "marginLeft": "6px", + } + } + > + <div + className="variable-row" + onMouseEnter={[Function]} + onMouseLeave={[Function]} + style={ + Object { + ":hover": Object { + "borderLeft": "2px solid rgb(235, 235, 235)", + "paddingLeft": "19px", + }, + "borderLeft": "1px solid rgb(235, 235, 235)", + "paddingBottom": "3px", + "paddingLeft": 20, + "paddingRight": "5px", + "paddingTop": "3px", + } + } + > + <span> + <span + className="object-key" + style={ + Object { + ":hover": Object { + "opacity": "1", + }, + "color": "#002b36", + "display": "inline-block", + "fontStyle": "none", + "letterSpacing": "0.5px", + "opacity": "0.85", + "verticalAlign": "top", + } + } + > + <span + style={ + Object { + "verticalAlign": "top", + } + } + > + " + </span> + <span + style={ + Object { + "display": "inline-block", + } + } + > + key1 + </span> + <span + style={ + Object { + "verticalAlign": "top", + } + } + > + " + </span> + </span> + <span + style={ + Object { + "color": "#002b36", + "display": "inline-block", + "margin": "0px 5px", + "verticalAlign": "top", + } + } + > + : + </span> + </span> + <div + className="variable-value" + onClick={null} + style={ + Object { + "cursor": "default", + "display": "inline-block", + "paddingRight": "6px", + "position": "relative", + } + } + > + <div + style={ + Object { + "color": "#cb4b16", + "display": "inline-block", + } + } + > + <span + className="data-type-label" + style={ + Object { + "fontSize": "11px", + "marginRight": "4px", + "opacity": "0.8", + } + } + > + string + </span> + <span + className="string-value" + onClick={[Function]} + style={ + Object { + "cursor": "default", + } + } + > + " + value1 + " + </span> + </div> + </div> + <span + className="copy-to-clipboard-container" + style={ + Object { + "display": "none", + "verticalAlign": "top", + } + } + title="Copy to clipboard" + > + <span + onClick={[Function]} + style={ + Object { + "cursor": "pointer", + "display": "inline", + } + } + > + <span + className="copy-icon" + > + <svg + fill="currentColor" + preserveAspectRatio="xMidYMid meet" + style={ + Object { + "color": "#268bd2", + "fontSize": "15px", + "height": "1em", + "marginRight": "3px", + "verticalAlign": "top", + "width": "1em", + } + } + viewBox="0 0 40 40" + > + <g> + <path + d="m30 35h-25v-22.5h25v7.5h2.5v-12.5c0-1.4-1.1-2.5-2.5-2.5h-7.5c0-2.8-2.2-5-5-5s-5 2.2-5 5h-7.5c-1.4 0-2.5 1.1-2.5 2.5v27.5c0 1.4 1.1 2.5 2.5 2.5h25c1.4 0 2.5-1.1 2.5-2.5v-5h-2.5v5z m-20-27.5h2.5s2.5-1.1 2.5-2.5 1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5 1.3 2.5 2.5 2.5h2.5s2.5 1.1 2.5 2.5h-20c0-1.5 1.1-2.5 2.5-2.5z m-2.5 20h5v-2.5h-5v2.5z m17.5-5v-5l-10 7.5 10 7.5v-5h12.5v-5h-12.5z m-17.5 10h7.5v-2.5h-7.5v2.5z m12.5-17.5h-12.5v2.5h12.5v-2.5z m-7.5 5h-5v2.5h5v-2.5z" + /> + </g> + </svg> + </span> + </span> + </span> + </div> + </div> + </div> + <span + className="brace-row" + > + <span + style={ + Object { + "color": "#002b36", + "cursor": "pointer", + "display": "inline-block", + "fontWeight": "bold", + "paddingLeft": "3px", + } + } + > + } + </span> + </span> + </div> + </div> + </div> +</div> +`; diff --git a/SAS/TMSS/frontend/tmss_webapp/src/components/Resources/ResourceInputList.js b/SAS/TMSS/frontend/tmss_webapp/src/components/Resources/ResourceInputList.js index 74b4c6ed2efb82eaff4a383e163a25b040022efe..9f1ec26c4b22478a7287b2f9dad42c62caf57949 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/components/Resources/ResourceInputList.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/components/Resources/ResourceInputList.js @@ -63,7 +63,7 @@ export class ResourceInputList extends Component { onChange={(e) => this.onInputChange(item.name, e)} style={{width:"90%", marginRight: "5px"}} /> } - <button className="p-link" data-testid={`${item.name}-btn`} onClick={(e) => this.removeInput(item.name)}> + <button className="p-link" data-testid={`${item.name}-btn`} onClick={() => this.removeInput(item.name)}> <i className="fa fa-trash pi-error"></i></button> </div> <div className="col-lg-1 col-md-1 col-sm-12"></div> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/components/Spreadsheet/BetweenEditor.js b/SAS/TMSS/frontend/tmss_webapp/src/components/Spreadsheet/BetweenEditor.js index 9650132292cb1fd54503dcbdbd3974bcea1cf924..679483ce333c4bcd8a1b53a138f9590820b27fdf 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/components/Spreadsheet/BetweenEditor.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/components/Spreadsheet/BetweenEditor.js @@ -237,7 +237,7 @@ render() { </div> <div className="col-lg-1 col-md-1 col.sm-12" title='Delete date'> {this.state.rowData.length !== (index+1) && - <button className="p-link" onClick={(e) => this.removeInput(index)} style={{marginLeft: '-15px'}} > + <button className="p-link" onClick={() => this.removeInput(index)} style={{marginLeft: '-15px'}} > <i className="fa fa-trash pi-error"></i></button> } </div> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/components/ViewTable.js b/SAS/TMSS/frontend/tmss_webapp/src/components/ViewTable.js index 9fab663dc5c37ded82d51f53127238334d1a44ad..31e74e4a3e6b32682ddc3d4f556b966a32fbc16c 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/components/ViewTable.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/components/ViewTable.js @@ -986,7 +986,7 @@ function CalendarColumnFilter({ TableUtil.saveFilter(currentTableName, Header, value); } }} - onClearButtonClick={(e) => { + onClearButtonClick={() => { if(storeFilter) { TableUtil.clearColumnFilter(currentTableName, Header); } @@ -2195,7 +2195,7 @@ function Table(props) { setcustompagevalue(); } }; - const onCustomPage = (e) => { + const onCustomPage = () => { loadingStatus = true; setLoading(true); if (typeof custompagevalue === 'undefined' || custompagevalue == null) return; @@ -2209,7 +2209,7 @@ function Table(props) { setcustompagevalue(e.value); } - const onShowAllPage = (e) => { + const onShowAllPage = () => { loadingStatus = true; setLoading(true); gotoPage(0); @@ -2482,7 +2482,7 @@ function Table(props) { className={`resizer ${ column.isResizing ? 'isResizing' : '' }`} - onMouseUp={e=> { + onMouseUp={()=> { //On Resizing the column, store the width of the column let colWidths = UtilService.localStore({ type: 'get', key: tablename+'_colWidth' }); if (!colWidths) { diff --git a/SAS/TMSS/frontend/tmss_webapp/src/layout/components/CustomDialog.js b/SAS/TMSS/frontend/tmss_webapp/src/layout/components/CustomDialog.js index 4c65278879ed998548aec4fae202429d79472996..5ebad346e0e47ae96648501562521191bf8dc9f0 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/layout/components/CustomDialog.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/layout/components/CustomDialog.js @@ -40,7 +40,7 @@ export class CustomDialog extends Component { </> } {/* Action button based on the 'actions' props */} - {this.props.actions && this.props.actions.map((action, index) => { + {this.props.actions && this.props.actions.map((action) => { return ( <Button key={action.id} label={action.title} onClick={action.callback} className= {(action.className)? action.className: "" } style={(action.style)? action.style: {}}/> ); diff --git a/SAS/TMSS/frontend/tmss_webapp/src/layout/components/PageActionMenu.js b/SAS/TMSS/frontend/tmss_webapp/src/layout/components/PageActionMenu.js index b63bb6779e03e976f791e2cb97569f8d3c514ec4..1b6f9e060db93da1c081560a25593383f54252cb 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/layout/components/PageActionMenu.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/layout/components/PageActionMenu.js @@ -23,7 +23,7 @@ const PageActionMenu = ({actions, className}) => { } return <div className={"page-action-menu " + className}> - {(actions || []).map((action, index) => { + {(actions || []).map((action) => { if (action.type === 'button') { return ( <button className="p-link" key={action.title + '_page_header'} title={action.title || ''} diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/edit.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/edit.js index 0765c214aac94809ec986b492228efc2162a6b10..f68637fc3eca9f36403cce10049e77b1e2f81245 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/edit.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/edit.js @@ -91,7 +91,7 @@ export class CycleEdit extends Component { .then(resourceList => { this.setState({resourceList: resourceList}); }) - .then((resourceList, resources) => { + .then(() => { this.getCycleDetails(); }); }) diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/list.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/list.test.js index 225fc9c6a419df47d71c0c7c402f4ed6c22add96..d008c9fedf80d619628b700685f9c05e8b28393a 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/list.test.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/list.test.js @@ -36,7 +36,7 @@ beforeEach(() => { const setMockSpy = (async() => { authSpy = jest.spyOn(AuthUtil, 'getUserPermissionByModule'); - await authSpy.mockImplementation((a) => { + await authSpy.mockImplementation(() => { return Promise.resolve({cycle:AuthServiceMock.cycle}) }) resourcesSpy = jest.spyOn(CycleService, 'getResources'); diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/create.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/create.js index 3e512aa56ca1c477982e3c7cdbd730857afb921a..ba9a85fcf8d417c0328995191c06adc85d737efc 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/create.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/create.js @@ -353,8 +353,7 @@ export class ProjectCreate extends Component { ProjectService.saveProject(project, this.defaultResourcesEnabled?projectQuota:[]) .then(project => { if (project.url) { - //let dialog = {}; - if (appGrowl === null) { + if (appGrowl === null) { setAppGrowl(this.growl) } if (project.isQuotaCreated) { @@ -420,13 +419,9 @@ export class ProjectCreate extends Component { let resourceList = []; let resources = []; if (resources) { - // const nonDefaultResources = _.remove(resources, function(resource) { return _.find(defaultResources, {'name': resource.name})==null }); - // resourceList = nonDefaultResources.concat(this.state.resourceList); const defaultResources = this.defaultResources; resourceList = _.sortBy(prevResources.concat(this.state.resourceList), "name"); resources = _.remove(resourceList, function(resource) { return _.find(defaultResources, {'name': resource.name})!=null }); - // const projectQuota = this.setProjectQuotaDefaults(resources); - // this.setState({resourceList: resourceList, resources: resources, projectQuota: projectQuota}); } const projectQuota = this.setProjectQuotaDefaults(resources); this.setState({ diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/edit.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/edit.test.js index 92d697f5738db83a80dcea8f4430e96359218985..ae3d329eba03c86fe5635cf9f030d667af8d87af 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/edit.test.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/edit.test.js @@ -82,7 +82,7 @@ const setMockSpy = (() => { return Promise.resolve({ message: 'deleted' }); }); projectPermissionSpy = jest.spyOn(AuthService, 'getAccessControlMethod'); - projectPermissionSpy.mockImplementation((module, id) => { + projectPermissionSpy.mockImplementation(() => { return Promise.resolve(AuthServiceMock.projectId) }) fileSystemSpy = jest.spyOn(ProjectService, 'getFileSystem'); @@ -94,7 +94,7 @@ const setMockSpy = (() => { return Promise.resolve(ProjectServiceMock.cluster) }) archiveLocationSpy = jest.spyOn(ProjectService, 'getProjectQuotaArchiveLocation'); - archiveLocationSpy.mockImplementation((archiveId) => { + archiveLocationSpy.mockImplementation(() => { return Promise.resolve(ProjectServiceMock.archiveLocation) }) diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/list.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/list.js index a6f9df60716db990b72eaa68b7fd94fea954305a..cbf021d9f8eb9db72782a628b7d3fb6c6feaef57 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/list.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/list.js @@ -412,13 +412,7 @@ export class ProjectList extends Component { return options; } - /** - * Get current user role permission for Project list - */ - // getUserRolePermission = async () => { - // userrole.dispatch({ type: 'project' }); - // this.setState({userrole: userrole.getState()}) - // } + render() { const footer = ( @@ -485,16 +479,16 @@ export class ProjectList extends Component { onHide={() => { this.setState({ showStatusUpdateDialog: false }) }} className="content_dlg"> <div style={{ width: '100%' }}> - <div class="p-fluid"> - <div class="p-grid p-field" style={{ paddingLeft: '15px' }}>Select the status and click 'Save' to update.</div> - {this.statusOptions.map(option => { + <div className="p-fluid"> + <div className="p-grid p-field" style={{ paddingLeft: '15px' }}>Select the status and click 'Save' to update.</div> + {this.statusOptions.map((option) => { return ( - <div className="p-col-12" style={{width: "100%"}}> + <div className="p-col-12" style={{width: "100%"}} key={option.value} > <RadioButton inputId={option.value} name={option.value} value={option.value} - onChange={e => this.setState({ changedStatus: option })} + onChange={() => this.setState({ changedStatus: option })} checked={this.state.changedStatus && this.state.changedStatus.value === option.value} /> <label htmlFor={option.value} className='p-radiobutton-label' style={{textTransform: 'capitalize'}}> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/view.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/view.js index 896ae7ee0722cee17bfaebb0615ea07a74679c96..a1bbfe3f34ededae20fc202ce77c4a225313ca60 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/view.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/view.js @@ -245,13 +245,7 @@ export class ProjectView extends Component { this.setState({dialog: dialog, changedStatus: {}}) } - /** - * Get current user role permission for selected Project - */ - // getUserRolePermission = async () => { - // await userrole.dispatch({ type: 'project' }); - // this.setState({userrole: userrole.getState()}); - // } + render() { const footer = ( @@ -379,16 +373,16 @@ export class ProjectView extends Component { onHide={() => { this.setState({ showStatusUpdateDialog: false, changedStatus: {} }) }} className="content_dlg"> <div style={{ width: '100%' }}> - <div class="p-fluid"> - <div class="p-grid p-field" style={{ paddingLeft: '15px' }}>Select the status and click 'Save' to update.</div> - {this.statusOptions.map(option => { + <div className="p-fluid"> + <div className="p-grid p-field" style={{ paddingLeft: '15px' }}>Select the status and click 'Save' to update.</div> + {this.statusOptions.map((option) => { return ( - <div className="p-col-12" style={{width: "100%"}}> + <div className="p-col-12" style={{width: "100%"}} key={option.value}> <RadioButton inputId={option.value} name={option.value} value={option.value} - onChange={e => this.setState({ changedStatus: option })} + onChange={() => this.setState({ changedStatus: option })} checked={this.state.changedStatus && this.state.changedStatus.value === option.value} /> <label htmlFor={option.value} className='p-radiobutton-label'> @@ -400,9 +394,9 @@ export class ProjectView extends Component { </div> </div> </Dialog> - <CustomDialog type="confirmation" visible={this.state.dialog && this.state.dialog.dialogVisible} - header={this.state.dialog && this.state.dialog.header} message={this.state.dialog && this.state.dialog.detail} actions={this.state.dialog && this.state.dialog.actions} - content={this.state.dialog && this.state.dialog.content} width={this.state.dialog && this.state.dialog.width} showIcon={this.state.dialog && this.state.dialog.showIcon} + <CustomDialog type="confirmation" visible={this.state.dialog?.dialogVisible} + header={this.state.dialog?.header} message={this.state.dialog?.detail} actions={this.state.dialog?.actions} + content={this.state.dialog?.content} width={this.state.dialog?.width} showIcon={this.state.dialog?.showIcon} onClose={this.closeDialog} onCancel={this.closeDialog} onSubmit={this.submitStatusChange} /> </div> } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/view.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/view.test.js index f2868444e53cdac5ad5bb94042cf74ebc888bab1..35e4761d5581079c3ccab78bfd1cfce87e2eadfb 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/view.test.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/view.test.js @@ -50,11 +50,11 @@ const setMockSpy = (() => { return Promise.resolve(_.find(ProjectServiceMock.projectQuota, {id: id})); }); projectPermissionSpy = jest.spyOn(AuthService, 'getAccessControlMethod'); - projectPermissionSpy.mockImplementation((_module, id) => { + projectPermissionSpy.mockImplementation(() => { return Promise.resolve(AuthServiceMock.projectId) }) suListSpy = jest.spyOn(ScheduleService, 'getSchedulingUnitsExpandWithFilter'); - suListSpy.mockImplementation((params, expand, filterQry, orderBy, limit, offset, fields) =>{ + suListSpy.mockImplementation(() =>{ let response = { data: {} }; @@ -64,7 +64,7 @@ const setMockSpy = (() => { return Promise.resolve(response) }) suFiltersSpy = jest.spyOn(ScheduleService, 'getSchedulingUnitFilterDefinition'); - suFiltersSpy.mockImplementation((type)=> { + suFiltersSpy.mockImplementation(()=> { let response = {}; response.data = SUServiceMock.suFilters return Promise.resolve(response) diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.avg.efficiency.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.avg.efficiency.js index 620b78506952b11598bde0f56dbb9ed5b58dee80..383d0d1c117c2f8b5168e4a35dfa2becf24f9119 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.avg.efficiency.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.avg.efficiency.js @@ -60,8 +60,6 @@ class CycleReportAvgEfficiency extends Component { barThickness: 50, // barPercentage: 0.3, data: _.map(this.state.reportData, 'efficiency'), - borderColor: 'white', - borderWidth: 2, } ], }; diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.cycle.completion.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.cycle.completion.js index d0edd7a5b961f8476317de206c167687128222fc..7ac377e7d593ba30a8d55de5737cd6e221aeda46 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.cycle.completion.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.cycle.completion.js @@ -69,7 +69,6 @@ class CycleCompletionLevel extends Component { barThickness: 50, // barPercentage: 0.3, data: _.map(this.state.reportData, 'performed'), - borderColor: 'white', borderWidth: 2 } ], diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.failure.rate.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.failure.rate.js index 16d33059449e7a906b571a69742da45f194efe91..3d8a68cb4431c6681f0bef185c170048e921ff65 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.failure.rate.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.failure.rate.js @@ -46,15 +46,13 @@ class CycleFailureRate extends Component { { type: 'bar', label: 'Hours Lost', - borderColor: '#44a3ce', + borderColor: '44a3ce', backgroundColor: '#44a3ce', borderWidth: 2, barThickness: 50, // barPercentage: 0.5, data: _.map(barData, 'duration'), - borderColor: 'white', - borderWidth: 2, - } + } ], }; } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.main.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.main.js index c447c6827afa14674595b7c2222f79f28f2c5c4d..be92fb1b8bba3f556ed77a16fa94ea07ac766552 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.main.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.main.js @@ -190,14 +190,14 @@ class CycleReportMain extends Component { <div className="col-lg-12" style={{padding: '5px'}}> <Checkbox inputId={`cb-all`} value="all" checked={this.state.reportNames.length === _.keys(REPORT_VARIABLE_MAP).length-1} - onChange={e => {this.selectAllCSVOptions()}}></Checkbox> + onChange={() => {this.selectAllCSVOptions()}}></Checkbox> <label htmlFor={`cb-all`} className="p-checkbox-label checkbox-label">All</label> </div> {csvOptions.map((item, index) => ( - <div className="col-lg-12" style={{padding: '5px'}}> + <div className="col-lg-12" style={{padding: '5px'}} key={item.name}> <Checkbox inputId={`cb-${index}`} value={item.name} checked={item.checked} disabled={item.disabled} - onChange={e => {this.changeCSVOption(item.name, !item.checked)}}></Checkbox> + onChange={()=> {this.changeCSVOption(item.name, !item.checked)}}></Checkbox> <label htmlFor={`cb-${index}`} className={`p-checkbox-label checkbox-label${item.disabled?'-disabled':''}`}>{item.name}</label> </div> ))} @@ -274,7 +274,7 @@ class CycleReportMain extends Component { let isColHeaderSet = false; //Flag to identify if colHeader is added // Get the whole report data set from MainReport component const subReportData = this.cyclesReportData[reportName]; - subReportData.map((data, index) => { + subReportData.map((data ) => { let csvData = {}; const colKeys = _.keys(data); // For every column of the data, replace the column name with the column title @@ -435,7 +435,7 @@ class CycleReportMain extends Component { <i className="fas fa-file-csv"></i> </Link> <Link to={{}} className="report-download-bar" style={{color: "#f20f00"}} title="Download Report as PDF" - onClick={(e) => { // Scroll to the bottom of the report and back to the top before exporting + onClick={() => { // Scroll to the bottom of the report and back to the top before exporting this.reportEndRef.scrollIntoView({behavior: "smooth", block: "end"}); this.reportDownloadBarRef.scrollIntoView({behavior: "smooth", block: "end"}); setTimeout(this.downloadPDF, 500)}}> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.weekly.efficiency.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.weekly.efficiency.js index 697ec3308130117fe0c1913b98842e896fb81639..27ed093561b58122cf3b62544264f20ff01472c8 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.weekly.efficiency.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.weekly.efficiency.js @@ -58,8 +58,6 @@ class CycleWeeklyEfficiency extends Component { barThickness: 25, // barPercentage: 0.5, data: _.map(barData, 'efficiency'), - borderColor: 'white', - borderWidth: 2, } ], }; diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/project.report.main.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/project.report.main.js index 0607b98ab8fab17a210a489d38a87114737b0b44..2463e67ae5a0f89a34ec92a92af183e8de9ba11b 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/project.report.main.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/project.report.main.js @@ -348,7 +348,7 @@ class ProjectReportMain extends Component { <i className="fas fa-file-csv"></i> </Link> <Link to={{}} className="report-download-bar" style={{color: "#f20f00"}} title="Download Report as PDF" - onClick={(e) => { // Scroll to the bottom of the report and back to the top before exporting + onClick={() => { // Scroll to the bottom of the report and back to the top before exporting this.reportEndRef.scrollIntoView({behavior: "smooth", block: "end"}); this.reportDownloadBarRef.scrollIntoView({behavior: "smooth", block: "end"}); setTimeout(this.downloadPDF, 500)}}> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Reservation/reservation.create.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Reservation/reservation.create.js index 0adb1f042f1bc4b4f9d34431c718878a3aae067f..b31bddc5aaa8aa5e6018ceca4e9464f0e961bf9e 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Reservation/reservation.create.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Reservation/reservation.create.js @@ -614,7 +614,7 @@ export class ReservationCreate extends Component { <input type="text" data-input className={`p-inputtext p-component ${this.state.errors.start_time && this.state.touched.start_time ? 'input-error' : ''}`} /> <i className="fa fa-calendar" data-toggle style={{ position: "absolute", marginLeft: '-25px', marginTop: '5px', cursor: 'pointer' }} ></i> <i className="fa fa-times" style={{ position: "absolute", marginLeft: '-50px', marginTop: '5px', cursor: 'pointer' }} - onClick={e => { this.setParams('start_time', ''); this.setReservationParams('start_time', '') }}></i> + onClick={() => { this.setParams('start_time', ''); this.setReservationParams('start_time', '') }}></i> </Flatpickr> <label className={this.state.errors.start_time && this.state.touched.start_time ? "error" : "info"}> {this.state.errors.start_time && this.state.touched.start_time ? this.state.errors.start_time : ""} @@ -644,7 +644,7 @@ export class ReservationCreate extends Component { <input type="text" data-input className={`p-inputtext p-component ${this.state.errors.stop_time && this.state.touched.stop_time ? 'input-error' : ''}`} /> <i className="fa fa-calendar" data-toggle style={{ position: "absolute", marginLeft: '-25px', marginTop: '5px', cursor: 'pointer' }} ></i> <i className="fa fa-times" style={{ position: "absolute", marginLeft: '-50px', marginTop: '5px', cursor: 'pointer' }} - onClick={e => { this.setParams('stop_time', ''); this.setReservationParams('stop_time', '') }}></i> + onClick={() => { this.setParams('stop_time', ''); this.setReservationParams('stop_time', '') }}></i> </Flatpickr> <label className={this.state.errors.stop_time && this.state.touched.stop_time ? "error" : "info"}> {this.state.errors.stop_time && this.state.touched.stop_time ? this.state.errors.stop_time : ""} diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Reservation/reservation.edit.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Reservation/reservation.edit.js index 13dcb5a43ebb4c31a99726cf6f5b6ed7d62e7fa1..222ef856ab3ac0e374867d25cff4d391ac9da86c 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Reservation/reservation.edit.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Reservation/reservation.edit.js @@ -552,7 +552,7 @@ export class ReservationEdit extends Component { <input type="text" data-input className={`p-inputtext p-component ${this.state.errors.start_time && this.state.touched.start_time ? 'input-error' : ''}`} /> <i className="fa fa-calendar" data-toggle style={{ position: "absolute", marginLeft: '-25px', marginTop: '5px', cursor: 'pointer' }} ></i> <i className="fa fa-times" style={{ position: "absolute", marginLeft: '-50px', marginTop: '5px', cursor: 'pointer' }} - onClick={e => { this.setParams('start_time', ''); this.setReservationParams('start_time', '') }}></i> + onClick={() => { this.setParams('start_time', ''); this.setReservationParams('start_time', '') }}></i> </Flatpickr> <label className={this.state.errors.start_time && this.state.touched.start_time ? "error" : "info"}> {this.state.errors.start_time && this.state.touched.start_time ? this.state.errors.start_time : ""} @@ -582,7 +582,7 @@ export class ReservationEdit extends Component { <input type="text" data-input className={`p-inputtext p-component ${this.state.errors.stop_time && this.state.touched.stop_time ? 'input-error' : ''}`} /> <i className="fa fa-calendar" data-toggle style={{ position: "absolute", marginLeft: '-25px', marginTop: '5px', cursor: 'pointer' }} ></i> <i className="fa fa-times" style={{ position: "absolute", marginLeft: '-50px', marginTop: '5px', cursor: 'pointer' }} - onClick={e => { this.setParams('stop_time', ''); this.setReservationParams('stop_time', '') }}></i> + onClick={() => { this.setParams('stop_time', ''); this.setReservationParams('stop_time', '') }}></i> </Flatpickr> <label className={this.state.errors.stop_time && this.state.touched.stop_time ? "error" : "info"}> {this.state.errors.stop_time && this.state.touched.stop_time ? this.state.errors.stop_time : ""} diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/Scheduling.Constraints.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/Scheduling.Constraints.js index c7bce5ad81e3bcef3ac393df18d8c6d96deeeed0..f1abb780aa43d0ae71674afb1ce30724475b773a 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/Scheduling.Constraints.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/Scheduling.Constraints.js @@ -5,7 +5,6 @@ import Jeditor from '../../components/JSONEditor/JEditor'; import UnitConversion from '../../utils/unit.converter'; import UIConstants from '../../utils/ui.constants'; import UtilService from '../../services/util.service'; -/* eslint-disable react-hooks/exhaustive-deps */ const SchedulingConstraints = (props) => { let editorFunction = null; @@ -83,8 +82,7 @@ const SchedulingConstraints = (props) => { validationType: 'datetime', type: schema.definitions.timestamp.type }; - } else if (definitionName === 'pointing') { - } else if (definitionName !== 'timewindow' && definitionName !== 'timestamp') { + } else if (definitionName !== 'timewindow' && definitionName !== 'timestamp') { schema.definitions[definitionName] = { type: schema.definitions[definitionName].type }; diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/Scheduling.task.relation.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/Scheduling.task.relation.js index 3aa4ba99189f09cb8d63039b6203cd9ceb031675..7aed01c825565e2e5676bacdff8835578ecb39ed 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/Scheduling.task.relation.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/Scheduling.task.relation.js @@ -19,11 +19,11 @@ const TaskRelations = (props) => { const [selectedIngestTask, setSelectedIngestTask] = useState(null); const [isSaveDisabled, setSaveDisabled] = useState(true); const [isBlueprintRelation, setBlueprintRelation] = useState(false); - const [stateConfrimDialog, setConfirmDialog] = useState({ dialog: {}, dialogVisible: false }); - const [taskRelationDraft, setTaskRelationDraft] = useState([]); + const [stateConfrimDialog, setConfirmDialog] = useState({ dialog: {}, dialogVisible: false }); + const [taskRelationDraft, setTaskRelationDraft] = useState([]); const isAllTaskChecked = (groupName) => { - const ingestableTasks = ingestRelation[groupName].filter(task => {return getTaskStatus(task)}); - return ingestableTasks.length===ingestRelation[groupName].length; + const ingestableTasks = ingestRelation[groupName].filter(task => { return getTaskStatus(task) }); + return ingestableTasks.length === ingestRelation[groupName].length; } const actionToggle = (taskData) => { return taskData.find((task) => task.action === 'add' || task.action === 'delete') @@ -66,15 +66,15 @@ const TaskRelations = (props) => { stateConfrimDialog.dialogVisible = false setConfirmDialog({ ...stateConfrimDialog }); } - + const addOrDeleteAction = (tempTask, task, isGroup) => { let tcanIngest = task.canIngest; let tpCanIngest = tempTask.canIngest; // common for single or group check/un-check - if ((tpCanIngest && !tcanIngest ) || (tpCanIngest && !tcanIngest )) { + if ((tpCanIngest && !tcanIngest) || (tpCanIngest && !tcanIngest)) { tempTask.action = 'delete'; } - else if ((!tpCanIngest && tcanIngest ) || (!tpCanIngest && tcanIngest )) { + else if ((!tpCanIngest && tcanIngest) || (!tpCanIngest && tcanIngest)) { tempTask.action = 'add'; } else { @@ -82,36 +82,36 @@ const TaskRelations = (props) => { } return tempTask; } - + const checkAndEnableSaveBtn = (selIngestTask) => { selIngestTask = selIngestTask || selectedIngestTask; let canSave = false, tempTaskDraftRelations = []; - const tempIngestRelation = {...ingestRelation}; + const tempIngestRelation = { ...ingestRelation }; setBlueprintRelation(false); - if (_.find(tempIngestRelation['ingest'], {id: selectedIngestTask})?.isObsolete) { + if (_.find(tempIngestRelation['ingest'], { id: selectedIngestTask })?.isObsolete) { setSaveDisabled(!canSave); - } else { + } else { for (const ingestGroup of _.keys(tempIngestRelation)) { for (const ingestTask of tempIngestRelation[ingestGroup]) { - let tempTaskRelation = {} ; + let tempTaskRelation = {}; if (ingestableTaskTypes.indexOf(ingestTask.group)) { - tempTaskRelation = {...ingestTask}; + tempTaskRelation = { ...ingestTask }; } const originTask = _.find(originIngestRelation[ingestGroup], ['id', ingestTask.id]); _.map(tempTaskRelation.connectors, connector => { - let connectorConsumer = _.find(connector.consumers, {id: selIngestTask}); + let connectorConsumer = _.find(connector.consumers, { id: selIngestTask }); let originConnector = _.find(originTask.connectors, ['id', connector.id]); - let originConnectorConsumer = _.find(originConnector.consumers, {id: selIngestTask}) || {id: selIngestTask, canIngest: false, canRemove: true}; + let originConnectorConsumer = _.find(originConnector.consumers, { id: selIngestTask }) || { id: selIngestTask, canIngest: false, canRemove: true }; if (connectorConsumer) { - if(connectorConsumer.canIngest !== originConnectorConsumer.canIngest) { - canSave = ((!connectorConsumer.canRemove && connectorConsumer.canIngest) || (connectorConsumer.canRemove) )? true : canSave; - tempTaskRelation.toAdd = connectorConsumer.canIngest? true: tempTaskRelation.toAdd; - tempTaskRelation.toDelete = connectorConsumer.canIngest === false ? true: tempTaskRelation.toDelete; + if (connectorConsumer.canIngest !== originConnectorConsumer.canIngest) { + canSave = ((!connectorConsumer.canRemove && connectorConsumer.canIngest) || (connectorConsumer.canRemove)) ? true : canSave; + tempTaskRelation.toAdd = connectorConsumer.canIngest ? true : tempTaskRelation.toAdd; + tempTaskRelation.toDelete = connectorConsumer.canIngest === false ? true : tempTaskRelation.toDelete; connectorConsumer.toAdd = connectorConsumer.canIngest; connectorConsumer.toDelete = !connectorConsumer.canIngest; setBlueprintRelation(!canSave); } else { - connectorConsumer.toAdd = connectorConsumer.canIngest !== originConnectorConsumer.canIngest && connectorConsumer.toAdd ? true : false; + connectorConsumer.toAdd = connectorConsumer.canIngest !== originConnectorConsumer.canIngest && connectorConsumer.toAdd ? true : false; connectorConsumer.toDelete = false; } } @@ -126,47 +126,47 @@ const TaskRelations = (props) => { } const toggleCheckItem = (event, group, task, index, connector) => { - let tempIngestRelation = {...ingestRelation}; - if (_.find(tempIngestRelation['ingest'], {id: selectedIngestTask})?.isObsolete) { + let tempIngestRelation = { ...ingestRelation }; + if (_.find(tempIngestRelation['ingest'], { id: selectedIngestTask })?.isObsolete) { setSaveDisabled(true); return; } let groupTasks = tempIngestRelation[group]; if (connector) { - let connectorConsumer = _.find(connector.consumers, {id: selectedIngestTask}); + let connectorConsumer = _.find(connector.consumers, { id: selectedIngestTask }); if (!connectorConsumer) { - connectorConsumer = {id: selectedIngestTask, canRemove: true}; + connectorConsumer = { id: selectedIngestTask, canRemove: true }; connector.consumers = connector.consumers || []; connector.consumers.push(connectorConsumer); } connectorConsumer.canIngest = event.checked; connectorConsumer.toAdd = event.checked; _.map(task.connectors, taskConnector => { - if(taskConnector.id === connector.id) { + if (taskConnector.id === connector.id) { taskConnector = connector; } }); - let taskConsumer = _.find(task.consumers, {id: selectedIngestTask}); + let taskConsumer = _.find(task.consumers, { id: selectedIngestTask }); if (!taskConsumer) { - taskConsumer = {id: selectedIngestTask, canRemove: true}; + taskConsumer = { id: selectedIngestTask, canRemove: true }; task.consumers.push(taskConsumer); } - taskConsumer.canIngest = !task['connectors'].filter(connector => {return !(_.find(connector.consumers,{id:selectedIngestTask}))?.canIngest}).length; + taskConsumer.canIngest = !task['connectors'].filter(connector => { return !(_.find(connector.consumers, { id: selectedIngestTask }))?.canIngest }).length; } else { - let taskConsumer = _.find(task.consumers, {id: selectedIngestTask}); + let taskConsumer = _.find(task.consumers, { id: selectedIngestTask }); if (taskConsumer) { taskConsumer.canIngest = event.checked; - } else { - taskConsumer = {id: selectedIngestTask, canIngest: event.checked, canRemove: true}; + } else { + taskConsumer = { id: selectedIngestTask, canIngest: event.checked, canRemove: true }; task.consumers.push(taskConsumer); } task.connectors.map(connector => { connector.consumers = connector.consumers || []; - let connectorConsumer = _.find(connector.consumers, {id: selectedIngestTask}); + let connectorConsumer = _.find(connector.consumers, { id: selectedIngestTask }); const createConnectorConsumer = !connectorConsumer; - connectorConsumer = connectorConsumer || { id: selectedIngestTask, canRemove: true}; - connectorConsumer.toAdd = event.checked === connector.canIngest? false: event.checked; + connectorConsumer = connectorConsumer || { id: selectedIngestTask, canRemove: true }; + connectorConsumer.toAdd = event.checked === connector.canIngest ? false : event.checked; connectorConsumer.canIngest = event.checked; if (createConnectorConsumer) { connector.consumers.push(connectorConsumer); @@ -182,22 +182,22 @@ const TaskRelations = (props) => { const toggleGroup = (event, group) => { const tempIngestRelation = { ...ingestRelation }; - if (_.find(tempIngestRelation['ingest'], {id: selectedIngestTask})?.isObsolete) { + if (_.find(tempIngestRelation['ingest'], { id: selectedIngestTask })?.isObsolete) { setSaveDisabled(true); return; } let groupTasks = tempIngestRelation[group]; for (let ingestTask of groupTasks) { - let ingestTaskConsumer = _.find(ingestTask.consumers, {id: selectedIngestTask}); - ingestTaskConsumer = ingestTaskConsumer || {id: selectedIngestTask, canRemove: true}; + let ingestTaskConsumer = _.find(ingestTask.consumers, { id: selectedIngestTask }); + ingestTaskConsumer = ingestTaskConsumer || { id: selectedIngestTask, canRemove: true }; ingestTaskConsumer.canIngest = event.checked; ingestTask.connectors.map(connector => { connector.consumers = connector.consumers || []; - let connectorConsumer = _.find(connector.consumers, {id: selectedIngestTask}); - connectorConsumer = connectorConsumer || {id: selectedIngestTask, canRemove: true}; - connectorConsumer.toAdd = event.checked === connectorConsumer.canIngest? false: event.checked; + let connectorConsumer = _.find(connector.consumers, { id: selectedIngestTask }); + connectorConsumer = connectorConsumer || { id: selectedIngestTask, canRemove: true }; + connectorConsumer.toAdd = event.checked === connectorConsumer.canIngest ? false : event.checked; connectorConsumer.canIngest = event.checked; - if (!_.find(connector.consumers, {id: selectedIngestTask})) { + if (!_.find(connector.consumers, { id: selectedIngestTask })) { connector.consumers.push(connectorConsumer); } return connector; @@ -211,53 +211,53 @@ const TaskRelations = (props) => { const getSUDialogContent = () => { let changedData = []; let unRemovableData = []; - const tempIngestRelation = {...ingestRelation}; + const tempIngestRelation = { ...ingestRelation }; for (const ingestGroup of _.keys(tempIngestRelation)) { for (const ingestTask of tempIngestRelation[ingestGroup]) { const originTask = _.find(originIngestRelation[ingestGroup], ['id', ingestTask.id]); _.map(ingestTask.connectors, connector => { - let connectorConsumer = _.find(connector.consumers, {id: selectedIngestTask}); - connectorConsumer = connectorConsumer || {id: selectedIngestTask, canIngest: false, canRemove: true}; - let taskConsumer = _.find(ingestTask.consumers, {id: selectedIngestTask}); - taskConsumer = taskConsumer || {id: selectedIngestTask, canIngest: false, canRemove: true}; - let originConnectorConsumer = _.find((_.find(originTask.connectors, ['id', connector.id])).consumers, {id: selectedIngestTask}); - originConnectorConsumer = originConnectorConsumer|| {id: selectedIngestTask, canIngest: false, canRemove: true}; - if ((connectorConsumer.canIngest !== originConnectorConsumer.canIngest) && ((connectorConsumer.canIngest) || (!connectorConsumer.canIngest && connectorConsumer.canRemove)) ) { - changedData.push({name: `${ingestTask.name} (${connector.dataformat_value})`, displayMessage: connectorConsumer.canIngest?"Add":"Remove"}); + let connectorConsumer = _.find(connector.consumers, { id: selectedIngestTask }); + connectorConsumer = connectorConsumer || { id: selectedIngestTask, canIngest: false, canRemove: true }; + let taskConsumer = _.find(ingestTask.consumers, { id: selectedIngestTask }); + taskConsumer = taskConsumer || { id: selectedIngestTask, canIngest: false, canRemove: true }; + let originConnectorConsumer = _.find((_.find(originTask.connectors, ['id', connector.id])).consumers, { id: selectedIngestTask }); + originConnectorConsumer = originConnectorConsumer || { id: selectedIngestTask, canIngest: false, canRemove: true }; + if ((connectorConsumer.canIngest !== originConnectorConsumer.canIngest) && ((connectorConsumer.canIngest) || (!connectorConsumer.canIngest && connectorConsumer.canRemove))) { + changedData.push({ name: `${ingestTask.name} (${connector.dataformat_value})`, displayMessage: connectorConsumer.canIngest ? "Add" : "Remove" }); } - else if((connectorConsumer.canIngest !== originConnectorConsumer.canIngest) && (!connectorConsumer.canIngest && !connectorConsumer.canRemove)) { + else if ((connectorConsumer.canIngest !== originConnectorConsumer.canIngest) && (!connectorConsumer.canIngest && !connectorConsumer.canRemove)) { connectorConsumer.canIngest = true; - taskConsumer.canIngest = !ingestTask['connectors'].filter(connector => {return !(_.find(connector.consumers, {id: selectedIngestTask}))?.canIngest}).length; - unRemovableData.push({name: `${ingestTask.name} (${connector.dataformat_value})`, displayMessage: "Cannot Remove"}) + taskConsumer.canIngest = !ingestTask['connectors'].filter(connector => { return !(_.find(connector.consumers, { id: selectedIngestTask }))?.canIngest }).length; + unRemovableData.push({ name: `${ingestTask.name} (${connector.dataformat_value})`, displayMessage: "Cannot Remove" }) } }) } } return <> - { changedData.length > 0 && + {changedData.length > 0 && <> <div style={{ marginTop: '1em' }}> <b>Do you want to add/remove dataproducts of tasks to Ingest?</b> </div> - - <div style={{ marginTop: '1em' }}> + + <div style={{ marginTop: '1em' }}> <DataTable value={changedData} resizableColumns columnResizeMode="expand" className="card" style={{ paddingLeft: '0em' }}> <Column field="name" header="Task Name (Dataformat)"></Column> <Column field="displayMessage" header="Action"></Column> - </DataTable> + </DataTable> </div> </> } - { unRemovableData.length > 0 && + {unRemovableData.length > 0 && <> <div style={{ marginTop: '1em' }}> <b>Dataproducts of the following task(s) cannot be removed from Ingest as blueprint(s) exists for it/them</b> </div> - <div style={{ marginTop: '1em' }}> + <div style={{ marginTop: '1em' }}> <DataTable value={unRemovableData} resizableColumns columnResizeMode="expand" className="card" style={{ paddingLeft: '0em' }}> <Column field="name" header="Task Name"></Column> <Column field="displayMessage" header="Action"></Column> - </DataTable> + </DataTable> </div> </> } @@ -274,10 +274,10 @@ const TaskRelations = (props) => { closeDialog(); props.submitTaskRelationToIngest({ 'ingestGroup': ingestRelation, 'taskRelationDraft': taskRelationDraft, ingestTask: selectedIngestTask }); setSaveDisabled(true); - setOriginIngestRelation(_.cloneDeep(ingestRelation)); + setOriginIngestRelation(_.cloneDeep(ingestRelation)); } }, - { id: 'no', title: 'Cancel', className:'act-btn-cancel', callback: closeDialog }]; + { id: 'no', title: 'Cancel', className: 'act-btn-cancel', callback: closeDialog }]; dialog.onSubmit = () => { closeDialog(); props.submitTaskRelationToIngest({ 'ingestGroup': ingestRelation, 'taskRelationDraft': taskRelationDraft, ingestTask: selectedIngestTask }); @@ -288,23 +288,23 @@ const TaskRelations = (props) => { dialog.showIcon = false; stateConfrimDialog.dialog = dialog; stateConfrimDialog.dialogVisible = true; - setConfirmDialog({ ...stateConfrimDialog }); + setConfirmDialog({ ...stateConfrimDialog }); }; const getTaskStatus = (task) => { - const ingestableTaskConnectors = _.filter(task.connectors, connector =>{ - return (connector.consumers && - _.find(connector.consumers, {id: selectedIngestTask}) && - _.find(connector.consumers, {id: selectedIngestTask}).canIngest); + const ingestableTaskConnectors = _.filter(task.connectors, connector => { + return (connector.consumers && + _.find(connector.consumers, { id: selectedIngestTask }) && + _.find(connector.consumers, { id: selectedIngestTask }).canIngest); }); - return ingestableTaskConnectors.length===task.connectors.length; + return ingestableTaskConnectors.length === task.connectors.length; }; useEffect(() => { setIngestRelation(_.cloneDeep(props.ingestGroup)); setOriginIngestRelation(_.cloneDeep(props.ingestGroup)); setIngestTasks(_.map(_.orderBy(_.cloneDeep(props.ingestGroup.ingest), "id"), ingestTask => { - ingestTask.displayName=ingestTask.isObsolete?`${ingestTask.name} (Obsolete)`:ingestTask.name; + ingestTask.displayName = ingestTask.isObsolete ? `${ingestTask.name} (Obsolete)` : ingestTask.name; return ingestTask; })); if (!selectedIngestTask) { @@ -313,12 +313,12 @@ const TaskRelations = (props) => { const ingestGroup = props.ingestGroup, tempIngestData = []; Object.keys(ingestGroup).sort().map(group => { if (group !== 'ingest') { - ingestRelation[group].map((task, index) => { + ingestRelation[group].map((task) => { tempIngestData.push(task); return task; }) } return group; - }); + }); setTaskRelationDraft(_.cloneDeep(tempIngestData)); }, [props.ingestGroup]); @@ -328,87 +328,87 @@ const TaskRelations = (props) => { <Button label="Cancel" className="act-btn-cancel mr-0" icon="pi pi-times" onClick={props.toggle} /> </div> ); - + if (selectedIngestTask) { - return ( - <> - <Dialog header="Data Products To Ingest" - footer={footer} - contentStyle={{display: 'block'}} - visible={props.showTaskRelationDialog} maximizable maximized={false} position="center" style={{ width: '40vw' }} - onHide={props.toggle} > - <div style={{ width: '100%' }}> - <div className="p-fluid"> - <div className="p-field p-grid"> - <label htmlFor="ingestTask" className="col-lg-4 col-md-4 col-sm-12">Ingest Task </label> - <div className="col-lg-8 col-md-8 col-sm-12" data-testid="project" > - <Dropdown inputId="ingestTask" optionLabel="displayName" optionValue="id" - tooltip="Select Ingest Task" style={{width:"100%"}} + return ( + <> + <Dialog header="Data Products To Ingest" + footer={footer} + contentStyle={{ display: 'block' }} + visible={props.showTaskRelationDialog} maximizable maximized={false} position="center" style={{ width: '40vw' }} + onHide={props.toggle} > + <div style={{ width: '100%' }}> + <div className="p-fluid"> + <div className="p-field p-grid"> + <label htmlFor="ingestTask" className="col-lg-4 col-md-4 col-sm-12">Ingest Task </label> + <div className="col-lg-8 col-md-8 col-sm-12" data-testid="project" > + <Dropdown inputId="ingestTask" optionLabel="displayName" optionValue="id" + tooltip="Select Ingest Task" style={{ width: "100%" }} // tooltipOptions={this.tooltipOptions} value={selectedIngestTask} - options={ingestTasks} + options={ingestTasks} placeholder="Select Ingest Task" - onChange={(e) => {setSelectedIngestTask(e.value);checkAndEnableSaveBtn(e.value)}} - /> + onChange={(e) => { setSelectedIngestTask(e.value); checkAndEnableSaveBtn(e.value) }} + /> + </div> </div> - </div> - <div className="p-grid p-field" style={{ paddingLeft: '15px' }}><h3>Select dataproducts from task</h3></div> - <div className="p-grid p-field" style={{ paddingLeft: '15px', fontSize: '10px' }}> - <p style={{marginBottom: '0px'}}>(Task Name in <label>blue</label> color and dataformat in <label><span style={{color: 'grey'}}>grey</span></label> color)</p></div> - {Object.keys(ingestRelation).sort().map(group => ( - <> - {ingestableTaskTypes.indexOf(group) >= 0 && ( - <> - <div className="p-col-12" style={{width: "100%"}}> - <Checkbox inputId={group} value={group} onChange={(e) => toggleGroup(e, group)} checked={isAllTaskChecked(group)}></Checkbox> - <label htmlFor={group} className="p-checkbox-label capitalize">{group}</label> - </div> - <div className="pl-4"> - {ingestRelation[group].map((task, index) => - ( - <> - <div className="p-col-12 pl-3"> - <Checkbox inputId={task.name} onChange={(e) => toggleCheckItem(e, group, task, index)} checked={getTaskStatus(task)}></Checkbox> - <label htmlFor={task.name} className="p-checkbox-label">{task.name}<span style={{color: 'grey'}}>{task.connectors.length>1?'': ` (${ task.connectors[0].dataformat_value})`}</span></label> - </div> - {task.connectors.length > 1 && + <div className="p-grid p-field" style={{ paddingLeft: '15px' }}><h3>Select dataproducts from task</h3></div> + <div className="p-grid p-field" style={{ paddingLeft: '15px', fontSize: '10px' }}> + <p style={{ marginBottom: '0px' }}>(Task Name in <label>blue</label> color and dataformat in <label><span style={{ color: 'grey' }}>grey</span></label> color)</p></div> + {Object.keys(ingestRelation).sort().map(group => ( + <> + {ingestableTaskTypes.indexOf(group) >= 0 && ( + <> + <div className="p-col-12" style={{ width: "100%" }}> + <Checkbox inputId={group} value={group} onChange={(e) => toggleGroup(e, group)} checked={isAllTaskChecked(group)}></Checkbox> + <label htmlFor={group} className="p-checkbox-label capitalize">{group}</label> + </div> + <div className="pl-4"> + {ingestRelation[group].map((task, index) => + ( <> - {/* <label className="pl-4 col-lg-2 col-md-2 col-sm-12">Dataformat</label> */} - <div className="pl-4 p-grid"> - {task.connectors.map((connector) => - ( - <div className="p-col-12 pl-3 col-lg-6 col-md-6 col-sm-12"> - <Checkbox inputId={connector.dataformat_value} onChange={(e) => toggleCheckItem(e, group, task, index, connector)} checked={(_.find(connector.consumers, {id: selectedIngestTask}))?.canIngest}></Checkbox> - <label htmlFor={connector.dataformat_value} className="p-checkbox-label" style={{color: 'grey'}}>{`${connector.dataformat_value}`}</label> - </div> - ))} + <div className="p-col-12 pl-3"> + <Checkbox inputId={task.name} onChange={(e) => toggleCheckItem(e, group, task, index)} checked={getTaskStatus(task)}></Checkbox> + <label htmlFor={task.name} className="p-checkbox-label">{task.name}<span style={{ color: 'grey' }}>{task.connectors.length > 1 ? '' : ` (${task.connectors[0].dataformat_value})`}</span></label> </div> - </>} - </> - ))} - </div> - </> + {task.connectors.length > 1 && + <> + {/* <label className="pl-4 col-lg-2 col-md-2 col-sm-12">Dataformat</label> */} + <div className="pl-4 p-grid"> + {task.connectors.map((connector) => + ( + <div className="p-col-12 pl-3 col-lg-6 col-md-6 col-sm-12"> + <Checkbox inputId={connector.dataformat_value} onChange={(e) => toggleCheckItem(e, group, task, index, connector)} checked={(_.find(connector.consumers, { id: selectedIngestTask }))?.canIngest}></Checkbox> + <label htmlFor={connector.dataformat_value} className="p-checkbox-label" style={{ color: 'grey' }}>{`${connector.dataformat_value}`}</label> + </div> + ))} + </div> + </>} + </> + ))} + </div> + </> - )} - </> - ))} - <div> - {isSaveDisabled && isBlueprintRelation? - <span style={{color: 'red'}}>* Cannot remove if blueprint relation exists</span> : <span></span> - } + )} + </> + ))} + <div> + {isSaveDisabled && isBlueprintRelation ? + <span style={{ color: 'red' }}>* Cannot remove if blueprint relation exists</span> : <span></span> + } + </div> </div> </div> - </div> - </Dialog> - <CustomDialog type="confirmation" visible={stateConfrimDialog.dialogVisible} - header={stateConfrimDialog.dialog.header} message={stateConfrimDialog.dialog.detail} actions={stateConfrimDialog.dialog.actions} - content={stateConfrimDialog.dialog.content} width={stateConfrimDialog.dialog.width} showIcon={stateConfrimDialog.dialog.showIcon} - onClose={closeDialog} onCancel={closeDialog} onSubmit={confirmTasks} /> - </> - ) - } else { + </Dialog> + <CustomDialog type="confirmation" visible={stateConfrimDialog.dialogVisible} + header={stateConfrimDialog.dialog.header} message={stateConfrimDialog.dialog.detail} actions={stateConfrimDialog.dialog.actions} + content={stateConfrimDialog.dialog.content} width={stateConfrimDialog.dialog.width} showIcon={stateConfrimDialog.dialog.showIcon} + onClose={closeDialog} onCancel={closeDialog} onSubmit={confirmTasks} /> + </> + ) + } else { return <></> } }; diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/SchedulingUnitList.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/SchedulingUnitList.js index 592c60963fee481523bf3dabc0ae59e013fd6774..7e6246baf1bf037c182d2d2d15feea97b4498787 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/SchedulingUnitList.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/SchedulingUnitList.js @@ -5,11 +5,9 @@ import AppLoader from "./../../layout/components/AppLoader"; import ViewTable from './../../components/ViewTable'; import { CustomPageSpinner } from '../../components/CustomPageSpinner'; import UnitConverter from '../../utils/unit.converter'; -//import UnitConversion from '../../utils/unit.converter'; import _ from 'lodash'; import ScheduleService from '../../services/schedule.service'; import { Link } from 'react-router-dom'; -//import WorkflowService from '../../services/workflow.service'; import UIConstants from '../../utils/ui.constants'; import { DataTable } from 'primereact/datatable'; import { Column } from 'primereact/column'; @@ -318,8 +316,8 @@ class SchedulingUnitList extends Component{ //recursive function to get time constraints scheduleConstraintsArray(obj, parent, defaultcolumns) { - for (var key in obj) { - var value = obj[key]; + for (let key in obj) { + let value = obj[key]; if (typeof value === 'object') { if (key === "time") { const timearray = obj[key]; @@ -349,9 +347,6 @@ class SchedulingUnitList extends Component{ for (let i = 0; i < timearray[timekey].length; i++) { combinedval.push(moment(new Date((timearray[timekey][i]['from']).replace('Z', ''))).format(UIConstants.CALENDAR_DATETIME_FORMAT)); combinedval.push(moment(new Date((timearray[timekey][i]['to']).replace('Z', ''))).format(UIConstants.CALENDAR_DATETIME_FORMAT)); - /*for (const key in timearray[timekey][i]) { - combinedval.push(moment(new Date((timearray[timekey][i][key]).replace('Z', ''))).format(UIConstants.CALENDAR_DATETIME_FORMAT)); - }*/ let combinedvalues = "", combinedvalLength = combinedval?.length; combinedval.forEach((item, index) => { @@ -373,7 +368,6 @@ class SchedulingUnitList extends Component{ defaultcolumns["time_" + timekey] = {name: 'Time '+timekey}; } } else { - //const dateConstraint = moment.utc(); Object.assign(derviedscheduleconstraints, { ["time_" + timekey]: moment(timearray[timekey].replace('Z', '')).format('YYYY-MM-DD HH:mm:ss') }); @@ -516,8 +510,8 @@ class SchedulingUnitList extends Component{ getLinksList = (linkedItems, type) => { return ( <> - {linkedItems && linkedItems.length>0 && linkedItems.map((item, index) => ( - <Link key={index} style={{paddingRight: '3px'}} to={`/schedulingunit/view/${type}/${item}`}>{item}</Link> + {linkedItems && linkedItems.length>0 && linkedItems.map((item) => ( + <Link key={item} style={{paddingRight: '3px'}} to={`/schedulingunit/view/${type}/${item}`}>{item}</Link> ))} </> ); @@ -596,7 +590,6 @@ class SchedulingUnitList extends Component{ * Get server side filter column details form API */ async getFilterColumns(type) { - //const columnOrderToBeRemove = ['Status', 'Workflow Status', 'Observation Start Time', 'Observation End Time', 'Process Start Time', 'Process End Time' ]; const columnDefinitionToBeRemove = ['status', 'unschedulable_reason', 'workflowStatus', 'results_accepted', 'on_sky_start_time', 'on_sky_stop_time', 'process_start_time', 'process_stop_time']; //For Constraint const constColDefToBeRemove = ['observation_strategy_template_name', 'duration', 'observation_strategy_template_id', 'observation_strategy_template_description', 'on_sky_start_time', 'on_sky_stop_time', 'process_start_time', 'process_stop_time', 'task_content', @@ -928,8 +921,8 @@ class SchedulingUnitList extends Component{ formatListToNewLineText(arrayVal){ return ( <> - {arrayVal.length>0 && arrayVal.map((item,index) => ( - <div key={index}>{item}</div> + {arrayVal.length>0 && arrayVal.map((item) => ( + <div key={item}>{item}</div> ))} </> ); @@ -939,7 +932,6 @@ class SchedulingUnitList extends Component{ const permission = await AuthUtil.getUserRolePermission(); this.priorityQueueTypes = await UtilService.getPriorityQueueType(); this.setState({userrole: permission}); - //this.getUserRolePermission(); this.pageUpdated = true; this.getFilterColumns(this.changesutype()); this.getSchedulingUnitList(true, this.changesutype(), this.filterQry, this.orderBy, this.limit, this.offset); @@ -1165,7 +1157,6 @@ class SchedulingUnitList extends Component{ async deleteSchedulingUnit() { this.suDraftsWithBlueprintList = []; let stateSUs = this.state.scheduleunit; - //let hasError = false; for(const schedulingUnit of this.deletableDraftWithBlueprint) { const deleteStatus = await ScheduleService.deleteSchedulingUnit(schedulingUnit.type, schedulingUnit.id); schedulingUnit.deleteStatus = deleteStatus?"Success":"Failed"; @@ -1721,7 +1712,6 @@ class SchedulingUnitList extends Component{ * @returns */ async fetchTableData(state) { - // UtilService.localStore({ type: 'set', key: 'schedulingUnitFilter' ,value:state.filters}); this.filterQry = ''; this.orderBy = ''; this.pageUpdated = true; @@ -1767,7 +1757,7 @@ class SchedulingUnitList extends Component{ this.idFilterValues = UnitConverter.getSubbandOutput(filter.value); this.filterQry += columnDetails.orgField+'='+this.idFilterValues.toString()+"&"; } else if (filter.id === 'Linked Blueprint ID' && filter.value !== '') { - const values = UnitConverter.getSubbandOutput(filter.value);//_.split(filter.value, ","); + const values = UnitConverter.getSubbandOutput(filter.value); for ( const value of values) { this.filterQry += 'scheduling_unit_blueprints='+value+"&"; } @@ -1819,7 +1809,6 @@ class SchedulingUnitList extends Component{ let sortBy = state.sortBy?state.sortBy[0]:null; if (sortBy) { this.defaultSortColumn = sortBy; - //this.setState({defaultSortColumn: [sortBy]}); UtilService.localStore({ type: 'set', key: this.lsKeySortColumn ,value:sortBy}); let columnDetails = _.find(this.state.columnMap, {displayName:sortBy.id}); if(columnDetails) { @@ -1859,7 +1848,7 @@ class SchedulingUnitList extends Component{ getFilterOptions(id) { let options = null; if(id && id === 'Status') { - options = this.statusList;//UIConstants.SU_STATUS; + options = this.statusList; } else if (id === 'Linked Draft ID') { options = _.sortBy(this.draftIds); } else if (id === 'Priority Queue') { @@ -2151,7 +2140,7 @@ class SchedulingUnitList extends Component{ return <> {selectedSchedulingUnits.length > 0 && <div style={{marginTop: '1em'}}> - <b>Failed tasks will be created and executed for these Scheduling Unit(s) with status 'Error' / 'Cancelled'</b> + <b>Failed tasks will be created and executed for these Scheduling Unit(s) with status 'Error' / 'Cancelled'</b> <DataTable value={selectedSchedulingUnits} resizableColumns columnResizeMode="expand" className="card" style={{paddingLeft: '0em'}}> <Column field="suId" header="Id"></Column> <Column field="suName" header="Name"></Column> @@ -2161,7 +2150,7 @@ class SchedulingUnitList extends Component{ } {unselectedSchedulingUnits.length > 0 && <div style={{marginTop: '1em'}}> - <b>Scheduling Unit(s) with status other than 'Error' / 'Cancelled' will be ignored</b> + <b>Scheduling Unit(s) with status other than 'Error' / 'Cancelled' will be ignored</b> <DataTable value={unselectedSchedulingUnits} resizableColumns columnResizeMode="expand" className="card" style={{paddingLeft: '0em'}}> <Column field="suId" header="Id"></Column> <Column field="suName" header="Name"></Column> @@ -2246,7 +2235,7 @@ class SchedulingUnitList extends Component{ return <> {selectedSchedulingUnits.length > 0 && <div style={{marginTop: '1em'}}> - <b>Blueprints of these scheduling unit(s) with status 'Error' / 'Cancelled' will be updated</b> + <b>Blueprints of these scheduling unit(s) with status 'Error' / 'Cancelled' will be updated</b> <DataTable value={selectedSchedulingUnits} resizableColumns columnResizeMode="expand" className="card" style={{paddingLeft: '0em'}}> <Column field="suId" header="Id"></Column> <Column field="suName" header="Name"></Column> @@ -2256,7 +2245,7 @@ class SchedulingUnitList extends Component{ } {unselectedSchedulingUnits.length > 0 && <div style={{marginTop: '1em'}}> - <b>Scheduling Unit(s) with status other than 'Error' / 'Cancelled' will be ignored to update blueprints from task drafts</b> + <b>Scheduling Unit(s) with status other than 'Error' / 'Cancelled' will be ignored to update blueprints from task drafts</b> <DataTable value={unselectedSchedulingUnits} resizableColumns columnResizeMode="expand" className="card" style={{paddingLeft: '0em'}}> <Column field="suId" header="Id"></Column> <Column field="suName" header="Name"></Column> @@ -2345,7 +2334,7 @@ class SchedulingUnitList extends Component{ return <> {selectedSchedulingUnits.length > 0 && <div style={{marginTop: '1em'}}> - <b>Scheduling Unit(s) with status 'Error' / 'Cancelled' will be considered</b> + <b>Scheduling Unit(s) with status 'Error' / 'Cancelled' will be considered</b> <DataTable value={selectedSchedulingUnits} resizableColumns columnResizeMode="expand" className="card" style={{paddingLeft: '0em'}}> <Column field="suId" header="Id"></Column> <Column field="suName" header="Name"></Column> @@ -2355,7 +2344,7 @@ class SchedulingUnitList extends Component{ } {unselectedSchedulingUnits.length > 0 && <div style={{marginTop: '1em'}}> - <b>Scheduling Unit(s) with status other than 'Error' / 'Cancelled' will be ignored</b> + <b>Scheduling Unit(s) with status other than 'Error' / 'Cancelled' will be ignored</b> <DataTable value={unselectedSchedulingUnits} resizableColumns columnResizeMode="expand" className="card" style={{paddingLeft: '0em'}}> <Column field="suId" header="Id"></Column> <Column field="suName" header="Name"></Column> @@ -2614,7 +2603,6 @@ class SchedulingUnitList extends Component{ scheduleunit['target_observation_sap'] = targetObserv.specifications_doc.station_configuration?.SAPs.length; let SAPs = targetObserv.specifications_doc.station_configuration?.SAPs for (const target of SAPs) { - // targetNames.push(target.digital_pointing.target) ; targetNames.push(target.digital_pointing.target) ; targetAngle1s.push(UnitConverter.getAngleInput(target.digital_pointing.angle1)); targetAngle2s.push(UnitConverter.getAngleInput(target.digital_pointing.angle2, true)); @@ -2644,7 +2632,6 @@ class SchedulingUnitList extends Component{ scheduleunit['scheduling_set'] = scheduleunit.draft.scheduling_set.name; const workflowDetails = this.timelineCommonUtils.getWorkflowDetails(workflows, scheduleunit.id); scheduleunit['workflowStatus'] = workflowDetails.status; - //scheduleunit['dataAccepted'] = workflowDetails.dataAccepted; scheduleunit.duration = moment.utc((scheduleunit.duration || 0)*1000).format('HH:mm:ss'); scheduleunit['type'] = "Blueprint"; scheduleunit['priority'] = scheduleunit.priority || ""; @@ -2756,7 +2743,7 @@ class SchedulingUnitList extends Component{ { this.props.project && <> - <a href="#" style={{marginLeft: "5px"}} onClick={(e)=> this.confirmChangeSUSet()} + <a href="#" style={{marginLeft: "5px"}} onClick={()=> this.confirmChangeSUSet()} title= "Move to another Scheduling Set" > <i className= {"fas fa-arrows-alt"} aria-hidden="true" ></i> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/Stations.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/Stations.js index 097001f8bf339ba6a377d3bb0f9cb0a1a53e4a44..42b7e7d1d6039c838bf7e27ed9f8ffbd793aabd9 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/Stations.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/Stations.js @@ -7,7 +7,7 @@ import UIConstants from '../../utils/ui.constants'; import ScheduleService from '../../services/schedule.service'; import UtilService from '../../services/util.service'; import _ from 'lodash'; -/* eslint-disable react-hooks/exhaustive-deps */ + /* const props = { selectedStations, @@ -357,15 +357,15 @@ const Stations = (props) => { if (key !== 'Custom') { return ( <> - {state[key].stations.map((station, index) => <div key={index}>{station}</div>)} + {state[key].stations.map((station) => <div key={station}>{station}</div>)} </> ) } return <></> })} - {customStations.map((stat, index) => ( + {customStations.map((stat) => ( <> - {stat.stations.map(station => <div key={index}>{station}</div>)} + {stat.stations.map(station => <div key={station}>{station}</div>)} </> ))} </div> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/ViewSchedulingUnit.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/ViewSchedulingUnit.js index 7521fdb2fff195999ce44bb4244c94bc0742808a..48aa318f9434f4e881f743b0b11907533aa605db 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/ViewSchedulingUnit.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/ViewSchedulingUnit.js @@ -38,7 +38,7 @@ import { InputTextarea } from 'primereact/inputtextarea'; import { Dropdown } from 'primereact/dropdown'; import ProjectService from '../../services/project.service'; import IngestProgress from './ingest.progress'; -/* eslint-disable jsx-a11y/anchor-is-valid */ + class ViewSchedulingUnit extends Component { lsKeySortColumn = 'SortDataViewSchedulingUnit'; @@ -391,7 +391,6 @@ class ViewSchedulingUnit extends Component { this.setToggleBySorting(); let schedule_id = this.props.match.params.id; let schedule_type = this.props.match.params.type; - // const permissionById = await AuthUtil.getUserPermissionByModuleId(schedule_type === 'blueprint'? 'scheduling_unit_blueprint': 'scheduling_unit_draft', schedule_id) this.setState({userPermission: permission, schedule_id: schedule_id}); if (schedule_type && schedule_id) { this.stations = await ScheduleService.getStationGroup(); @@ -425,7 +424,7 @@ class ViewSchedulingUnit extends Component { subtaskComponent = (task) => { return ( - <button className="p-link" onClick={(e) => { this.setState({ showStatusLogs: true, task: task }) }}> + <button className="p-link" onClick={() => { this.setState({ showStatusLogs: true, task: task }) }}> <i className="fa fa-history"></i> </button> ); @@ -496,10 +495,6 @@ class ViewSchedulingUnit extends Component { task.dataSizeOnDisk = 0; task.obsolete= task.obsolete_since!==null; task.noOfOutputProducts = 0; - // task.stop_time = moment(task.stop_time).format(UIConstants.CALENDAR_DATETIME_FORMAT); - // task.start_time = moment(task.start_time).format(UIConstants.CALENDAR_DATETIME_FORMAT); - // task.created_at = moment(task.created_at).format(UIConstants.CALENDAR_DATETIME_FORMAT); - // task.updated_at = moment(task.updated_at).format(UIConstants.CALENDAR_DATETIME_FORMAT); task.canSelect = task.tasktype.toLowerCase() === 'blueprint' ? true : (task.tasktype.toLowerCase() === 'draft' && (task.task_blueprints_ids && task.task_blueprints_ids.length === 0)) ? true : false; if (task.tasktype.toLowerCase() === 'blueprint' && task.subTasks.length) { task.noOfOutputProducts = _.sumBy(task.subTasks, 'total_nr_of_dataproducts'); @@ -581,7 +576,6 @@ class ViewSchedulingUnit extends Component { if (!param.refs[0].startsWith("#/tasks/")) { continue; } let taskPaths = param.refs[0].split("/"); const taskName = taskPaths[2]; - //taskPaths = taskPaths.slice(4, taskPaths.length); /** * For Short_Description, the task path length will be 4, so added below condition to get short_description details * #/tasks/Combined Observation/short_description @@ -591,7 +585,6 @@ class ViewSchedulingUnit extends Component { const suTask = this.state.schedulingUnitTasks.find(taskD => taskD.name === taskName); if (suTask) { task.specifications_doc = suTask.specifications_doc; task.short_description = suTask.short_description; - //task.specifications_doc = suTask.specifications_doc; const taskKeys = Object.keys(task); for (const taskKey of taskKeys) { if (taskKey !== 'specifications_template') { @@ -2319,7 +2312,7 @@ class ViewSchedulingUnit extends Component { if (updatedResSU) { appGrowl.show({ severity: 'success', summary: 'Success', detail: 'Pin/Unpin data after ingest updated successfully' }); suCopy['output_pinned'] = updatedResSU.output_pinned; - var index = _.indexOf(this.actions, _.find(this.actions, {'icon' :'fa-thumbtack'})); + let index = _.indexOf(this.actions, _.find(this.actions, {'icon' :'fa-thumbtack'})); this.actions.splice(index, 1, { icon: 'fa-thumbtack', title: updatedResSU.output_pinned? 'Unpin data after ingest' : 'Pin data after ingest', type: 'button', actOn: 'click', props: { callback: this.confirmAutoDeletion } }); this.setState({scheduleunit: suCopy, actions: this.actions, dialogVisible: false}); @@ -2357,7 +2350,7 @@ class ViewSchedulingUnit extends Component { </>} {selectedTasksWithoutOnhold.length>0 && <> - <b>Task(s) with status other than 'on hold' will be ignored</b> + <b>Task(s) with status other than 'on hold' will be ignored</b> <DataTable value={selectedTasksWithoutOnhold} resizableColumns columnResizeMode="expand" className="card" style={{ paddingLeft: '0em' }}> <Column field="id" header="Task Id"></Column> <Column field="status" header="Status"></Column> @@ -2854,37 +2847,25 @@ class ViewSchedulingUnit extends Component { {!this.state.isLoading && <> - {/* {(this.state.stationGroup && this.state.stationGroup.length > 0) ? - <Stations - stationGroup={this.state.stationGroup} - targetObservation={this.state.targetObservation} - view - /> - : <> - <div style={{ marginTop: "10px" }}> - <h3>Station Groups</h3> - </div> - <div>No Station Groups Specified</div> - </> - } */} - {_.keys(this.state.stationGroups).length >0 && + {_.keys(this.state.stationGroups).length >0 && <div className='grouping station_editor'> <fieldset> <h3 className="card-title level-1 je-object__title" style={{display: "inline-block"}}> <button type="button" title={this.state.stationsCollapsed?"Expand":"Collapse"} className="btn btn-secondary btn-sm json-editor-btn-collapse json-editor-btntype-toggle" - onClick={e => this.setState({stationsCollapsed: !this.state.stationsCollapsed})}> + onClick={() => this.setState({stationsCollapsed: !this.state.stationsCollapsed})}> <i className={this.state.stationsCollapsed?"fas fa-caret-right":"fas fa-caret-down"}></i> </button> <label>Station specification</label> </h3> {!this.state.stationsCollapsed && <> - { _.keys(this.state.stationGroups).map((stnGroup,index) => { + { _.keys(this.state.stationGroups).map((stnGroup) => { return <Stations taskName={stnGroup} stationGroup={this.state.stationGroups[stnGroup]} height={'auto'} view={true} + key={stnGroup} /> })} </> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/create.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/create.js index 38f0d7705b7b9a243246310361d36f93af9348a7..574440f8e3d79c6d9aa2eb1b8944cb0ae0ace9ce 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/create.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/create.js @@ -1092,14 +1092,14 @@ export class SchedulingUnitCreate extends Component { <button type="button" title={this.state.stationsCollapsed ? "Expand" : "Collapse"} className="btn btn-secondary btn-sm json-editor-btn-collapse json-editor-btntype-toggle" - onClick={e => this.setState({stationsCollapsed: !this.state.stationsCollapsed})}> + onClick={() => this.setState({stationsCollapsed: !this.state.stationsCollapsed})}> <i className={this.state.stationsCollapsed ? "fas fa-caret-right" : "fas fa-caret-down"}></i> </button> <label>Station specification</label> </h3> {!this.state.stationsCollapsed && <> - {_.keys(this.state.stationGroups).map((stnGroup, index) => { + {_.keys(this.state.stationGroups).map((stnGroup) => { return <Stations taskName={stnGroup} stationGroup={this.state.stationGroups[stnGroup]} diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/edit.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/edit.js index 066c1ef42136b14e3ebd8b9dd0f2582ade660629..7832f1f7ebd0e0effe5e956d5282f0feea3ca92e 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/edit.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/edit.js @@ -825,19 +825,20 @@ export class EditSchedulingUnit extends Component { <h3 className="card-title level-1 je-object__title" style={{display: "inline-block"}}> <button type="button" title={this.state.stationsCollapsed?"Expand":"Collapse"} className="btn btn-secondary btn-sm json-editor-btn-collapse json-editor-btntype-toggle" - onClick={e => this.setState({stationsCollapsed: !this.state.stationsCollapsed})}> + onClick={() => this.setState({stationsCollapsed: !this.state.stationsCollapsed})}> <i className={this.state.stationsCollapsed?"fas fa-caret-right":"fas fa-caret-down"}></i> </button> <label>Station specification</label> </h3> {!this.state.stationsCollapsed && <> - { _.keys(this.state.stationGroups).map((stnGroup,index) => { + { _.keys(this.state.stationGroups).map((stnGroup) => { return <Stations taskName={stnGroup} stationGroup={this.state.stationGroups[stnGroup]} onUpdateStations={this.onUpdateStations.bind(this)} height={'auto'} + key={stnGroup} /> })} </> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.js index d20b18ac9280c9118a90aa8ad5c1181368130ce6..e9a80124b795296d865a09fd8c1c30da0e6a73ec 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.js @@ -703,7 +703,6 @@ export class SchedulingSetCreate extends Component { } async getTaskSchema(observStrategy) { - //let station_group = []; let station_groups = {} this.stationGroupsName = []; if (observStrategy) { @@ -729,7 +728,6 @@ export class SchedulingSetCreate extends Component { * #/tasks/Combined Observation/short_description */ taskPaths = taskPaths.slice((taskPaths.length === 4 ? 3 : 4), taskPaths.length); - // taskPaths = taskPaths.slice(4, taskPaths.length); const task = tasks[taskName]; if (task) { const taskTemplate = getTaskTemplateForTask(this.taskTemplates, task); @@ -841,7 +839,6 @@ export class SchedulingSetCreate extends Component { this.tmpRowData = []; let totalSU = this.state.noOfSU; let lastRow = {}; - //let hasSameValue = true; this.agSUWithDefaultValue['scheduler'] = observStrategyContraints?.scheduler ? observStrategyContraints.scheduler : this.resolvedConstraintSchema.properties.scheduler.default; this.agSUWithDefaultValue['timeat'] = observStrategyContraints?.time ? this.isNotEmpty(observStrategyContraints.time.at) ? moment.utc(observStrategyContraints.time.at).format(UIConstants.CALENDAR_DATETIME_FORMAT) : '' : ''; this.agSUWithDefaultValue['timeafter'] = observStrategyContraints?.time ? this.isNotEmpty(observStrategyContraints.time.after) ? moment.utc(observStrategyContraints.time.after).format(UIConstants.CALENDAR_DATETIME_FORMAT) : '' : ''; @@ -1004,16 +1001,11 @@ export class SchedulingSetCreate extends Component { defaultCommonRowData[key] = ''; } } - //hasSameValue = false; } } } else { this.isNewSet = true; } - /* let defaultCommonRowData = {}; - if (hasSameValue) { - defaultCommonRowData = observationPropsList[observationPropsList.length-1]; - }*/ this.tmpRowData = observationPropsList; // find No. of rows filled in array let totalCount = this.tmpRowData.length; @@ -1122,7 +1114,6 @@ export class SchedulingSetCreate extends Component { * @returns */ async getObservationValueFromTask(scheduleunit) { - //let taskDrafts = []; this.currentTaskDrafts = []; if (scheduleunit.id) { this.currentTaskDrafts = _.clone(scheduleunit.taskDrafts); @@ -1132,14 +1123,10 @@ export class SchedulingSetCreate extends Component { ParserUtility.addStationParameters(observStrategy); const tasks = observStrategy.template.tasks; let paramsOutput = []; - //let schema = { type: 'object', additionalProperties: false, - // properties: {}, definitions:{} - // }; for (const taskName in tasks) { const task = tasks[taskName]; const taskDraft = this.currentTaskDrafts.find(taskD => taskD.name === taskName); if (taskDraft) { - //task.specifications_doc = taskDraft.specifications_doc; const taskKeys = Object.keys(task); for (const taskKey of taskKeys) { if (taskKey !== 'specifications_template') { @@ -1162,8 +1149,6 @@ export class SchedulingSetCreate extends Component { detail: 'Unable to find task template defined in the strategy template' }); } - //schema['$id'] = taskTemplate.schema['$id']; - //schema['$schema'] = taskTemplate.schema['$schema']; const taskParams = _.filter(observStrategy.template.parameters, param => param.refs[0].indexOf(`/tasks/${taskName}`) > 0); for (const param of taskParams) { // Resolve the identified template @@ -1189,12 +1174,7 @@ export class SchedulingSetCreate extends Component { } else { property.default = $taskRefs.get(param.refs[0].replace(`#/tasks/${taskName}`, '#')); } - - //if ( param.name === 'Duration') { - // paramsOutput[param.name] = property.default; - // } else { paramsOutput[param.name] = property.default; - // } } catch (err) { /* empty */ } } } @@ -1240,7 +1220,6 @@ export class SchedulingSetCreate extends Component { } } }; - //this.getColumnDefinition('direction_type', {type: 'string', enum: schema.definitions.pointing.properties.direction_type.enum, multiselect: false}); cellProps['direction_type'] = {/*isgroup: true,*/ cellEditor: 'agSelectCellEditor', default: schema.definitions.pointing.properties.direction_type.default, @@ -1248,7 +1227,6 @@ export class SchedulingSetCreate extends Component { values: schema.definitions.pointing.properties.direction_type.enum, }, }; - //this.getColumnDefinition('filter', {type: 'string', enum: schema.definitions.filter.enum, multiselect: false}); cellProps['filter'] = {/*isgroup: false,*/ cellEditor: 'agSelectCellEditor', default: schema.definitions.filter.default, @@ -1256,7 +1234,6 @@ export class SchedulingSetCreate extends Component { values: schema.definitions.filter.enum, }, }; - //this.getColumnDefinition('antenna_set', {type: 'string', enum: schema.definitions.antenna_set.enum, multiselect: false}); cellProps['antenna_set'] = {/*isgroup: false,*/ cellEditor: 'agSelectCellEditor', default: schema.definitions.antenna_set.default, @@ -1460,7 +1437,6 @@ export class SchedulingSetCreate extends Component { //Observation Schema const schema = paramsSchema; if (schema.properties && !_.isEmpty(schema.properties)) { - // let definitions = schema.definitions.pointing; let predefineCellProps = this.getAGGridAngelColumnsDefinition(schema); let propKeys = Object.keys(schema.properties); for (const prop of propKeys) { @@ -1484,7 +1460,6 @@ export class SchedulingSetCreate extends Component { } else if (_.includes(this.stationGroupsName, property.title)) { //Configure the station at end of the row } else if (_.includes(this.durationList, property.title)) { - //colProperty ={}; cellProps['headerName'] = property.title; cellProps['headerTooltip'] = property.title; this.strategyVariables.push(prop + "~" + property.title); @@ -1522,7 +1497,6 @@ export class SchedulingSetCreate extends Component { } else { cellProps['headerName'] = property.title; cellProps['headerTooltip'] = property.title; - //cellProps.valueSetter= function(params) {}; this.strategyVariables.push(prop + "~" + property.title); this.agSUWithDefaultValue[prop + "~" + property.title] = property.default; cellProps['field'] = prop + "~" + property.title; @@ -1586,7 +1560,7 @@ export class SchedulingSetCreate extends Component { stationValue += stationGroup.stations + ':' + missingStation + "|"; return stationGroup; }); - let stationField = stationKey;//_.replace(stationKey, ' ', '_'); + let stationField = stationKey; this.agSUWithDefaultValue[stationField] = stationValue; columnDefs.push({ headerName: stationKey, @@ -1602,13 +1576,7 @@ export class SchedulingSetCreate extends Component { } } - /* this.state.defaultStationGroups.map(stationGroup =>{ - let missingStation = (stationGroup.max_nr_missing)?stationGroup.max_nr_missing:0; - stationValue += stationGroup.stations+':'+missingStation+"|"; - }); - this.agSUWithDefaultValue['stations'] = stationValue; - columnDefs.push({headerName: 'Stations', field: 'stations', cellRenderer: 'betweenRenderer', cellEditor: 'station', valueSetter: 'newValueSetter'}); - */ + this.getEmptyRow(); this.colKeyOrder = [...this.colKeyOrder, ...this.strategyVariables]; let globalColmunDef = _.cloneDeep(columnDefs); @@ -1776,7 +1744,7 @@ export class SchedulingSetCreate extends Component { }); } this.resolvedConstraintSchema = this.constraintSchema?.ref_resolved_schema; - //this.getColumnDefinition(this.constraintSchema.schema, this.constraintSchema.schema.definitions); + /** AG Grid Cell Specific Properties In Excel View - expected column order is ['scheduler', 'time', 'daily', 'sky'] */ let dailyProps = Object.keys(this.resolvedConstraintSchema.properties.daily.properties); @@ -2169,9 +2137,7 @@ export class SchedulingSetCreate extends Component { row['isValid'] = isValid; row['isDirty'] = true; row['isValidSpecDoc'] = isValid; - /* - row[field+'value'] = UnitConverter.parseAngle(value); - */ + tmpRowData = this.state.rowData; tmpRowData[rowIndex] = row; await this.setState({rowData: tmpRowData, isDirty: true}); @@ -2191,8 +2157,7 @@ export class SchedulingSetCreate extends Component { tmpRowData = this.state.commonRowData; tmpRowData[0] = row; await this.setState({commonRowData: tmpRowData}); - //this.state.topGridApi.setRowData(this.state.commonRowData); - // this.state.topGridApi.redrawRows(); + } else { row = this.state.rowData[rowIndex]; row[field] = value; @@ -2201,8 +2166,6 @@ export class SchedulingSetCreate extends Component { tmpRowData[rowIndex] = row; await this.setState({rowData: tmpRowData, isDirty: true}); publish('edit-dirty', true); - // this.state.gridApi.setRowData(this.state.rowData); - // this.state.gridApi.redrawRows(); } if (isSetFocus === true) { if (field.startsWith('gdef_')) { @@ -2245,7 +2208,6 @@ export class SchedulingSetCreate extends Component { tmpRowData[0] = row; await this.setState({commonRowData: tmpRowData}); if (isMultiselect) { - //this.state.topGridApi.stopEditing(); var focusedCell = this.state.topGridColumnApi.getColumn(field) this.state.topGridApi.ensureColumnVisible(focusedCell); this.state.topGridApi.setFocusedCell(rowIndex, focusedCell); @@ -2254,15 +2216,13 @@ export class SchedulingSetCreate extends Component { row = this.state.rowData[rowIndex]; row[field] = value && value.param_0 ? value.param_0 : value; row["isDirty"] = true; - // if (_.includes(field,'Station')) { - // await this.validateSpecificationsDoc(rowIndex, row); - // } + tmpRowData = this.state.rowData; tmpRowData[rowIndex] = row; await this.setState({rowData: tmpRowData, isDirty: true}); publish('edit-dirty', true); if (isMultiselect) { - //this.state.gridApi.stopEditing(); + let focusedCell = this.state.gridColumnApi.getColumn(field) this.state.gridApi.ensureColumnVisible(focusedCell); this.state.gridApi.setFocusedCell(rowIndex, focusedCell); @@ -2295,7 +2255,6 @@ export class SchedulingSetCreate extends Component { let isValidRow = true; let errorDisplay = []; let warningClipboardData = ''; - //const colDefkeys = Object.keys(this.columnDefinition); const mandatoryKeys = ['suname', 'sudesc', 'priority_queue', 'scheduler', 'min_target_elevation', 'min_calibrator_elevation', 'offset_from', 'offset_to', 'md_sun', 'md_moon', 'md_jupiter', 'param_0~angle1', 'param_0~angle2', 'param_0~direction_type', 'param_1~angle1', 'param_1~angle2', 'param_1~direction_type', 'param_2~angle1', 'param_2~angle2', 'param_2~direction_type']; let tmpMandatoryKeys = []; let tmpRowData = this.state.rowData; @@ -2349,7 +2308,6 @@ export class SchedulingSetCreate extends Component { if (!column) { column = {header: _.capitalize(colDefkey)}; } - //_.find(columnDefs, {'field': colDefkey}|| {children: [{'field': colDefkey}]}); if (rowData.hasOwnProperty(colDefkey)) { const defProperty = columnDefinition[colDefkey]; if (defProperty.hasOwnProperty('required') && defProperty.required) { @@ -2471,7 +2429,6 @@ export class SchedulingSetCreate extends Component { } if (tmpMandatoryKeys.length !== mandatoryKeys.length) { - //isValidRow = true; for (var i = 0; i < node.columnController.gridColumns.length; i++) { let column = node.columnController.gridColumns[i]; if (column.colId !== '0') { @@ -2511,8 +2468,6 @@ export class SchedulingSetCreate extends Component { (tmpTime.length !== 3 || isNaN(tmpTime[1]) || tmpTime[1] > 59 || isNaN(tmpTime[2]) || tmpTime[2] > 59)) { isValidRow = false; errorMsg += column.colDef.headerName + ", "; - // column.colDef.cellStyle = { backgroundColor: BG_COLOR}; - // rowNoColumn.colDef.cellStyle = { backgroundColor: BG_COLOR}; } else if (UnitConverter.getHHmmssToSecs(rowData[column.colId]) < rowData['offset_from_min'] || UnitConverter.getHHmmssToSecs(rowData[column.colId]) > rowData['offset_from_max']) { isValidRow = false; errorMsg += column.colDef.headerName + ", "; @@ -2608,12 +2563,7 @@ export class SchedulingSetCreate extends Component { } } } - // When no values entered or if the field doesn't have value for existing record, AG-grid API returns undefined. - // So added validation message for fixed_time scheduler. - if (isFixedTimeScheduler && rowData['timeat'] === undefined) { - // isValidRow = false; - // errorMsg += "At, "; - } + } } if (hasData) { @@ -2776,7 +2726,6 @@ export class SchedulingSetCreate extends Component { } let prefix = colKey.split("~"); const durationKey = prefix.length === 2 ? prefix[1] : colKey; - // if(colKey.startsWith('param_') && prefix.length > 1) { if (prefix.length > 1 && parameters.indexOf(prefix[0]) >= 0) { var res = Object.keys(suRow).filter(objKey => { const tmp = objKey.split("~"); @@ -2835,7 +2784,6 @@ export class SchedulingSetCreate extends Component { const $refs = await $RefParser.resolve(observStrategy.template); observStrategy.template.parameters.forEach(async (param, index) => { let refIndex = 0; - // for (const ref of param.refs) { param.refs.forEach(() => { $refs.set(observStrategy.template.parameters[index]['refs'][refIndex], this.state.paramsOutput[param.name]); refIndex++; @@ -2858,13 +2806,8 @@ export class SchedulingSetCreate extends Component { let schedulingUnit = _.find(this.state.schedulingUnitList, {'id': suRow.id}); constraint = schedulingUnit.scheduling_constraints_doc; } - if (constraint === null || constraint === 'undefined' || constraint === {}) { - // constraint = this.state.schedulingConstraintsDoc; - } if (!constraint) { - // let schedulingUnit = await ScheduleService.getSchedulingUnitDraftById(1); - // constraint = (schedulingUnit)? schedulingUnit.scheduling_constraints_doc : {}; - constraint = this.defaultConstraintDoc; + constraint = this.defaultConstraintDoc; } //If No SU Constraint create default ( maintain default struc) constraint['scheduler'] = suRow.scheduler; @@ -3022,7 +2965,6 @@ export class SchedulingSetCreate extends Component { } return stationGroup; }); - //task.specifications_doc.station_configuration.station_groups = tmpStationGroups; } } } else { @@ -3031,7 +2973,6 @@ export class SchedulingSetCreate extends Component { taskDrafts = taskData.taskDrafts; } for (const task of taskDrafts) { - //let task = observStrategy.template.tasks[taskName]; if (task.specifications_doc.station_configuration?.station_groups) { let sgCellValue = suRow[('Station Groups - ' + task.name)]; let tmpStationGroups = []; @@ -3049,7 +2990,6 @@ export class SchedulingSetCreate extends Component { } return stationGroup; }); - //task.specifications_doc.station_configuration.station_groups = tmpStationGroups; } } } @@ -3276,7 +3216,6 @@ export class SchedulingSetCreate extends Component { constraintsValidationMessage: validationMessage }); } else { - //validationMessage = validation_result[0]['message']; delete this.constraintsValidationMessage[rowIndex]; if (Object.keys(this.constraintsValidationMessage).length > 0) { validationMessage = "Constraints specification is not valid"; @@ -3357,9 +3296,7 @@ export class SchedulingSetCreate extends Component { this.dialogHeight = '5em'; this.actions = [{id: "yes", title: 'Discard', callback: this.cancelCreate, className: 'act-btn-dispose'}, {id: "no", title: 'Cancel', className: 'act-btn-cancel', callback: this.close}]; - // this.callBackFunction = this.cancelCreate; this.onClose = this.close; - //this.onCancel = this.close; this.setState({ confirmDialogVisible: true, }); @@ -3394,7 +3331,6 @@ export class SchedulingSetCreate extends Component { */ cancelCreate() { publish('edit-dirty', false); - // this.props.history.length>1?this.props.history.goBack():this.props.history.push(`/schedulingunit`); const pageTracker = JSON.parse(sessionStorage.getItem("pageTracker")); this.setState({redirect: pageTracker.prevPath}); } @@ -3445,11 +3381,11 @@ export class SchedulingSetCreate extends Component { * Function to copy the data to clipboard */ async copyToClipboard() { - var columnsName = this.state.gridColumnApi.getAllGridColumns(); - var selectedRows = this.state.gridApi.getSelectedRows(); + let columnsName = this.state.gridColumnApi.getAllGridColumns(); + let selectedRows = this.state.gridApi.getSelectedRows(); let clipboardData = ''; let copySingleCell = false; - var focusedCell = this.state.gridApi.getFocusedCell(); + let focusedCell = this.state.gridApi.getFocusedCell(); if (focusedCell && focusedCell.column['colId'] === '0') { if (this.state.copyHeader) { let line = ''; @@ -3462,11 +3398,9 @@ export class SchedulingSetCreate extends Component { line = _.trim(line); clipboardData += line + '\r\n'; } - //for(const rowData of selectedRows){ for (var rowCount = 0; rowCount < selectedRows.length; rowCount++) { const rowData = selectedRows[rowCount]; let line = ''; - //for(const key of this.state.colKeyOrder){ for (var count = 0; count < this.state.colKeyOrder.length; count++) { let value = ' '; const key = this.state.colKeyOrder[count]; @@ -3485,7 +3419,6 @@ export class SchedulingSetCreate extends Component { } line += value + ((count === this.state.colKeyOrder.length - 1) ? '' : '\t'); } - //line = line.slice(0, -2); clipboardData += line + ((rowCount === selectedRows.length - 1) ? '' : '\r\n'); } } else { @@ -3501,7 +3434,6 @@ export class SchedulingSetCreate extends Component { clipboardData = focusedCell['column']['colId'] + '\t' + this.state.rowData[focusedCell.rowIndex][focusedCell['column']['colId']]; } } - //clipboardData = clipboardData.slice(0, -2); try { const queryOpts = {name: 'clipboard-write', allowWithoutGesture: true}; await navigator.permissions.query(queryOpts); @@ -3615,7 +3547,7 @@ export class SchedulingSetCreate extends Component { this.tmpRowData = this.state.rowData; let dataRowCount = this.state.totalCount; //Read Clipboard Data - let clipboardData = this.state.clipText ? this.state.clipText : null;//await this.readClipBoard(); + let clipboardData = this.state.clipText ? this.state.clipText : null; let selectedRowIndex = 0; var focusedCell = this.state.gridApi.getFocusedCell(); this.isSpecificationValid = true; @@ -3788,7 +3720,7 @@ export class SchedulingSetCreate extends Component { */ async resetCommonData() { await this.setState({commonRowData: []}); - let tmpData = [this.state.defaultCommonRowData]; //[...[this.state.emptyRow]]; + let tmpData = [this.state.defaultCommonRowData]; let gRowData = {}; for (const key of _.keys(tmpData[0])) { if (key === 'id') { @@ -4226,10 +4158,6 @@ export class SchedulingSetCreate extends Component { icon="pi pi-refresh" onClick={this.resetCommonData}/> </div> - {/*} <div className="p-col-1" style={{width: 'auto',marginLeft: '2em'}}> - <Button label="Refresh" tooltip="Refresh grid data" className="p-button-primary" icon="pi pi-refresh" onClick={this.reload} /> - </div> - */} </div> </AccordionTab> </Accordion> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.test.js index b0b6ecd6db992ed915483f8538a84e2b086c2ebe..944945c09f8445e4e106465011b4a7bd896e380f 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.test.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.test.js @@ -14,7 +14,9 @@ import { clickItem, removeReact18ConsoleErrors, renderPage, setMultiSelectValue import { setSchedulingUnitStrategy } from "./schedulingunit.test.helper"; let projectListSpy, observStrategiesSpy, taskTemplatesSpy, userPermissionSpy, rolesSpy, suConstraintTemplateSpy, - templatePurposesSpy, templateStatesSpy,utcSpy; + templatePurposesSpy, templateStatesSpy; + +let utcSpy; //Jest issue: https://github.com/jestjs/jest/issues/9709: Cannot be called in beforeXX test method const OBSERVATION_STRATEGY_TEMPLATES = SUServiceMock.getObservStrategies() @@ -56,6 +58,8 @@ function createStandardPageMocks() { }); const utcTime = '2023-08-11 06:20:45'; utcSpy = jest.spyOn(UtilService, 'getUTC').mockResolvedValue(utcTime); + expect(utcSpy).toBeDefined(); + } function getColumnTypes(columnDefs) { @@ -83,7 +87,7 @@ describe('Scheduling Units Excel View create page default', () => { }); test("Renders with standard service mocks", async () => { - waitFor(() => expect(pageContent.queryByText('Scheduling Unit(s) Add Multiple')).not.toBe(null));; + waitFor(() => expect(pageContent.queryByText('Scheduling Unit(s) Add Multiple')).not.toBe(null)); waitFor(() => expect(projectListSpy).toHaveBeenCalled()); waitFor(() => expect(observStrategiesSpy).toHaveBeenCalled()); waitFor(() => expect(suConstraintTemplateSpy).toHaveBeenCalled()); @@ -127,19 +131,21 @@ describe('Scheduling Units Excel View create page default', () => { describe('Scheduling Units Excel View create page with an observation strategy template', () => { let pageContent; - let scheduleSetListSpy, scheduleSetByIdSpy, saveSUFromStrategySpy, utcSpy, validatorSpy, stationGroupSpy; + let scheduleSetListSpy, scheduleSetByIdSpy; beforeEach(async () => { createStandardPageMocks(); - pageContent = await renderPage(<SchedulingSetCreate location={{pathname: '/schedulingunit/'}}/>); scheduleSetListSpy = jest.spyOn(ScheduleService, 'getSchedulingSets').mockImplementation((filter) => { let allSUSets = SUServiceMock.scheduleSetList; let project = filter.replace("project=", ""); return Promise.resolve(allSUSets.filter(set => set.project_id === project)); }); + scheduleSetByIdSpy = jest.spyOn(ScheduleService, 'getSchedulingBySet').mockImplementation(() => { return Promise.resolve(SUServiceMock.getSchedulingBySet()) }); + pageContent = await renderPage(<SchedulingSetCreate location={{pathname: '/schedulingunit/'}}/>); + await setMultiSelectValue(pageContent, "project", "high") await setMultiSelectValue(pageContent, "schedSet", "Test Scheduling Set") }) @@ -167,7 +173,7 @@ describe('Scheduling Units Excel View create page with an observation strategy t expect(scheduleSetListSpy).toHaveBeenCalled(); expect(scheduleSetByIdSpy).toHaveBeenCalled(); await setSchedulingUnitStrategy(observationStrategy, pageContent); - + await waitFor (()=>expect(document.querySelector(".ag-root-wrapper")).toBeInTheDocument(),{ timeout:2000}); const gridElement = document.querySelector(".ag-root-wrapper").__agComponent.gridOptions; //Min_distance section in the grid equals the scheduling constraints section in the template let columnHeaderNames = gridElement.columnDefs.map(columnDef => diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/summary.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/summary.js index f53cf5544e3f848aacb0f87be9e9209d21e5727e..d748d9df4b5db4b0b6ef859f49e341215224c61f 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/summary.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/summary.js @@ -105,7 +105,7 @@ export class SchedulingUnitSummary extends Component { if (dateConstraint.isValid()) { constraint = dateConstraint.format(UIConstants.CALENDAR_DATETIME_FORMAT); } - } catch (error) { } + } catch (error) { /* empty */ } break; } case "boolean": { @@ -150,7 +150,7 @@ export class SchedulingUnitSummary extends Component { } break; } - default: { } + default: { /* empty */ } } } return constraint; diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/affeted.tasks.selector.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/affeted.tasks.selector.js index 8c8b4281e6dece3b66f7354b1898ce9d0156a192..de69ad08e2cef170bfda3eca4badcd5238e9e982 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/affeted.tasks.selector.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/affeted.tasks.selector.js @@ -46,7 +46,6 @@ export class AffectedTasksSelector extends Component { subtasks_0_id: {name: "Control Id"} }, optionalcolumns: [{}], - columnclassname: [{}], columnclassname: [{ "System Event Id":"filter-input-50", }], @@ -266,36 +265,36 @@ export class AffectedTasksSelector extends Component { <legend> <label style={{marginLeft: "3px", marginRight: "3px"}}>Search By</label> </legend> - <div class="row affectedTask"> - <div class="col-sm-3" style={{display: 'flex',}}> + <div className="row affectedTask"> + <div className="col-sm-3" style={{display: 'flex',}}> <div className='row' > <div className="col-lg-8 col-sm-12" style={{display: 'flex',}}> - <RadioButton value='SUB' name="SUB" onChange={(e) => this.setSearchParam('searchBy', 'SUB')} + <RadioButton value='SUB' name="SUB" onChange={() => this.setSearchParam('searchBy', 'SUB')} checked={this.state.searchBy === 'SUB'} tooltip="Search by Scheduling Unit Blueprint Id"/> <label style={{marginLeft: '0.25em'}}>Scheduling Unit</label> </div> <div className="col-lg-4 col-sm-12" style={{display: 'flex',}}> - <RadioButton value='TASK' name="Task" onChange={(e) => this.setSearchParam('searchBy', 'TASK')} + <RadioButton value='TASK' name="Task" onChange={() => this.setSearchParam('searchBy', 'TASK')} checked={this.state.searchBy === 'TASK'} tooltip="Search by Sky Start and End time of the Task"/> <label style={{marginLeft: '0.25em',}}>Time</label> </div> </div> </div> - <div class="col-sm-7"> + <div className="col-sm-7"> {this.state.searchBy === 'SUB' ? <div className='row' style={{borderLeft: '1px solid lightgray', borderRight: '1px solid lightgray'}}> - <div class="col-sm-3"> + <div className="col-sm-3"> <label>Scheduling Unit Id</label> </div> - <div class="col-sm-8"> + <div className="col-sm-8"> <InputText style={{height: '2em'}} keyfilter={/[\d\,\.]/} validateOnly={false} placeholder="Enter Scheduling Unit Id(s)" onChange={(e) => this.setSearchParam('suId', e)} tooltip="Enter Scheduling Unit Id. To search multiple, enter ids separated by comma (1,2,3) and for range separated by 2 dots (1..10). Also can use both together (1,2,5..10)" tooltipOptions={this.tooltipOptions} value={this.state.suId} onKeyDown={this.handleEvent}/> </div> - <div class="col-sm-1"> - <a href="#" style={{marginTop: '0.25em'}} onClick={(e) => this.clearSUBId()} title="Clear search field"> + <div className="col-sm-1"> + <a href="#" style={{marginTop: '0.25em'}} onClick={() => this.clearSUBId()} title="Clear search field"> <i className={"fas fa-sync-alt"} aria-hidden="true" /> </a> </div> @@ -331,7 +330,7 @@ export class AffectedTasksSelector extends Component { <input type="text" data-input className={`p-inputtext p-component ${this.state.errors.start && this.state.touched.start ? 'input-error' : ''}`} /> <i className="fa fa-calendar" data-toggle style={{ position: "absolute", marginLeft: '-25px', marginTop: '5px', cursor: 'pointer' }} ></i> <i className="fa fa-times" style={{ position: "absolute", marginLeft: '-50px', marginTop: '5px', cursor: 'pointer' }} - onClick={e => { this.setSearchParam('start', '');}}></i> + onClick={() => { this.setSearchParam('start', '');}}></i> </Flatpickr> {this.state.errors.start && this.state.touched.start && <label className={this.state.errors.start && this.state.touched.start ? "error" : "info"}> @@ -363,14 +362,14 @@ export class AffectedTasksSelector extends Component { <input type="text" data-input className={`p-inputtext p-component ${this.state.errors.stop && this.state.touched.stop ? 'input-error' : ''}`} /> <i className="fa fa-calendar" data-toggle style={{ position: "absolute", marginLeft: '-25px', marginTop: '5px', cursor: 'pointer' }} ></i> <i className="fa fa-times" style={{ position: "absolute", marginLeft: '-50px', marginTop: '5px', cursor: 'pointer' }} - onClick={e => { this.setSearchParam('stop', '');}}></i> + onClick={() => { this.setSearchParam('stop', '');}}></i> </Flatpickr> </div> </div> </div> } </div> - <div class="col-sm-2 p-col-1" style={{marginTop: '-0.5em'}}> + <div className="col-sm-2 p-col-1" style={{marginTop: '-0.5em'}}> <Button label="Search" className="p-button-primary" icon="pi pi-search" onClick={this.doSearch} disabled={!this.state.validSearch} tooltip="Click to search the Affected Task(s)" style={{right: 'unset !important'}}/> </div> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/existing.system.event.list.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/existing.system.event.list.js index a2012fbad4000d2b51854cd7024c9c8a4df30215..314122c8ce59b23134b8193ccdddba166830a256 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/existing.system.event.list.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/existing.system.event.list.js @@ -54,7 +54,6 @@ export class ExistingSystemEventList extends Component{ actionpath: "actionpath" }], optionalcolumns: [{}], - columnclassname: [{}], columnclassname: [{ "System Event Id":"filter-input-50", }], diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/system.event.create.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/system.event.create.js index 15e106ecaa728d3cc24e212939e89fd6ba8fbde5..8d32fa2768b4ed1a90d674519bd99a897a946c8a 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/system.event.create.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/system.event.create.js @@ -48,7 +48,6 @@ export class SystemEventCreate extends Component { affected_tasks: [], tasksId: '', issue_subtype: '', - issue_subtype: '', jira_url: '', notes: '', severity: '', @@ -508,7 +507,6 @@ export class SystemEventCreate extends Component { affected_tasks: [], tasksId: '', issue_subtype: '', - issue_subtype: '', jira_url: '', notes: '', severity: '', @@ -838,7 +836,7 @@ export class SystemEventCreate extends Component { <input type="text" data-input className={`p-inputtext p-component ${this.state.errors.start && this.state.touched.start ? 'input-error' : ''}`} /> <i className="fa fa-calendar" data-toggle style={{ position: "absolute", marginLeft: '-25px', marginTop: '5px', cursor: 'pointer' }} ></i> <i className="fa fa-times" style={{ position: "absolute", marginLeft: '-50px', marginTop: '5px', cursor: 'pointer' }} - onClick={e => { this.setParams('start', ''); this.setSystemEventParams('start', '') }}></i> + onClick={() => { this.setParams('start', ''); this.setSystemEventParams('start', '') }}></i> </Flatpickr> {this.state.errors.start && this.state.touched.start && <label className={this.state.errors.start && this.state.touched.start ? "error" : "info"}> @@ -870,7 +868,7 @@ export class SystemEventCreate extends Component { <input type="text" data-input className={`p-inputtext p-component ${this.state.errors.stop && this.state.touched.stop ? 'input-error' : ''}`} /> <i className="fa fa-calendar" data-toggle style={{ position: "absolute", marginLeft: '-25px', marginTop: '5px', cursor: 'pointer' }} ></i> <i className="fa fa-times" style={{ position: "absolute", marginLeft: '-50px', marginTop: '5px', cursor: 'pointer' }} - onClick={e => { this.setParams('stop', ''); this.setSystemEventParams('stop', '') }}></i> + onClick={() => { this.setParams('stop', ''); this.setSystemEventParams('stop', '') }}></i> </Flatpickr> <label className={this.state.errors.stop && this.state.touched.stop ? "error" : "info"}> {this.state.errors.stop && this.state.touched.stop ? this.state.errors.stop : ""} diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/system.event.edit.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/system.event.edit.js index 482d9aa7fa6320cbb904f4dd9e383a626d0a084e..7fc03c9875c3460d09ca0e233216dc225bc3c200 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/system.event.edit.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/system.event.edit.js @@ -701,7 +701,7 @@ export class SystemEventEdit extends Component { <input type="text" data-input className={`p-inputtext p-component ${this.state.errors.start && this.state.touched.start ? 'input-error' : ''}`} /> <i className="fa fa-calendar" data-toggle style={{ position: "absolute", marginLeft: '-25px', marginTop: '5px', cursor: 'pointer' }} ></i> <i className="fa fa-times" style={{ position: "absolute", marginLeft: '-50px', marginTop: '5px', cursor: 'pointer' }} - onClick={e => { this.setParams('start', ''); this.setSystemEventParams('start', '') }}></i> + onClick={() => { this.setParams('start', ''); this.setSystemEventParams('start', '') }}></i> </Flatpickr> {this.state.errors.start && this.state.touched.start && <label className={this.state.errors.start && this.state.touched.start ? "error" : "info"}> @@ -730,7 +730,7 @@ export class SystemEventEdit extends Component { <input type="text" data-input className={`p-inputtext p-component ${this.state.errors && this.state.errors.stop && this.state.touched && this.state.touched.stop ? 'input-error' : ''}`} /> <i className="fa fa-calendar" data-toggle style={{ position: "absolute", marginLeft: '-25px', marginTop: '5px', cursor: 'pointer' }} ></i> <i className="fa fa-times" style={{ position: "absolute", marginLeft: '-50px', marginTop: '5px', cursor: 'pointer' }} - onClick={e => { this.setParams('stop', ''); this.setSystemEventParams('stop', '') }}></i> + onClick={() => { this.setParams('stop', ''); this.setSystemEventParams('stop', '') }}></i> </Flatpickr> </div> </div> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/system.event.list.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/system.event.list.js index 577b036b319c2c8c949d5fa6a12d4ab05145f6c0..17c85ed360546f09b0083a515b27bc5cbdc59c59 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/system.event.list.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/SystemEvent/system.event.list.js @@ -81,7 +81,6 @@ export class SystemEventList extends Component{ actionpath: "actionpath" }], optionalcolumns: [{}], - columnclassname: [{}], columnclassname: [{ "System Event Id":"filter-input-50", "Affected Hardware Template Id":"filter-input-50", diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.js index 65b27a922d3bf0b8b616b73351edb1671d9f3e42..53a14463e2c259fba05d455fe4b290421179ee14 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.js @@ -1,4 +1,4 @@ -import React, { Component} from 'react'; +import React, { Component } from 'react'; import { Link, Redirect } from 'react-router-dom'; import _ from 'lodash'; import { Toast } from 'primereact/toast'; @@ -17,11 +17,11 @@ import PageHeader from '../../layout/components/PageHeader'; import AuthUtil from '../../utils/auth.util'; import AccessDenied from '../../layout/components/AccessDenied'; import UIConstants from '../../utils/ui.constants'; -import FormActionbar from '../../components/FormActionbar'; +import FormActionbar from '../../components/FormActionbar'; export class TaskEdit extends Component { templateOutput = {}; // id: selectedTemplateId, output: values enetered in the editor form - + constructor(props) { super(props); this.state = { @@ -31,11 +31,11 @@ export class TaskEdit extends Component { name: "", created_at: null, updated_at: null, - tags:[], + tags: [], do_cancel: false }, redirect: null, - taskTemplates:[], + taskTemplates: [], validEditor: false, validForm: false, validDocument: false, @@ -46,8 +46,8 @@ export class TaskEdit extends Component { fieldsToDisable: [] }; this.formRules = { - name: {required: true, message: "Name can not be empty"}, - description: {required: true, message: "Description can not be empty"} + name: { required: true, message: "Name can not be empty" }, + description: { required: true, message: "Description can not be empty" } }; this.readOnlyProperties = ['duration', 'relative_start_time', 'relative_stop_time']; this.setEditorOutput = this.setEditorOutput.bind(this); @@ -72,18 +72,18 @@ export class TaskEdit extends Component { // so, copy back the '$id' from the schema to make it comparable to the original specifications_doc jsonOutput['$schema'] = this.state.taskSchema['$id'] - if(!_.isEqual(this.templateOutput[this.state.task.specifications_template_id],jsonOutput)) { - if(!this.state.isDirty) { + if (!_.isEqual(this.templateOutput[this.state.task.specifications_template_id], jsonOutput)) { + if (!this.state.isDirty) { publish('edit-dirty', true); } - this.setState({isDirty: true}); + this.setState({ isDirty: true }); } this.templateOutput[this.state.task.specifications_template_id] = jsonOutput; await this.validateDocumentInBackend(); if (errors.length === 0 && !this.state.validEditor && jsonOutput) { - this.setState({validEditor: true, validForm: this.validateForm() }); - } else if (errors.length > 0 && this.state.validEditor) { - this.setState({validEditor: false, validForm: this.validateForm() }); + this.setState({ validEditor: true, validForm: this.validateForm() }); + } else if (errors.length > 0 && this.state.validEditor) { + this.setState({ validEditor: false, validForm: this.validateForm() }); } } @@ -96,13 +96,13 @@ export class TaskEdit extends Component { let task = this.state.task; const taskValue = this.state.task[key]; task[key] = value; - if ( !this.state.isDirty && taskValue && !_.isEqual(taskValue, value) ) { - if(!this.state.isDirty) { + if (!this.state.isDirty && taskValue && !_.isEqual(taskValue, value)) { + if (!this.state.isDirty) { publish('edit-dirty', true); } - this.setState({task: task, validForm: this.validateForm(), isDirty: true}); - } else { - this.setState({task: task, validForm: this.validateForm() }); + this.setState({ task: task, validForm: this.validateForm(), isDirty: true }); + } else { + this.setState({ task: task, validForm: this.validateForm() }); } this.validateDocumentInBackend(); @@ -113,7 +113,7 @@ export class TaskEdit extends Component { * @param {Function} editorFunction */ setEditorFunction(editorFunction) { - this.setState({editorFunction: editorFunction}); + this.setState({ editorFunction: editorFunction }); } /** @@ -121,17 +121,17 @@ export class TaskEdit extends Component { * @param {Number} templateId */ changeTaskTemplate(templateId) { - - const template = _.find(this.state.taskTemplates, {'id': templateId}); + + const template = _.find(this.state.taskTemplates, { 'id': templateId }); let task = this.state.task; task.specifications_template_id = templateId; - + task.specifications_template = template.url; - if(!this.state.isDirty) { + if (!this.state.isDirty) { publish('edit-dirty', true); } - this.setState({taskSchema: null}); - this.setState({task: task, taskSchema: template.ref_resolved_schema, isDirty: true}); + this.setState({ taskSchema: null }); + this.setState({ task: task, taskSchema: template.ref_resolved_schema, isDirty: true }); this.state.editorFunction(); } @@ -146,11 +146,11 @@ export class TaskEdit extends Component { const fieldValue = this.state.task[fieldName]; if (rule.required) { if (!fieldValue) { - errors[fieldName] = rule.message?rule.message:`${fieldName} is required`; + errors[fieldName] = rule.message ? rule.message : `${fieldName} is required`; } } } - this.setState({errors: errors}); + this.setState({ errors: errors }); if (this.state.task.name && this.state.task.description) { validForm = true; } @@ -166,8 +166,10 @@ export class TaskEdit extends Component { const validation_result = await TaskService.validateSpecificationsDoc(this.state.task, specifications_doc) if (validation_result) { - this.setState({validDocument: validation_result['valid'], - validation_message: validation_result['message']}); + this.setState({ + validDocument: validation_result['valid'], + validation_message: validation_result['message'] + }); } } } @@ -176,109 +178,112 @@ export class TaskEdit extends Component { * Function to call the servie and pass the values to save */ async saveTask() { - this.setState({isDirty: false}); + this.setState({ isDirty: false }); publish('edit-dirty', false); let task = this.state.task; task.specifications_doc = this.templateOutput[task.specifications_template_id]; if (task.specifications_doc.station_configuration && task.specifications_doc.station_configuration.station_groups) { - for( const stationGrops of task.specifications_doc.station_configuration.station_groups) { + for (const stationGrops of task.specifications_doc.station_configuration.station_groups) { delete stationGrops['selected_station_list']; } - } + } // Remove read only properties from the object before sending to API - this.readOnlyProperties.forEach(property => { delete task[property]}); + this.readOnlyProperties.forEach(property => { delete task[property] }); TaskService.updateTask("draft", task) - .then( (taskDraft) => { - if (taskDraft) { - if (appGrowl === null) { - setAppGrowl(this.growl) + .then((taskDraft) => { + if (taskDraft) { + if (appGrowl === null) { + setAppGrowl(this.growl) + } + appGrowl.show({ severity: 'success', summary: 'Success', detail: 'Tasks updated successfully.' }); + this.props.history.length > 2 && this.props.history.go(-2); + this.setState({ redirect: '/task/view/draft/' + task.id }); } - appGrowl.show({severity: 'success', summary: 'Success', detail: 'Tasks updated successfully.'}); - this.props.history.length>2 && this.props.history.go(-2); - this.setState({redirect: '/task/view/draft/' + task.id}); - } - }); + }); } /** * warn before cancel the page if any changes detected */ checkIsDirty() { - if( this.state.isDirty ){ - this.setState({showDialog: true}); + if (this.state.isDirty) { + this.setState({ showDialog: true }); } else { this.cancelEdit(); } } - + close() { - this.setState({showDialog: false}); + this.setState({ showDialog: false }); } cancelEdit() { publish('edit-dirty', false); - this.props.history.length>1?this.state.isDirty?this.props.history.go(-2):this.props.history.go(-1):this.props.history.push(`/task/view/draft/${this.state.taskId}`); - this.setState({showDialog: false}); - + this.props.history.length > 1 ? this.state.isDirty ? this.props.history.go(-2) : this.props.history.go(-1) : this.props.history.push(`/task/view/draft/${this.state.taskId}`); + this.setState({ showDialog: false }); + } async componentDidMount() { this.setState({ isLoading: true }); TaskService.getTaskTemplates() - .then((templates) => { - this.setState({taskTemplates: templates}); - }); - let taskId = this.props.match.params?this.props.match.params.id:null; - taskId = taskId?taskId:(this.props.taskId?this.props.taskId:this.props.location.state.taskId); - const permission = await AuthUtil.getUserPermissionByModuleId('task_draft',taskId); - this.setState({userrole: permission, taskId:taskId}) + .then((templates) => { + this.setState({ taskTemplates: templates }); + }); + let taskId = this.props.match.params ? this.props.match.params.id : null; + taskId = taskId ? taskId : (this.props.taskId ? this.props.taskId : this.props.location.state.taskId); + const permission = await AuthUtil.getUserPermissionByModuleId('task_draft', taskId); + this.setState({ userrole: permission, taskId: taskId }) TaskService.getTaskDetails("draft", taskId) - .then(async(task) => { - if (task) { - const taskTemplate = await TaskService.getTaskTemplate(task.specifications_template_id); - const schedulingUnit = await TaskService.getSchedulingUnit("draft", task.scheduling_unit_draft_id, true); - let targetTask = _.find(schedulingUnit[`task_drafts`], suTask => ( - _.includes(UIConstants.TARGET_OBSERVATION_NAMES,suTask.specifications_template.name) - )); - let fieldsToDisable = []; - //To disable input fields in JSON editor - task.specifications_doc.station_configuration?.SAPs.map((sap, index) => { - fieldsToDisable.push('SAPs.'+ index +'.name'); + .then(async (task) => { + if (task) { + const taskTemplate = await TaskService.getTaskTemplate(task.specifications_template_id); + const schedulingUnit = await TaskService.getSchedulingUnit("draft", task.scheduling_unit_draft_id, true); + let targetTask = _.find(schedulingUnit[`task_drafts`], suTask => ( + _.includes(UIConstants.TARGET_OBSERVATION_NAMES, suTask.specifications_template.name) + )); + let fieldsToDisable = []; + //To disable input fields in JSON editor + task.specifications_doc.station_configuration?.SAPs.map((sap, index) => { + fieldsToDisable.push('SAPs.' + index + '.name'); return sap; }) - this.templateOutput[task.specifications_template_id] = task.specifications_doc; - this.setState({schedulingUnit: schedulingUnit,targetTask: targetTask, task: task, taskSchema: taskTemplate.ref_resolved_schema, isLoading: false, fieldsToDisable: fieldsToDisable}); - } else { - this.setState({redirect: "/not-found"}); - } - }); + this.templateOutput[task.specifications_template_id] = task.specifications_doc; + this.setState({ schedulingUnit: schedulingUnit, targetTask: targetTask, task: task, taskSchema: taskTemplate.ref_resolved_schema, isLoading: false, fieldsToDisable: fieldsToDisable }); + } else { + this.setState({ redirect: "/not-found" }); + } + }); } render() { - + if (this.state.redirect) { - return <Redirect to={ {pathname: this.state.redirect, - state: {id: this.state.task.id}} }></Redirect> + return <Redirect to={{ + pathname: this.state.redirect, + state: { id: this.state.task.id } + }}></Redirect> } const { isLoading } = this.state; - + const taskSchema = this.state.taskSchema; - const template = _.find(this.state.taskTemplates, {'id': this.state.task.specifications_template_id}); - + const template = _.find(this.state.taskTemplates, { 'id': this.state.task.specifications_template_id }); + let jeditor = null; - if (this.state.taskSchema) { - jeditor = React.createElement(Jeditor, {title: "Specification", - schema: taskSchema, - //initValue: this.state.templateOutput[this.state.task.specifications_template_id], - initValue: this.templateOutput[this.state.task.specifications_template_id], - fieldsToDisable: this.state.fieldsToDisable, // Array of field names to disable eg. [SAPs.0.name, specification_doc.name,...] - callback: this.setEditorOutput, - parentFunction: this.setEditorFunction, - observationType: template.name, - targetObservation: this.state.targetTask, - }); + if (this.state.taskSchema) { + jeditor = React.createElement(Jeditor, { + title: "Specification", + schema: taskSchema, + //initValue: this.state.templateOutput[this.state.task.specifications_template_id], + initValue: this.templateOutput[this.state.task.specifications_template_id], + fieldsToDisable: this.state.fieldsToDisable, // Array of field names to disable eg. [SAPs.0.name, specification_doc.name,...] + callback: this.setEditorOutput, + parentFunction: this.setEditorFunction, + observationType: template.name, + targetObservation: this.state.targetTask, + }); } - + return ( <React.Fragment> {/*} <div className="p-grid"> @@ -293,94 +298,96 @@ export class TaskEdit extends Component { </div> </div> */} {this.state.userrole[this.state.taskId] && this.state.userrole[this.state.taskId].edit ? - <> - <Toast ref={(el) => this.growl = el} /> - <PageHeader location={this.props.location} title={'Task - Edit'} actions={[{icon: 'fa-window-close', - title:'Click to Close Task Edit Page',type: 'button', actOn: 'click',props : { pathname: `/task/view/draft/${this.state.task?this.state.task.id:''}`,callback: this.checkIsDirty}}]}/> - {isLoading ? <AppLoader/> : - <div> - <div className="p-fluid"> - <div className="p-field p-grid"> - <label htmlFor="taskName" className="col-lg-2 col-md-2 col-sm-12">Name <span style={{color:'red'}}>*</span></label> - <div className="col-lg-4 col-md-4 col-sm-12"> - <InputText className={this.state.errors.name ?'input-error':''} id="taskName" type="text" value={this.state.task.name} disabled ={true} - data-testid="taskName" onChange={(e) => this.setTaskParams('name', e.target.value)}/> - <label className="error"> - {this.state.errors.name ? this.state.errors.name : ""} - </label> - </div> - <label htmlFor="description" className="col-lg-2 col-md-2 col-sm-12">Description <span style={{color:'red'}}>*</span></label> - <div className="col-lg-4 col-md-4 col-sm-12"> - <InputTextarea className={this.state.errors.description ?'input-error':''} rows={3} cols={30} - data-testid="taskDescription" value={this.state.task.description} onChange={(e) => this.setTaskParams('description', e.target.value)}/> - <label className="error"> - {this.state.errors.description ? this.state.errors.description : ""} - </label> - </div> - </div> - <div className="p-field p-grid"> - <label htmlFor="tags" className="col-lg-2 col-md-2 col-sm-12">Tags</label> - <div className="col-lg-4 col-md-4 col-sm-12"> - <Chips value={this.state.task.tags?this.state.task.tags:[]} onChange={(e) => this.setTaskParams('tags', e.value)}></Chips> - </div> - {/* <label htmlFor="doCancel" className="col-lg-2 col-md-2 col-sm-12">Do Cancel</label> + <> + <Toast ref={(el) => this.growl = el} /> + <PageHeader location={this.props.location} title={'Task - Edit'} actions={[{ + icon: 'fa-window-close', + title: 'Click to Close Task Edit Page', type: 'button', actOn: 'click', props: { pathname: `/task/view/draft/${this.state.task ? this.state.task.id : ''}`, callback: this.checkIsDirty } + }]} /> + {isLoading ? <AppLoader /> : + <div> + <div className="p-fluid"> + <div className="p-field p-grid"> + <label htmlFor="taskName" className="col-lg-2 col-md-2 col-sm-12">Name <span style={{ color: 'red' }}>*</span></label> + <div className="col-lg-4 col-md-4 col-sm-12"> + <InputText className={this.state.errors.name ? 'input-error' : ''} id="taskName" type="text" value={this.state.task.name} disabled={true} + data-testid="taskName" onChange={(e) => this.setTaskParams('name', e.target.value)} /> + <label className="error"> + {this.state.errors.name ? this.state.errors.name : ""} + </label> + </div> + <label htmlFor="description" className="col-lg-2 col-md-2 col-sm-12">Description <span style={{ color: 'red' }}>*</span></label> + <div className="col-lg-4 col-md-4 col-sm-12"> + <InputTextarea className={this.state.errors.description ? 'input-error' : ''} rows={3} cols={30} + data-testid="taskDescription" value={this.state.task.description} onChange={(e) => this.setTaskParams('description', e.target.value)} /> + <label className="error"> + {this.state.errors.description ? this.state.errors.description : ""} + </label> + </div> + </div> + <div className="p-field p-grid"> + <label htmlFor="tags" className="col-lg-2 col-md-2 col-sm-12">Tags</label> + <div className="col-lg-4 col-md-4 col-sm-12"> + <Chips value={this.state.task.tags ? this.state.task.tags : []} onChange={(e) => this.setTaskParams('tags', e.value)}></Chips> + </div> + {/* <label htmlFor="doCancel" className="col-lg-2 col-md-2 col-sm-12">Do Cancel</label> <div className="col-lg-4 col-md-4 col-sm-12"> <Checkbox onChange={e => this.setTaskParams('do_cancel', e.checked)} checked={this.state.task.do_cancel}></Checkbox> </div> */} - {this.state.schedulingUnit && - <> - <label className="col-lg-2 col-md-2 col-sm-12">Scheduling Unit</label> - <Link className="col-lg-4 col-md-4 col-sm-12" to={ { pathname:`/schedulingunit/view/draft/${this.state.schedulingUnit.id}`, state: {id: this.state.schedulingUnit.id}}}>{this.state.schedulingUnit?this.state.schedulingUnit.name:''}</Link> - </> - } - </div> - <div className="p-field p-grid"> - <label htmlFor="tags" className="col-lg-2 col-md-2 col-sm-12">Template</label> - <div className="col-lg-4 col-md-4 col-sm-12"> - <Dropdown optionLabel="name" optionValue="id" - value={this.state.task.specifications_template_id} - options={this.state.taskTemplates} disabled - onChange={(e) => {this.changeTaskTemplate(e.value)}} - placeholder="Select Task Template"/> + {this.state.schedulingUnit && + <> + <label className="col-lg-2 col-md-2 col-sm-12">Scheduling Unit</label> + <Link className="col-lg-4 col-md-4 col-sm-12" to={{ pathname: `/schedulingunit/view/draft/${this.state.schedulingUnit.id}`, state: { id: this.state.schedulingUnit.id } }}>{this.state.schedulingUnit ? this.state.schedulingUnit.name : ''}</Link> + </> + } + </div> + <div className="p-field p-grid"> + <label htmlFor="tags" className="col-lg-2 col-md-2 col-sm-12">Template</label> + <div className="col-lg-4 col-md-4 col-sm-12"> + <Dropdown optionLabel="name" optionValue="id" + value={this.state.task.specifications_template_id} + options={this.state.taskTemplates} disabled + onChange={(e) => { this.changeTaskTemplate(e.value) }} + placeholder="Select Task Template" /> + </div> + <label htmlFor="short_description" className="col-lg-2 col-md-2 col-sm-12">Short Description</label> + <div className="col-lg-4 col-md-4 col-sm-12"> + <InputText className={this.state.errors.short_description ? 'input-error' : ''} id="taskShortDescription" maxlength={32} type="text" value={this.state.task.short_description} + data-testid="taskShortDescription" onChange={(e) => this.setTaskParams('short_description', e.target.value)} /> + <label className="info">Max 32 characters</label> + </div> + </div> + </div> + </div> + } + <div className="p-fluid"> + <div className="p-grid"><div className="p-col-12" style={{ width: "100%" }}> + {this.state.taskSchema ? jeditor : ""} + </div> </div> - <label htmlFor="short_description" className="col-lg-2 col-md-2 col-sm-12">Short Description</label> - <div className="col-lg-4 col-md-4 col-sm-12"> - <InputText className={this.state.errors.short_description ?'input-error':''} id="taskShortDescription" maxlength={32} type="text" value={this.state.task.short_description} - data-testid="taskShortDescription" onChange={(e) => this.setTaskParams('short_description', e.target.value)}/> - <label className="info">Max 32 characters</label> + </div> + + <div className="p-grid p-justify-start act-btn-grp" style={{ marginBottom: "2em" }}> + <div className="col-lg-12 col-md-12 col-sm-12"> + <label className={this.state.validDocument ? "info" : "error"}> + {this.state.validation_message ? this.state.validation_message : ""} + </label> </div> - </div> </div> + <div className="p-breadcrumb footer-long-div actions"> + <FormActionbar onSubmit={this.saveTask} + enableSaveBtn={!this.state.validEditor || !this.state.validForm || !this.state.validDocument} onCancel={this.checkIsDirty} /> </div> - } - <div className="p-fluid"> - <div className="p-grid"><div className="p-col-12" style={{width: "100%"}}> - {this.state.taskSchema?jeditor:""} - </div> - </div> - </div> - - <div className="p-grid p-justify-start act-btn-grp" style={{marginBottom: "2em"}}> - <div className="col-lg-12 col-md-12 col-sm-12"> - <label className={this.state.validDocument ? "info" : "error"}> - {this.state.validation_message ? this.state.validation_message : ""} - </label> + <div className="p-grid" data-testid="confirm_dialog"> + <CustomDialog type="confirmation" visible={this.state.showDialog} width="40vw" + header={'Edit Task'} message={'Do you want to discard your changes? Your changes to the Task will not be saved.'} + content={''} onClose={this.close} + actions={[{ id: "yes", title: 'Discard', callback: this.cancelEdit, style: { "background": "#e91224", "border": "1px solid #e91224" } }, + { id: "no", title: 'Cancel', callback: this.close }]} + > + </CustomDialog> </div> - </div> - <div className="p-breadcrumb footer-long-div actions"> - <FormActionbar onSubmit={this.saveTask} - enableSaveBtn={!this.state.validEditor || !this.state.validForm || !this.state.validDocument} onCancel={this.checkIsDirty} /> - </div> - <div className="p-grid" data-testid="confirm_dialog"> - <CustomDialog type="confirmation" visible={this.state.showDialog} width="40vw" - header={'Edit Task'} message={'Do you want to discard your changes? Your changes to the Task will not be saved.'} - content={''} onClose={this.close} - actions={ [ {id:"yes", title: 'Discard', callback: this.cancelEdit, style:{"background": "#e91224","border": "1px solid #e91224"} }, - {id:"no", title: 'Cancel', callback: this.close} ]} - > - </CustomDialog> - </div> - </>: <AccessDenied/>} + </> : <AccessDenied />} </React.Fragment> ); } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/list.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/list.js index 74b70cd684a120c212ad0268f29723002bee8e02..9341ee31b4814d407ea6878de25639d83f1af411 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/list.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/list.js @@ -291,7 +291,7 @@ export class TaskList extends Component { subtaskComponent = (task) => { return ( - <button className="p-link" onClick={(e) => { this.setState({ showStatusLogs: true, task: task }) }}> + <button className="p-link" onClick={() => { this.setState({ showStatusLogs: true, task: task }) }}> <i className="fa fa-history"></i> </button> ); @@ -320,7 +320,6 @@ export class TaskList extends Component { taskBlueprint['relative_start_time'] = 0; taskBlueprint['relative_stop_time'] = 0; taskBlueprint.duration = moment.utc((taskBlueprint.duration && taskBlueprint.duration>0?taskBlueprint.duration:0) * 1000).format(UIConstants.CALENDAR_TIME_FORMAT); - // taskBlueprint.template = taskBlueprint.specifications_template; taskBlueprint.schedulingUnitName = taskBlueprint.scheduling_unit_blueprint.name; for (const subtask of taskBlueprint.subtasks) { subtask.subTaskTemplate = _.find(this.subtaskTemplates, ['id', subtask.specifications_template_id]); @@ -370,12 +369,9 @@ export class TaskList extends Component { if (scheduletask['task_type']) { scheduletask['rowColor'] = 'task-'+scheduletask['task_type']; } - // scheduletask['specifications_doc'] = task['specifications_doc']; scheduletask.duration = moment.utc((scheduletask.duration&&scheduletask.duration>0?scheduletask.duration:0) * 1000).format(UIConstants.CALENDAR_TIME_FORMAT); scheduletask.relative_start_time = moment.utc(scheduletask.relative_start_time * 1000).format(UIConstants.CALENDAR_TIME_FORMAT); scheduletask.relative_stop_time = moment.utc(scheduletask.relative_stop_time * 1000).format(UIConstants.CALENDAR_TIME_FORMAT); - // scheduletask.template = task.specifications_template; - // scheduletask.type_value = task.specifications_template.type_value; scheduletask.produced_by = task.produced_by; scheduletask.produced_by_ids = task.produced_by_ids; scheduletask.schedulingUnitId = task.scheduling_unit_draft_id; @@ -397,7 +393,6 @@ export class TaskList extends Component { task.dataSizeOnDisk = 0; task.noOfOutputProducts = 0; task.canSelect = task.tasktype.toLowerCase() === 'blueprint' ? true : !task.hasBluePrints; - //(task.tasktype.toLowerCase() === 'draft' && task.blueprint_draft.length === 0) ? true : false; if (task.subTasks?.length) { task.noOfOutputProducts = _.sumBy(task.subTasks, 'total_nr_of_dataproducts'); task.size = _.sumBy(task.subTasks, 'total_size_of_dataproducts') @@ -555,7 +550,7 @@ export class TaskList extends Component { </>} {selectedTasksWithoutOnhold.length>0 && <> - <b>Task(s) with status other than 'on hold' will be ignored</b> + <b>Task(s) with status other than 'on hold' will be ignored</b> <DataTable value={selectedTasksWithoutOnhold} resizableColumns columnResizeMode="expand" className="card" style={{ paddingLeft: '0em' }}> <Column field="id" header="Task Id"></Column> <Column field="type" header="Type"></Column> @@ -1060,9 +1055,7 @@ export class TaskList extends Component { columnDef[key]['disableSortBy'] = !_.includes(taskFilters.data.ordering, tempKey); columnDef[key]['disableFilters'] = false; if(UIConstants.FILTER_MAP[taskFilters.data.filters[tempKey].type]) { - /*if (tempKey === 'draft') { //this condition because to avoid dropdown filter for 'Linked Draft ID' - taskFilters.data.filters[tempKey].type = 'CharFilter'; - }*/ + columnDef[key]['filter'] = UIConstants.FILTER_MAP[taskFilters.data.filters[tempKey].type]; } } else if (key === 'subTaskID' && taskFilters.data.filters['subtasks']) { @@ -1100,8 +1093,8 @@ export class TaskList extends Component { getLinksList = (linkedItems, type) => { return ( <> - {linkedItems && linkedItems.length>0 && linkedItems.map((item, index) => ( - <Link style={{paddingRight: '3px'}} to={`/task/view/${type}/${item}`}>{item}</Link> + {linkedItems && linkedItems.length>0 && linkedItems.map((item) => ( + <Link key={item} style={{paddingRight: '3px'}} to={`/task/view/${type}/${item}`}>{item}</Link> ))} </> ); @@ -1120,7 +1113,7 @@ export class TaskList extends Component { let fields = taskType.toLowerCase() === 'draft' ? this.TASK_DRAFT_FIELDS: this.TASK_BLUEPRINT_FIELDS; let response = await TaskService.getExpandedTasksWithFilter(taskType.toLowerCase(), expand, fields.join(","), filterQry, orderBy, limit, offset); const {task_draft, task_blueprint} = this.state.userrole.userRolePermission - if (response && response.data) { + if (response?.data) { this.totalPage = response.data.count; let tasks = taskType.toLowerCase() === 'draft' ? (await this.getFormattedTaskDrafts(response.data.results)) : await this.getFormattedTaskBlueprints(response.data.results); tasks = await this.formatDataProduct(tasks); diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/state_logs.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/state_logs.js index 858d439be2a6410f5dc9908062b716166f92f30b..b48c98ae2eceead8cf3b11e2b0cd9fcbf19e98e5 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/state_logs.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/state_logs.js @@ -78,7 +78,7 @@ export class TaskStatusLogs extends Component { style={{width:"150px"}} // icon={`pi ${this.state.showLatest?"pi-angle-left":"pi-angle-right"}`} // iconPos={`${this.state.showLatest?"left":"right"}`} - onClick={(e) => this.setShowLatest()} /> + onClick={() => this.setShowLatest()} /> </div> <div className="col-lg-12" style={{marginTop:"-30px", zIndex:"0"}}> <ViewTable diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.js index 39e0fd2b107f288b2eef30ea13df56afd9565b99..0d2326c4c3326b6d1f74c3ee6692477e2967da9d 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.js @@ -21,7 +21,6 @@ import ViewTable from '../../components/ViewTable'; import Websocket from 'react-websocket'; export class TaskView extends Component { - // DATE_FORMAT = 'YYYY-MMM-DD HH:mm:ss'; TASK_NOT_STARTED_STATUSES = ['defined', 'schedulable', 'scheduled']; TASK_ACTIVE_STATUSES = ['queued', 'started', 'observing', 'observed', 'processing', 'processed', 'ingesting']; TASK_END_STATUSES = ['finished', 'error', 'cancelled']; @@ -520,7 +519,7 @@ export class TaskView extends Component { </>} {selectedSubtasksWithoutOnhold.length>0 && <> - <b>Subtask(s) with status other than 'on hold' will be ignored</b> + <b>Subtask(s) with status other than 'on hold' will be ignored</b> <DataTable value={selectedSubtasksWithoutOnhold} resizableColumns columnResizeMode="expand" className="card" style={{ paddingLeft: '0em' }}> <Column field="id" header="Subtask Id"></Column> <Column field="type" header="Type"></Column> @@ -942,7 +941,7 @@ export class TaskView extends Component { }); actions.push({icon: 'fa-times-circle', iconType: 'far', title: this.state.task && this.state.task.obsolete_since?'Already marked as obsolete':this.state.permissionById[this.state.taskId] && this.state.permissionById[this.state.taskId].obsolete?'Mark as Obsolete':`${this.access_denied_message}`, - disabled: this.state.task && this.state.task.obsolete_since? true: this.state.permissionById[this.state.taskId] && this.state.permissionById[this.state.taskId].obsolete?false: true, + disabled: this.state.task?.obsolete_since? true: this.state.permissionById[this.state.taskId] && this.state.permissionById[this.state.taskId].obsolete?false: true, type: 'button', actOn: 'click', props: { callback: this.showObsoleteConfirmation }}); } } @@ -1102,7 +1101,7 @@ export class TaskView extends Component { </div> <label className="col-lg-2 col-md-2 col-sm-12">Status Logs</label> <div className="col-lg-4 col-md-4 col-sm-12"> - <button className="p-link" onClick={(e) => { this.setState({showStatusLogs: true})}}><i className="fa fa-history"></i></button> + <button className="p-link" onClick={() => { this.setState({showStatusLogs: true})}}><i className="fa fa-history"></i></button> <Dialog header="State change logs" visible={this.state.showStatusLogs} maximizable position="right" style={{ width: '50vw' }} onHide={() => {this.setState({showStatusLogs: false})}} maximized={false} className="content_dlg"> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.test.js index 22f66d747723007303c2feb79da96dc83a082f54..58da93b8083498502af34cbbe849a56ff9581256 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.test.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.test.js @@ -1328,7 +1328,7 @@ it("test IM+BF Observation Task Draft vew of Solar Campaign strategy", async () expect(content.getAllByText("IM+BF").length).toBe(2); expect(content.getByText('IM+BF Observation')).toBeInTheDocument(); expect(content.getByText("parallel calibrator target and beamforming observation")).toBeInTheDocument(); - await waitFor(()=>expect(content.getByText("Task Specification")).toBeInTheDocument()); + await waitFor(()=>expect(content.getByText("Task Specification")).toBeInTheDocument(), { timeout:2000}); expect(content.getByText("Auto-select")).toBeInTheDocument(); expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/CalendarTimeline.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/CalendarTimeline.js index 91ffa8e1f922909ac1b26e8ac334d53df5e40eea..1db39772969106772c0158c79baa3d0f9d9f823d 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/CalendarTimeline.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/CalendarTimeline.js @@ -1,4 +1,4 @@ -import React, {Component} from 'react'; +import React, { Component } from 'react'; import Timeline, { TimelineMarkers, TimelineHeaders, @@ -6,7 +6,7 @@ import Timeline, { DateHeader, CustomMarker, CursorMarker, - } from 'react-calendar-timeline'; +} from 'react-calendar-timeline'; import containerResizeDetector from 'react-calendar-timeline/lib/resize-detector/container'; import moment from 'moment'; import _ from 'lodash'; @@ -21,37 +21,36 @@ import Filters from "./components/toolbar/Filters"; // Label formats for day headers based on the interval label width -const DAY_HEADER_FORMATS = [{ name: "longer", minWidth: 300, maxWidth: 50000, format: "DD dddd, MMMM YYYY"}, - { name: "long", minWidth: 135, maxWidth: 300, format: "DD-MMMM-YYYY"}, - {name: "mediumLong", minWidth: 100, maxWidth: 135, format: "DD-MMM-YYYY"}, - {name: "medium", minWidth: 75, maxWidth: 100, format: "DD-MMM-YY"}, - {name: "short", minWidth: 50, maxWidth: 75, format: "DD-MMM"}, - {name: "mini", minWidth: 10, maxWidth: 50, format: "DD"}, - {name: "micro", minWidth: 10, maxWidth: 25, format: "DD"}, - {name: "nano", minWidth: 0, maxWidth: 0, format: ""}]; +const DAY_HEADER_FORMATS = [{ name: "longer", minWidth: 300, maxWidth: 50000, format: "DD dddd, MMMM YYYY" }, +{ name: "long", minWidth: 135, maxWidth: 300, format: "DD-MMMM-YYYY" }, +{ name: "mediumLong", minWidth: 100, maxWidth: 135, format: "DD-MMM-YYYY" }, +{ name: "medium", minWidth: 75, maxWidth: 100, format: "DD-MMM-YY" }, +{ name: "short", minWidth: 50, maxWidth: 75, format: "DD-MMM" }, +{ name: "mini", minWidth: 10, maxWidth: 50, format: "DD" }, +{ name: "micro", minWidth: 10, maxWidth: 25, format: "DD" }, +{ name: "nano", minWidth: 0, maxWidth: 0, format: "" }]; //>>>>>> Constants for date/time formats, zoom level definition & defaults const UTC_DATE_FORMAT = "YYYY-MM-DD"; -const UTC_TIME_FORMAT = "HH:mm:ss"; const UTC_LST_KEY_FORMAT = "YYYY-MM-DDTHH:mm:00"; const UTC_LST_HOUR_FORMAT = "YYYY-MM-DDTHH:00:00"; const UTC_LST_DAY_FORMAT = "YYYY-MM-DDT00:00:00"; -const ZOOM_LEVELS = [{name: '30 Minutes', value: 30 * 60}, - {name: '1 Hour', value: 1 * 60 * 60}, - {name: '3 Hours', value: 3 * 60 * 60}, - {name: '6 Hours', value: 6 * 60 * 60}, - {name: '12 Hour', value: 12 * 60 * 60}, - {name: '1 Day', value: 24 * 60 * 60}, - {name: '2 Days', value: 2 * 24 * 60 * 60}, - {name: '3 Days', value: 3 * 24 * 60 * 60}, - {name: '5 Days', value: 5 * 24 * 60 * 60}, - {name: '5 Days', value: 5 * 24 * 60 * 60}, - {name: '1 Week', value: 7 * 24 * 60 * 60}, - {name: '2 Weeks', value: 14 * 24 * 60 * 60}, - {name: '4 Weeks', value: 28 * 24 * 60 * 60}, - {name: 'Custom', value: 24 * 60 * 60}]; +const ZOOM_LEVELS = [{ name: '30 Minutes', value: 30 * 60 }, +{ name: '1 Hour', value: 1 * 60 * 60 }, +{ name: '3 Hours', value: 3 * 60 * 60 }, +{ name: '6 Hours', value: 6 * 60 * 60 }, +{ name: '12 Hour', value: 12 * 60 * 60 }, +{ name: '1 Day', value: 24 * 60 * 60 }, +{ name: '2 Days', value: 2 * 24 * 60 * 60 }, +{ name: '3 Days', value: 3 * 24 * 60 * 60 }, +{ name: '5 Days', value: 5 * 24 * 60 * 60 }, +{ name: '5 Days', value: 5 * 24 * 60 * 60 }, +{ name: '1 Week', value: 7 * 24 * 60 * 60 }, +{ name: '2 Weeks', value: 14 * 24 * 60 * 60 }, +{ name: '4 Weeks', value: 28 * 24 * 60 * 60 }, +{ name: 'Custom', value: 24 * 60 * 60 }]; const DEFAULT_ZOOM_LEVEL = "2 Days"; -const DEFAULT_GROUP = [{'id': 0, 'title': ''}]; // 1st row is added purposefully to show cursor labels +const DEFAULT_GROUP = [{ 'id': 0, 'title': '' }]; // 1st row is added purposefully to show cursor labels //<<<<<< /** @@ -60,167 +59,168 @@ const DEFAULT_GROUP = [{'id': 0, 'title': ''}]; // 1st row is added purposefully export class CalendarTimeline extends Component { constructor(props) { - super(props); - let group = DEFAULT_GROUP; - if (props.group) { - group = group.concat(props.group); - } - let weekDay = props.timelineUIAttributes.weekDay; - if (weekDay) { - weekDay = moment.utc(moment(weekDay).format(UTC_DATE_FORMAT)); - } - const defaultZoomLevel = _.find(ZOOM_LEVELS, {name: DEFAULT_ZOOM_LEVEL}); - // const defaultStartTime = props.startTime?(weekDay?weekDay.clone():props.startTime.clone()):null || moment().utc().add(-1 * defaultZoomLevel.value/2, 'seconds'); - // const defaultEndTime = props.endTime?(weekDay?weekDay.clone().hours(23).minutes(59).seconds(59):props.endTime.clone()):null || moment().utc().add(1 * defaultZoomLevel.value/2, 'seconds'); - const defaultStartTime = props.startTime?props.startTime.clone():null || moment().utc().add(-1 * defaultZoomLevel.value/2, 'seconds'); - const defaultEndTime = props.endTime?props.endTime.clone():null || moment().utc().add(1 * defaultZoomLevel.value/2, 'seconds'); - this.state = { - defaultStartTime: defaultStartTime, - defaultEndTime: defaultEndTime, - group: group, - items: props.items || [], - //>>>>>> Properties to pass to react-calendar-timeline component - stackItems: props.stackItems || false, - zoomAllowed: props.zoomAllowed || true, - minZoom: props.minZoom || (1 * 60 * 1000), // One Minute - maxZoom: props.maxZoom || (32 * 24 * 60 * 60 * 1000), // 32 hours - zoomLevel: props.zoomLevel || DEFAULT_ZOOM_LEVEL, - isTimelineZoom: true, - zoomRange: this.getZoomRange(defaultStartTime, defaultEndTime), - prevZoomRange: null, - lineHeight: props.rowHeight || 50, // Row line height - sidebarWidth: props.sidebarWidth || 200, - timeSteps: props.timeSteps || {minute: 1}, - canMove: props.itemsMovable || false, - canResize: props.itemsResizable || false, - canchangeGroup: props.itemGroupChangeable || true, - //<<<<<< Properties to pass to react-calendar-timeline component - showCursor: props.showCursor || true, - timeHeaderLabelVisibile: true, - currentUTC: props.currentUTC || moment().utc(), // Current UTC for clock display - currentLST: null, // Current LST for clock display - cursorLST: moment().format(UIConstants.CALENDAR_TIME_FORMAT), // Holds the LST value for the cursot position in the timeline - lastCursorPosition: null, // To track the last cursor position and fetch the data from server if changed - utcLSTMap:{}, // JSON object to hold LST values fetched from server for UTC and show LST value in cursor label - lstDateHeaderMap: {}, // JSON object to hold header value for the LST axis in required format like 'HH' or 'MM' or others - lstDateHeaderUnit: 'hour', // Unit to be considered for the LST axis header based on the visible duration - isLSTDateHeaderLoading: true, - dayHeaderVisible: true, // To control the Day header visibility based on the zoom level - weekHeaderVisible: false, // To control the Week header visibility based on the zoom level - allowLive: props.showLive===undefined?true:props.showLive, - allowDateSelection: props.showDateRange===undefined?true:props.showDateRange, - viewType: props.viewType || UIConstants.timeline.types.NORMAL, - isLive: false, - confirmDatePlugin: new confirmDatePlugin(), - scrollPosition: 0, - weekDay: weekDay?[weekDay.format(UTC_DATE_FORMAT)]:null, - showCustomDate: false, - reset: false, - //Toolbar properties - onSkyViewToggle: props.onSkyViewToggle, - setOnSkyViewToggle: props.setOnSkyViewToggle, - stationsViewToggle: props.stationsViewToggle, - setStationsViewToggle: props.setStationsViewToggle, - isStationTasksVisible: props.isStationTasksVisible, - changeViewBlocks: props.changeViewBlocks, - selectedStationGroup: props.selectedStationGroup, - mainStationGroupOptions: props.mainStationGroupOptions, - setSelectedStationGroup: props.setSelectedStationGroup, - suToggle: props.suToggle, - taskToggle: props.taskToggle, - setSUToggle: props.setSUToggle, - setTaskToggle: props.setTaskToggle, - selectedTaskTypes: props.selectedTaskTypes, - taskTypes: props.taskTypes, - setSelectedTaskTypes: props.setSelectedTaskTypes, - setGroupByProject: props.setGroupByProject, - isGroupedByProject: props.isGroupedByProject, - reservationsViewToggle: props.reservationsViewToggle, - setReservationsViewToggle: props.setReservationsViewToggle, - reservationFilter: props.reservationFilter, - setReservationFilter: props.setReservationFilter - } - - if (props.viewType && props.viewType===UIConstants.timeline.types.WEEKVIEW) { - this.state.timelineStartDate = this.state.defaultStartTime.clone(); - this.state.timelineEndDate = this.state.defaultEndTime.clone(); - } - this.itemClickCallback = props.itemClickCallback; // Pass timeline item click event back to parent - this.ZOOM_LEVELS = props.viewType===UIConstants.timeline.types.WEEKVIEW? - _.filter(ZOOM_LEVELS, (level => { return level.value<=24*60*60 && level.name!=="Custom"})):ZOOM_LEVELS; - - //>>>>>>> Override function of timeline component - this.onZoom = this.onZoom.bind(this); - this.onBoundsChange = this.onBoundsChange.bind(this); - this.onTimeChange = this.onTimeChange.bind(this); - //<<<<<< Override function of timeline component - - //>>>>>> Custom Renderer Functions - this.renderNowButton = this.renderNowButton.bind(this); - this.renderSidebarHeader = this.renderSidebarHeader.bind(this); - this.renderDayHeader = this.renderDayHeader.bind(this); - this.renderUTCDateHeader = this.renderUTCDateHeader.bind(this); - this.renderLSTDateHeader = this.renderLSTDateHeader.bind(this); - this.renderCursor = this.renderCursor.bind(this); - this.renderItem = this.renderItem.bind(this); - this.renderNormalSuntimeHeader = this.renderNormalSuntimeHeader.bind(this); - //<<<<<<< Custom Renderer Functions - - //>>>>>> Functions of this component - this.setCurrentUTC = this.setCurrentUTC.bind(this); - this.getLSTof = this.getLSTof.bind(this); - this.onItemClick = this.onItemClick.bind(this); - this.setLive = this.setLive.bind(this); - this.resetToCurrentTime = this.resetToCurrentTime.bind(this); - this.moveLeft = this.moveLeft.bind(this); - this.moveRight = this.moveRight.bind(this); - this.zoomIn = this.zoomIn.bind(this); - this.zoomOut = this.zoomOut.bind(this); - this.setZoomRange = this.setZoomRange.bind(this); - this.getZoomRangeTitle = this.getZoomRangeTitle.bind(this); - this.handleScroll = this.handleScroll.bind(this); - //<<<<<< Functions of this component - - //>>>>>> Public functions of the component - this.updateTimeline = this.updateTimeline.bind(this); - this.changeZoomLevel = this.changeZoomLevel.bind(this); - this.changeWeek = this.changeWeek.bind(this); - //<<<<<< Public functions of the component + super(props); + let group = DEFAULT_GROUP; + if (props.group) { + group = group.concat(props.group); + } + let weekDay = props.timelineUIAttributes.weekDay; + if (weekDay) { + weekDay = moment.utc(moment(weekDay).format(UTC_DATE_FORMAT)); + } + const defaultZoomLevel = _.find(ZOOM_LEVELS, { name: DEFAULT_ZOOM_LEVEL }); + // const defaultStartTime = props.startTime?(weekDay?weekDay.clone():props.startTime.clone()):null || moment().utc().add(-1 * defaultZoomLevel.value/2, 'seconds'); + // const defaultEndTime = props.endTime?(weekDay?weekDay.clone().hours(23).minutes(59).seconds(59):props.endTime.clone()):null || moment().utc().add(1 * defaultZoomLevel.value/2, 'seconds'); + const defaultStartTime = props.startTime ? props.startTime.clone() : null || moment().utc().add(-1 * defaultZoomLevel.value / 2, 'seconds'); + const defaultEndTime = props.endTime ? props.endTime.clone() : null || moment().utc().add(1 * defaultZoomLevel.value / 2, 'seconds'); + this.state = { + defaultStartTime: defaultStartTime, + defaultEndTime: defaultEndTime, + group: group, + items: props.items || [], + //>>>>>> Properties to pass to react-calendar-timeline component + stackItems: props.stackItems || false, + zoomAllowed: props.zoomAllowed || true, + minZoom: props.minZoom || (1 * 60 * 1000), // One Minute + maxZoom: props.maxZoom || (32 * 24 * 60 * 60 * 1000), // 32 hours + zoomLevel: props.zoomLevel || DEFAULT_ZOOM_LEVEL, + isTimelineZoom: true, + zoomRange: this.getZoomRange(defaultStartTime, defaultEndTime), + prevZoomRange: null, + lineHeight: props.rowHeight || 50, // Row line height + sidebarWidth: props.sidebarWidth || 200, + timeSteps: props.timeSteps || { minute: 1 }, + canMove: props.itemsMovable || false, + canResize: props.itemsResizable || false, + canchangeGroup: props.itemGroupChangeable || true, + //<<<<<< Properties to pass to react-calendar-timeline component + showCursor: props.showCursor || true, + timeHeaderLabelVisibile: true, + currentUTC: props.currentUTC || moment().utc(), // Current UTC for clock display + currentLST: null, // Current LST for clock display + cursorLST: moment().format(UIConstants.CALENDAR_TIME_FORMAT), // Holds the LST value for the cursot position in the timeline + lastCursorPosition: null, // To track the last cursor position and fetch the data from server if changed + utcLSTMap: {}, // JSON object to hold LST values fetched from server for UTC and show LST value in cursor label + lstDateHeaderMap: {}, // JSON object to hold header value for the LST axis in required format like 'HH' or 'MM' or others + lstDateHeaderUnit: 'hour', // Unit to be considered for the LST axis header based on the visible duration + isLSTDateHeaderLoading: true, + dayHeaderVisible: true, // To control the Day header visibility based on the zoom level + weekHeaderVisible: false, // To control the Week header visibility based on the zoom level + allowLive: props.showLive === undefined ? true : props.showLive, + allowDateSelection: props.showDateRange === undefined ? true : props.showDateRange, + viewType: props.viewType || UIConstants.timeline.types.NORMAL, + isLive: false, + confirmDatePlugin: new confirmDatePlugin(), + scrollPosition: 0, + weekDay: weekDay ? [weekDay.format(UTC_DATE_FORMAT)] : null, + showCustomDate: false, + reset: false, + //Toolbar properties + onSkyViewToggle: props.onSkyViewToggle, + setOnSkyViewToggle: props.setOnSkyViewToggle, + stationsViewToggle: props.stationsViewToggle, + setStationsViewToggle: props.setStationsViewToggle, + isStationTasksVisible: props.isStationTasksVisible, + changeViewBlocks: props.changeViewBlocks, + selectedStationGroup: props.selectedStationGroup, + mainStationGroupOptions: props.mainStationGroupOptions, + setSelectedStationGroup: props.setSelectedStationGroup, + suToggle: props.suToggle, + taskToggle: props.taskToggle, + setSUToggle: props.setSUToggle, + setTaskToggle: props.setTaskToggle, + selectedTaskTypes: props.selectedTaskTypes, + taskTypes: props.taskTypes, + setSelectedTaskTypes: props.setSelectedTaskTypes, + setGroupByProject: props.setGroupByProject, + isGroupedByProject: props.isGroupedByProject, + reservationsViewToggle: props.reservationsViewToggle, + setReservationsViewToggle: props.setReservationsViewToggle, + reservationFilter: props.reservationFilter, + setReservationFilter: props.setReservationFilter + } + + if (props.viewType && props.viewType === UIConstants.timeline.types.WEEKVIEW) { + this.state.timelineStartDate = this.state.defaultStartTime.clone(); + this.state.timelineEndDate = this.state.defaultEndTime.clone(); + } + this.itemClickCallback = props.itemClickCallback; // Pass timeline item click event back to parent + this.ZOOM_LEVELS = props.viewType === UIConstants.timeline.types.WEEKVIEW ? + _.filter(ZOOM_LEVELS, (level => { return level.value <= 24 * 60 * 60 && level.name !== "Custom" })) : ZOOM_LEVELS; + + //>>>>>>> Override function of timeline component + this.onZoom = this.onZoom.bind(this); + this.onTimeChange = this.onTimeChange.bind(this); + //<<<<<< Override function of timeline component + + //>>>>>> Custom Renderer Functions + this.renderNowButton = this.renderNowButton.bind(this); + this.renderSidebarHeader = this.renderSidebarHeader.bind(this); + this.renderDayHeader = this.renderDayHeader.bind(this); + this.renderUTCDateHeader = this.renderUTCDateHeader.bind(this); + this.renderLSTDateHeader = this.renderLSTDateHeader.bind(this); + this.renderCursor = this.renderCursor.bind(this); + this.renderItem = this.renderItem.bind(this); + this.renderNormalSuntimeHeader = this.renderNormalSuntimeHeader.bind(this); + //<<<<<<< Custom Renderer Functions + + //>>>>>> Functions of this component + this.setCurrentUTC = this.setCurrentUTC.bind(this); + this.getLSTof = this.getLSTof.bind(this); + this.onItemClick = this.onItemClick.bind(this); + this.setLive = this.setLive.bind(this); + this.resetToCurrentTime = this.resetToCurrentTime.bind(this); + this.moveLeft = this.moveLeft.bind(this); + this.moveRight = this.moveRight.bind(this); + this.zoomIn = this.zoomIn.bind(this); + this.zoomOut = this.zoomOut.bind(this); + this.setZoomRange = this.setZoomRange.bind(this); + this.getZoomRangeTitle = this.getZoomRangeTitle.bind(this); + this.handleScroll = this.handleScroll.bind(this); + //<<<<<< Functions of this component + + //>>>>>> Public functions of the component + this.updateTimeline = this.updateTimeline.bind(this); + this.changeZoomLevel = this.changeZoomLevel.bind(this); + this.changeWeek = this.changeWeek.bind(this); + //<<<<<< Public functions of the component } componentDidMount() { // Get stored last options from local storage. If options available set them as default. this.timelineUIAttributes = this.props.timelineUIAttributes; this.timelineCommonUtils = this.props.timelineCommonUtils; - let defaultStartTime = this.props.defaultStartTime?this.props.defaultStartTime:this.state.defaultStartTime; - let defaultEndTime = this.props.defaultEndTime?this.props.defaultEndTime:this.state.defaultEndTime; + let defaultStartTime = this.props.defaultStartTime ? this.props.defaultStartTime : this.state.defaultStartTime; + let defaultEndTime = this.props.defaultEndTime ? this.props.defaultEndTime : this.state.defaultEndTime; const setCurrentUTC = this.setCurrentUTC; // Load LST date header values this.loadLSTDateHeaderMap(defaultStartTime, defaultEndTime, this.state.lstDateHeaderUnit); // Set initial UTC clock time from server - setCurrentUTC(true); + setCurrentUTC(true); // Update UTC clock periodically in sync with server - this.syncUTC = setInterval(function(){setCurrentUTC(true)}, 60000); + this.syncUTC = setInterval(function () { setCurrentUTC(true) }, 60000); // Update UTC clock every second to keep the clock display live - this.updateClock = setInterval(function(){setCurrentUTC()}, 1000); + this.updateClock = setInterval(function () { setCurrentUTC() }, 1000); if (this.state.viewType === UIConstants.timeline.types.WEEKVIEW) { const showCustomDate = this.timelineUIAttributes['showCustomDate']; if (showCustomDate) { - this.setState({showCustomDate: showCustomDate}); + this.setState({ showCustomDate: showCustomDate }); } this.addWeekSunTimes(defaultStartTime, defaultEndTime, this.state.group, this.state.items) .then(items => { // Set the current display date as the weekDay - this.setState({items: items, weekDay: this.state.weekDay || [this.state.currentUTC.format(UTC_DATE_FORMAT)]}); + this.setState({ items: items, weekDay: this.state.weekDay || [this.state.currentUTC.format(UTC_DATE_FORMAT)] }); }); - } else { + } else { // Get stored zoom level if available and set as default - let zoomLevel = _.find(ZOOM_LEVELS, ['value', defaultEndTime.diff(defaultStartTime)/1000]); - zoomLevel = zoomLevel?zoomLevel.name:"Custom"; + let zoomLevel = _.find(ZOOM_LEVELS, ['value', defaultEndTime.diff(defaultStartTime) / 1000]); + zoomLevel = zoomLevel ? zoomLevel.name : "Custom"; const isLive = this.timelineUIAttributes.isLive || false; - this.setState({defaultStartTime: defaultStartTime, defaultEndTime: defaultEndTime, - zoomRange: this.getZoomRange(defaultStartTime, defaultEndTime), - zoomLevel: zoomLevel, isLive: isLive, lastLiveUpdate: moment()}); + this.setState({ + defaultStartTime: defaultStartTime, defaultEndTime: defaultEndTime, + zoomRange: this.getZoomRange(defaultStartTime, defaultEndTime), + zoomLevel: zoomLevel, isLive: isLive, lastLiveUpdate: moment() + }); } window.addEventListener('scroll', this.handleScroll); } @@ -241,22 +241,24 @@ export class CalendarTimeline extends Component { * @param {boolean} systemClock - to differetiate whether tosync with server or local update */ async setCurrentUTC(systemClock) { - if(systemClock) { + if (systemClock) { UtilService.getUTC() - .then(async (utcString) => { + .then(async (utcString) => { const currentUTC = moment.utc(utcString); - this.setState({currentUTC: currentUTC}); + this.setState({ currentUTC: currentUTC }); let currentLST = await UtilService.getLST(utcString); - this.setState({currentLST: moment(currentUTC.format('DD-MMM-YYYY ') + currentLST.split('.')[0], 'DD-MMM-YYYY HH:mm:ss')}); - } ); - } else { - this.setState({currentUTC: this.state.currentUTC.add(1, 'second'), - currentLST: this.state.currentLST?this.state.currentLST.add(1, 'second'):null}); + this.setState({ currentLST: moment(currentUTC.format('DD-MMM-YYYY ') + currentLST.split('.')[0], 'DD-MMM-YYYY HH:mm:ss') }); + }); + } else { + this.setState({ + currentUTC: this.state.currentUTC.add(1, 'second'), + currentLST: this.state.currentLST ? this.state.currentLST.add(1, 'second') : null + }); } - if (this.state.isLive && this.state.lastLiveUpdate && moment().diff(this.state.lastLiveUpdate, 'seconds')>=10) { - await this.setState({liveChange: true}); + if (this.state.isLive && this.state.lastLiveUpdate && moment().diff(this.state.lastLiveUpdate, 'seconds') >= 10) { + await this.setState({ liveChange: true }); this.changeDateRange(this.state.defaultStartTime.add(10, 'seconds'), this.state.defaultEndTime.add(10, 'seconds')); - await this.setState({zoomRange: this.getZoomRange(this.state.defaultStartTime, this.state.defaultEndTime), lastLiveUpdate: moment()}); + await this.setState({ zoomRange: this.getZoomRange(this.state.defaultStartTime, this.state.defaultEndTime), lastLiveUpdate: moment() }); } } @@ -265,28 +267,31 @@ export class CalendarTimeline extends Component { * @returns Component */ renderNowButton() { + let utcString; + let currentUTC; return new shortcutButtonsPlugin({ - button: [ { label: "Now" } ], - onClick: async(index, fp) => { + button: [{ label: "Now" }], + onClick: async (index, fp) => { let zoomRange = this.state.zoomRange; switch (index) { - case 0: - const utcString = await UtilService.getUTC(); - const currentUTC = moment(utcString); - if (zoomRange && zoomRange.length===1) { - zoomRange.push(currentUTC.toDate()); - } else { - zoomRange = [currentUTC.toDate()]; - } - break; - default: - break; + case 0: + utcString = await UtilService.getUTC(); + currentUTC = moment(utcString); + if (zoomRange && zoomRange.length === 1) { + zoomRange.push(currentUTC.toDate()); + } else { + zoomRange = [currentUTC.toDate()]; + } + break; + default: + break; } fp.setDate(zoomRange); - this.setState({zoomRange: zoomRange}); - }}); + this.setState({ zoomRange: zoomRange }); + } + }); } - + /** * Loads LST header values from server and keeps in a state JSON object for respective UTC values in required format * @param {moment} startTime @@ -301,14 +306,14 @@ export class CalendarTimeline extends Component { const range = _.range(timeDiff); for (const value of range) { const colUTC = startTime.clone().add(value, lstDateHeaderUnit).utc(); - const formattedColUTC = colUTC.format(lstDateHeaderUnit==="hour"?UTC_LST_HOUR_FORMAT:UTC_LST_DAY_FORMAT); + const formattedColUTC = colUTC.format(lstDateHeaderUnit === "hour" ? UTC_LST_HOUR_FORMAT : UTC_LST_DAY_FORMAT); // if (!lstDateHeaderMap[formattedColUTC]) { - const lst = await UtilService.getLST(formattedColUTC); - const lstDate = moment(colUTC.format(`MM-DD-YYYY ${lst.split('.')[0]}`), 'MM-DD-YYYY HH:mm:ss').add(30, 'minutes'); - lstDateHeaderMap[formattedColUTC] = lstDateHeaderUnit==="hour"?lstDate.format('HH'):lstDate.format('DD'); + const lst = await UtilService.getLST(formattedColUTC); + const lstDate = moment(colUTC.format(`MM-DD-YYYY ${lst.split('.')[0]}`), 'MM-DD-YYYY HH:mm:ss').add(30, 'minutes'); + lstDateHeaderMap[formattedColUTC] = lstDateHeaderUnit === "hour" ? lstDate.format('HH') : lstDate.format('DD'); // } } - this.setState({lstDateHeaderMap: lstDateHeaderMap, isLSTDateHeaderLoading: false}); + this.setState({ lstDateHeaderMap: lstDateHeaderMap, isLSTDateHeaderLoading: false }); } /** @@ -320,20 +325,20 @@ export class CalendarTimeline extends Component { utc = moment.utc(utc.format(UTC_LST_KEY_FORMAT)); // Condition to reduce or avoid repeated server request as the request is sent asynchronously if multiple calls are there for same value - if (!this.state.lastCursorPosition || this.state.lastCursorPosition.diff(utc, 'minutes')>0 - || this.state.lastCursorPosition.diff(utc, 'minutes')<0) { + if (!this.state.lastCursorPosition || this.state.lastCursorPosition.diff(utc, 'minutes') > 0 + || this.state.lastCursorPosition.diff(utc, 'minutes') < 0) { let utcLSTMap = this.state.utcLSTMap; const formattedUTC = utc.format(UTC_LST_KEY_FORMAT); if (utcLSTMap[formattedUTC]) { - this.setState({lastCursorPosition:utc, cursorLST: utcLSTMap[formattedUTC]}); - } else { - if (_.keys(utcLSTMap).indexOf(formattedUTC)<0) { + this.setState({ lastCursorPosition: utc, cursorLST: utcLSTMap[formattedUTC] }); + } else { + if (_.keys(utcLSTMap).indexOf(formattedUTC) < 0) { UtilService.getLST(formattedUTC).then(lst => { utcLSTMap[formattedUTC] = lst; - this.setState({utcLSTMap: utcLSTMap, lastCursorPosition:utc, cursorLST: lst}); + this.setState({ utcLSTMap: utcLSTMap, lastCursorPosition: utc, cursorLST: lst }); }); utcLSTMap[formattedUTC] = null; - this.setState({utcLSTMap: utcLSTMap}); + this.setState({ utcLSTMap: utcLSTMap }); } } } @@ -348,23 +353,23 @@ export class CalendarTimeline extends Component { monthDuration = `(${startMonth}-${endMonth})`; } return (<div {...getRootProps()} className="sidebar-header" - style={{width: `${this.props.sidebarWidth?this.props.sidebarWidth:this.state.sidebarWidth}px`}}> - <div className="sidebar-header-row">{this.state.viewType===UIConstants.timeline.types.NORMAL? - (this.state.dayHeaderVisible?`Day${monthDuration}`:`Week${monthDuration}`) - :`Week (${this.state.timelineStartDate.week()}) / Day`}</div> - <div className="sidebar-header-row"> - <span style={{fontSize:'10px', fontWeight: 600, backgroundColor: '#c40719', marginRight: '10px'}}> - {this.cursorTime?this.cursorTime.utc.format("DD-MMM-YYYY HH:mm:00"):''} - </span> - {this.state.dayHeaderVisible?`UTC(Hr)`:`UTC(Day)`} - </div> - <div className="sidebar-header-row"> - <span style={{fontSize:'10px', fontWeight: 600, backgroundColor: '#c40719', marginRight: '10px'}}> - {this.cursorTime?this.cursorTime.lst:''} - </span> - {this.state.dayHeaderVisible?`LST(Hr)`:`LST(Day)`} - </div> - </div> + style={{ width: `${this.props.sidebarWidth ? this.props.sidebarWidth : this.state.sidebarWidth}px` }}> + <div className="sidebar-header-row">{this.state.viewType === UIConstants.timeline.types.NORMAL ? + (this.state.dayHeaderVisible ? `Day${monthDuration}` : `Week${monthDuration}`) + : `Week (${this.state.timelineStartDate.week()}) / Day`}</div> + <div className="sidebar-header-row"> + <span style={{ fontSize: '10px', fontWeight: 600, backgroundColor: '#c40719', marginRight: '10px' }}> + {this.cursorTime ? this.cursorTime.utc.format("DD-MMM-YYYY HH:mm:00") : ''} + </span> + {this.state.dayHeaderVisible ? `UTC(Hr)` : `UTC(Day)`} + </div> + <div className="sidebar-header-row"> + <span style={{ fontSize: '10px', fontWeight: 600, backgroundColor: '#c40719', marginRight: '10px' }}> + {this.cursorTime ? this.cursorTime.lst : ''} + </span> + {this.state.dayHeaderVisible ? `LST(Hr)` : `LST(Day)`} + </div> + </div> ); } @@ -374,13 +379,13 @@ export class CalendarTimeline extends Component { * @param {number} labelWidth */ formatDayHeader(time, labelWidth) { - const dayFormat = _.find(DAY_HEADER_FORMATS, (format) => { return (format.minWidth<labelWidth && format.maxWidth>labelWidth);}); - return time.format(dayFormat?dayFormat.format:"DD-MM-YY"); + const dayFormat = _.find(DAY_HEADER_FORMATS, (format) => { return (format.minWidth < labelWidth && format.maxWidth > labelWidth); }); + return time.format(dayFormat ? dayFormat.format : "DD-MM-YY"); } /** Custom Render function for Day Header to pass to the DateHeader component of the Timeline compoent */ - renderDayHeader({ getIntervalProps, intervalContext, data }) { - const currentZoomValue = _.find(ZOOM_LEVELS, {name: this.state.zoomLevel}).value; + renderDayHeader({ getIntervalProps, intervalContext }) { + const currentZoomValue = _.find(ZOOM_LEVELS, { name: this.state.zoomLevel }).value; const intervalStartTime = intervalContext.interval.startTime.utc(); const labelWidth = intervalContext.interval.labelWidth; let displayValue = ""; @@ -388,25 +393,25 @@ export class CalendarTimeline extends Component { // For zoom levels less than 1 day, header value is formatted and label width is re-calculated let intervals = 86400 / currentZoomValue; const formattedTime = intervalStartTime.format("HH"); - intervals = intervals < 1? 1: intervals; + intervals = intervals < 1 ? 1 : intervals; const newLabelWidth = labelWidth * 24 / intervals; - displayValue = parseInt(formattedTime)%(24/intervals)===0?this.formatDayHeader(intervalStartTime, newLabelWidth):"" + displayValue = parseInt(formattedTime) % (24 / intervals) === 0 ? this.formatDayHeader(intervalStartTime, newLabelWidth) : "" let divStyle = getIntervalProps().style; if (displayValue) { divStyle.width = `${newLabelWidth}px`; - divStyle.fontSize = newLabelWidth < 20?"12px":"14px"; + divStyle.fontSize = newLabelWidth < 20 ? "12px" : "14px"; return (<div {...getIntervalProps()} className="rct-dateHeader" style={divStyle}> <span> {displayValue} </span> </div>); - } else { + } else { return ""; } } /** Custom Render function for DateHeader component to display UTC time/date values in the date header */ - renderUTCDateHeader({ getIntervalProps, intervalContext, data }) { + renderUTCDateHeader({ getIntervalProps, intervalContext }) { let showBorder = true; let divStyle = getIntervalProps().style; const labelWidth = intervalContext.interval.labelWidth; @@ -417,7 +422,7 @@ export class CalendarTimeline extends Component { if (this.state.lstDateHeaderUnit === "hour") { displayValue = intervalContext.interval.startTime.utc().format('HH'); widthFactor = 24; - } else if (this.state.lstDateHeaderUnit === "day") { + } else if (this.state.lstDateHeaderUnit === "day") { displayValue = intervalContext.interval.endTime.utc().format('DD'); widthFactor = 30; } @@ -426,94 +431,94 @@ export class CalendarTimeline extends Component { // Calculate width factor to adjust the label width based on the unit and interval length if (labelWidth < 1) { showBorder = false; // If the linewidth is very less, don't display border. Instead show a marker line below the label - } else if (labelWidth < 2) { - widthFactor = widthFactor/2; + } else if (labelWidth < 2) { + widthFactor = widthFactor / 2; showBorder = false; - } else if (labelWidth < 4) { - widthFactor = widthFactor/3; - } else if (labelWidth < 5) { - widthFactor = widthFactor/4; - } else if (labelWidth < 5.5) { - widthFactor = widthFactor/6; - } else if (labelWidth < 7) { - widthFactor = widthFactor/8; - } else if (labelWidth < 12) { - widthFactor = widthFactor/12; - } else { + } else if (labelWidth < 4) { + widthFactor = widthFactor / 3; + } else if (labelWidth < 5) { + widthFactor = widthFactor / 4; + } else if (labelWidth < 5.5) { + widthFactor = widthFactor / 6; + } else if (labelWidth < 7) { + widthFactor = widthFactor / 8; + } else if (labelWidth < 12) { + widthFactor = widthFactor / 12; + } else { widthFactor = 1; } // <<<<<<*** This code should be updated with reduced lines or by creating separate function - displayValue = parseInt(displayValue)%Math.floor(widthFactor)===0?displayValue:""; - divStyle.fontSize = labelWidth>16?"14px":(labelWidth>12?"12px":(labelWidth>10?"10px":"10px")); - divStyle.borderLeft = showBorder?divStyle.borderLeft:"0px dashed #bbb"; - + displayValue = parseInt(displayValue) % Math.floor(widthFactor) === 0 ? displayValue : ""; + divStyle.fontSize = labelWidth > 16 ? "14px" : (labelWidth > 12 ? "12px" : (labelWidth > 10 ? "10px" : "10px")); + divStyle.borderLeft = showBorder ? divStyle.borderLeft : "0px dashed #bbb"; + if (displayValue) { divStyle.width = `${labelWidth * widthFactor}px`; return <div {...getIntervalProps()} className="rct-dateHeader" style={divStyle}> - { (this.state.timeHeaderLabelVisibile)? - (showBorder)? + {(this.state.timeHeaderLabelVisibile) ? + (showBorder) ? <span key={`utchead-${displayValue}`}> {displayValue} - </span>: + </span> : <> - <span style={{height: '30px', lineHeight:'15px', textAlign: 'center', transform:(labelWidth<12?"rotate(0deg)":"")}}> - { displayValue}<br/> - <span style={{color: '#bbb'}}>{"|"}</span> + <span style={{ height: '30px', lineHeight: '15px', textAlign: 'center', transform: (labelWidth < 12 ? "rotate(0deg)" : "") }}> + {displayValue}<br /> + <span style={{ color: '#bbb' }}>{"|"}</span> </span> </> - :""} + : ""} </div> - } else { + } else { return ""; } } /** Custom Render function to be passed to DateHeader component to display LST values in date header */ - renderLSTDateHeader({ getIntervalProps, intervalContext, data }) { + renderLSTDateHeader({ getIntervalProps, intervalContext }) { let showBorder = true; const utc = moment(intervalContext.interval.endTime).utc(); // Decide the value to be displayed based on the unit set for the zoom level - let lstDisplayValue = this.state.lstDateHeaderMap[utc.format(this.state.lstDateHeaderUnit === "hour"?UTC_LST_HOUR_FORMAT:UTC_LST_DAY_FORMAT)]; + let lstDisplayValue = this.state.lstDateHeaderMap[utc.format(this.state.lstDateHeaderUnit === "hour" ? UTC_LST_HOUR_FORMAT : UTC_LST_DAY_FORMAT)]; let divStyle = getIntervalProps().style; const labelWidth = intervalContext.interval.labelWidth; let widthFactor = 1; if (this.state.lstDateHeaderUnit === "hour") { widthFactor = 24; - } else if (this.state.lstDateHeaderUnit === "day") { + } else if (this.state.lstDateHeaderUnit === "day") { widthFactor = 30; } // >>>>>>*** This code should be updated with reduced lines or by creating separate function // Calculate width factor to adjust the label width based on the unit and interval length if (labelWidth < 1) { showBorder = false; - } else if (labelWidth < 2) { - widthFactor = widthFactor/2; + } else if (labelWidth < 2) { + widthFactor = widthFactor / 2; showBorder = false; - } else if (labelWidth < 4) { - widthFactor = widthFactor/3; - } else if (labelWidth < 5) { - widthFactor = widthFactor/4; - } else if (labelWidth < 5.5) { - widthFactor = widthFactor/6; - } else if (labelWidth < 7) { - widthFactor = widthFactor/8; - } else if (labelWidth < 12) { - widthFactor = widthFactor/12; - } else { + } else if (labelWidth < 4) { + widthFactor = widthFactor / 3; + } else if (labelWidth < 5) { + widthFactor = widthFactor / 4; + } else if (labelWidth < 5.5) { + widthFactor = widthFactor / 6; + } else if (labelWidth < 7) { + widthFactor = widthFactor / 8; + } else if (labelWidth < 12) { + widthFactor = widthFactor / 12; + } else { widthFactor = 1; } // <<<<<<*** This code should be updated with reduced lines or by creating separate function - + // Values to be displayed at regular intervals only if (widthFactor === 24) { - lstDisplayValue = lstDisplayValue==="12"?lstDisplayValue:""; - } else if (widthFactor === 30) { - lstDisplayValue = lstDisplayValue==="5"?lstDisplayValue:""; - } else { - lstDisplayValue = parseInt(lstDisplayValue)%widthFactor===0?lstDisplayValue:""; + lstDisplayValue = lstDisplayValue === "12" ? lstDisplayValue : ""; + } else if (widthFactor === 30) { + lstDisplayValue = lstDisplayValue === "5" ? lstDisplayValue : ""; + } else { + lstDisplayValue = parseInt(lstDisplayValue) % widthFactor === 0 ? lstDisplayValue : ""; } - divStyle.fontSize = labelWidth>16?"14px":(labelWidth>12?"12px":(labelWidth>10?"10px":"10px")); - divStyle.borderLeft = showBorder?divStyle.borderLeft:"0px dashed #bbb"; + divStyle.fontSize = labelWidth > 16 ? "14px" : (labelWidth > 12 ? "12px" : (labelWidth > 10 ? "10px" : "10px")); + divStyle.borderLeft = showBorder ? divStyle.borderLeft : "0px dashed #bbb"; if (lstDisplayValue) { divStyle.width = `${labelWidth * widthFactor}px`; return <div {...getIntervalProps()} className="rct-dateHeader" style={divStyle}> @@ -522,7 +527,7 @@ export class CalendarTimeline extends Component { {lstDisplayValue} </span> </div> - } else { + } else { return ""; } } @@ -532,65 +537,64 @@ export class CalendarTimeline extends Component { headerContext: { intervals }, getRootProps, getIntervalProps, - showPeriod, - data, + }) { const sunTimeMap = this.state.sunTimeMap; return ( - <div {...getRootProps()}> - {intervals.map(interval => { - const dayStyle = { - lineHeight: '30px', - backgroundColor: 'white', - color: 'white' - } - const nightStyle = { - lineHeight: '30px', - backgroundColor: 'grey', - color: 'grey' - } - const sunriseStyle = { - lineHeight: '30px', - backgroundColor: 'yellow', - color: 'yellow' - } - const sunsetStyle = { - lineHeight: '30px', - backgroundColor: 'orange', - color: 'orange' - } - // Get the intervals UTC date format and time - const intervalDate = interval.startTime.clone().utc().format("YYYY-MM-DD"); - const intervalTime = interval.startTime.clone().utc(); - // Get the suntime for the UTC date - const intervalDateSunTime = sunTimeMap[intervalDate]; - let intervalStyle = dayStyle; - // If suntime is available display suntime blocks - if (intervalDateSunTime) { - if (intervalTime.isBefore(intervalDateSunTime.sunrise.start) || - intervalTime.isAfter(intervalDateSunTime.sunset.end)) { - intervalStyle = nightStyle; - } else if (intervalTime.isSameOrAfter(intervalDateSunTime.sunrise.start) && + <div {...getRootProps()}> + {intervals.map(interval => { + const dayStyle = { + lineHeight: '30px', + backgroundColor: 'white', + color: 'white' + } + const nightStyle = { + lineHeight: '30px', + backgroundColor: 'grey', + color: 'grey' + } + const sunriseStyle = { + lineHeight: '30px', + backgroundColor: 'yellow', + color: 'yellow' + } + const sunsetStyle = { + lineHeight: '30px', + backgroundColor: 'orange', + color: 'orange' + } + // Get the intervals UTC date format and time + const intervalDate = interval.startTime.clone().utc().format("YYYY-MM-DD"); + const intervalTime = interval.startTime.clone().utc(); + // Get the suntime for the UTC date + const intervalDateSunTime = sunTimeMap[intervalDate]; + let intervalStyle = dayStyle; + // If suntime is available display suntime blocks + if (intervalDateSunTime) { + if (intervalTime.isBefore(intervalDateSunTime.sunrise.start) || + intervalTime.isAfter(intervalDateSunTime.sunset.end)) { + intervalStyle = nightStyle; + } else if (intervalTime.isSameOrAfter(intervalDateSunTime.sunrise.start) && intervalTime.isSameOrBefore(intervalDateSunTime.sunrise.end)) { - intervalStyle = sunriseStyle; - } else if (intervalTime.isSameOrAfter(intervalDateSunTime.sunset.start) && + intervalStyle = sunriseStyle; + } else if (intervalTime.isSameOrAfter(intervalDateSunTime.sunset.start) && intervalTime.isSameOrBefore(intervalDateSunTime.sunset.end)) { - intervalStyle = sunsetStyle; - } - return ( - <div className={`suntime-header, ${intervalStyle}`} - {...getIntervalProps({ - interval, - style: intervalStyle - })} - > - </div> - ) - } else { - return (""); - } - })} - </div> + intervalStyle = sunsetStyle; + } + return ( + <div className={`suntime-header, ${intervalStyle}`} + {...getIntervalProps({ + interval, + style: intervalStyle + })} + > + </div> + ) + } else { + return (""); + } + })} + </div> ) } @@ -602,45 +606,45 @@ export class CalendarTimeline extends Component { let endPoint = 0; return ( <> - {sunRiseTimings && sunRiseTimings.length>0 && sunRiseTimings.map((item, index) => ( - <> - {/* Marker to get the position of the sunrise end time */} - <CustomMarker key={"sunrise-pos-"+index} date={item.end.valueOf()}> - {({ styles, date }) => { - endPoint = styles.left; - return "" - }} - </CustomMarker> - {/* Marker to represent dark light before sunrise on the day */} - <CustomMarker key={"bef-sunrise-"+index} date={item.start.clone().hours(0).minutes(0).seconds(0).valueOf()}> - {({ styles, date }) => { - const customStyles = { - ...styles, - backgroundColor: 'grey', - opacity:0.7, - zIndex: 10, - // width: '3px' - width: (endPoint-styles.left) - } - return <div style={customStyles} /> - }} - </CustomMarker> - {/* Marker to represent the duration of sunrise */} - <CustomMarker key={"sunrise-"+index} date={item.start.valueOf()}> - {({ styles, date }) => { - const customStyles = { - ...styles, - backgroundColor: 'yellow', - opacity:0.7, - zIndex: 10, - // width: '3px' - width: (endPoint-styles.left) - } - return <div style={customStyles} /> - }} - </CustomMarker> - </> - ))} + {sunRiseTimings && sunRiseTimings.length > 0 && sunRiseTimings.map((item, index) => ( + <> + {/* Marker to get the position of the sunrise end time */} + <CustomMarker key={"sunrise-pos-" + index} date={item.end.valueOf()}> + {({ styles }) => { + endPoint = styles.left; + return "" + }} + </CustomMarker> + {/* Marker to represent dark light before sunrise on the day */} + <CustomMarker key={"bef-sunrise-" + index} date={item.start.clone().hours(0).minutes(0).seconds(0).valueOf()}> + {({ styles }) => { + const customStyles = { + ...styles, + backgroundColor: 'grey', + opacity: 0.7, + zIndex: 10, + // width: '3px' + width: (endPoint - styles.left) + } + return <div style={customStyles} /> + }} + </CustomMarker> + {/* Marker to represent the duration of sunrise */} + <CustomMarker key={"sunrise-" + index} date={item.start.valueOf()}> + {({ styles }) => { + const customStyles = { + ...styles, + backgroundColor: 'yellow', + opacity: 0.7, + zIndex: 10, + // width: '3px' + width: (endPoint - styles.left) + } + return <div style={customStyles} /> + }} + </CustomMarker> + </> + ))} </> ); } @@ -653,44 +657,44 @@ export class CalendarTimeline extends Component { let endPoint = 0; return ( <> - {sunSetTimings && sunSetTimings.length>0 && sunSetTimings.map((item, index) => ( - <> - {/* Marker to get the position of the sunset end time */} - <CustomMarker key={"sunset-pos-"+index} date={item.end.valueOf()}> - {({ styles, date }) => { - endPoint = styles.left; - return "" - }} - </CustomMarker> - {/* Marker to represent the dark light after sunset */} - <CustomMarker key={"after-sunset-"+index} date={item.start.clone().hours(23).minutes(59).seconds(59).valueOf()}> - {({ styles, date }) => { - const customStyles = { - ...styles, - backgroundColor: 'grey', - opacity:0.7, - zIndex: 10, - left: endPoint, - width: styles.left-endPoint - } - return <div style={customStyles} /> - }} - </CustomMarker> - {/* Marker to represent the actual sunset duration */} - <CustomMarker key={"sunset-"+index} date={item.start.valueOf()}> - {({ styles, date }) => { - const customStyles = { - ...styles, - backgroundColor: 'orange', - opacity:0.7, - zIndex: 10, - width: endPoint - styles.left - } - return <div style={customStyles} /> - }} - </CustomMarker> - </> - ))} + {sunSetTimings && sunSetTimings.length > 0 && sunSetTimings.map((item, index) => ( + <> + {/* Marker to get the position of the sunset end time */} + <CustomMarker key={"sunset-pos-" + index} date={item.end.valueOf()}> + {({ styles }) => { + endPoint = styles.left; + return "" + }} + </CustomMarker> + {/* Marker to represent the dark light after sunset */} + <CustomMarker key={"after-sunset-" + index} date={item.start.clone().hours(23).minutes(59).seconds(59).valueOf()}> + {({ styles }) => { + const customStyles = { + ...styles, + backgroundColor: 'grey', + opacity: 0.7, + zIndex: 10, + left: endPoint, + width: styles.left - endPoint + } + return <div style={customStyles} /> + }} + </CustomMarker> + {/* Marker to represent the actual sunset duration */} + <CustomMarker key={"sunset-" + index} date={item.start.valueOf()}> + {({ styles }) => { + const customStyles = { + ...styles, + backgroundColor: 'orange', + opacity: 0.7, + zIndex: 10, + width: endPoint - styles.left + } + return <div style={customStyles} /> + }} + </CustomMarker> + </> + ))} </> ); } @@ -703,26 +707,26 @@ export class CalendarTimeline extends Component { let endPoint = 0; return ( <> - {sunSetTimings && sunSetTimings.length>0 && sunSetTimings.map((item, index) => ( - <> - <CustomMarker key={"sunset-"+index} date={item.end.valueOf()}> - {({ styles, date }) => { - endPoint = styles.left; - return "" - }} - </CustomMarker> - <CustomMarker key={"sunset-"+index} date={item.start.valueOf()}> - {({ styles, date }) => { - const customStyles = { - ...styles, - backgroundColor: 'orange', - width: endPoint - styles.left - } - return <div style={customStyles} /> - }} - </CustomMarker> - </> - ))} + {sunSetTimings && sunSetTimings.length > 0 && sunSetTimings.map((item, index) => ( + <> + <CustomMarker key={"sunset-" + index} date={item.end.valueOf()}> + {({ styles }) => { + endPoint = styles.left; + return "" + }} + </CustomMarker> + <CustomMarker key={"sunset-" + index} date={item.start.valueOf()}> + {({ styles }) => { + const customStyles = { + ...styles, + backgroundColor: 'orange', + width: endPoint - styles.left + } + return <div style={customStyles} /> + }} + </CustomMarker> + </> + ))} </> ); } @@ -731,32 +735,32 @@ export class CalendarTimeline extends Component { renderCursor({ styles, date }) { const utc = moment(date).utc(); // For week view get the row date and get the LST date of the cursor for the row date - let onRowGroup = _.find(this.state.group,['id', this.state.onRow]); - let cursorUTC = onRowGroup?onRowGroup.value.clone().hours(utc.hours()).minutes(utc.minutes()).seconds(utc.seconds()):utc; + let onRowGroup = _.find(this.state.group, ['id', this.state.onRow]); + let cursorUTC = onRowGroup ? onRowGroup.value.clone().hours(utc.hours()).minutes(utc.minutes()).seconds(utc.seconds()) : utc; this.getLSTof(cursorUTC); const cursorLST = this.state.cursorLST; let cursorTextStyles = {}; cursorTextStyles.backgroundColor = '#c40719' - cursorTextStyles.width = `${this.state.lineHeight*4}px`; + cursorTextStyles.width = `${this.state.lineHeight * 4}px`; cursorTextStyles.color = '#ffffff'; cursorTextStyles.zIndex = '999'; - cursorTextStyles.fontSize = `${this.state.lineHeight/30*8}px`; + cursorTextStyles.fontSize = `${this.state.lineHeight / 30 * 8}px`; cursorTextStyles.height = `${this.state.lineHeight - 2}px`; cursorTextStyles.position = styles.position; - cursorTextStyles.left = styles.left-(this.state.lineHeight*2); + cursorTextStyles.left = styles.left - (this.state.lineHeight * 2); let headerOffsetTop = document.getElementsByClassName("rct-header-root")[0].offsetTop; - cursorTextStyles.top = ((this.state.viewType === UIConstants.timeline.types.WEEKVIEW && headerOffsetTop)?headerOffsetTop-55:2) + 'px'; + cursorTextStyles.top = ((this.state.viewType === UIConstants.timeline.types.WEEKVIEW && headerOffsetTop) ? headerOffsetTop - 55 : 2) + 'px'; cursorTextStyles.paddingLeft = "5px"; cursorTextStyles.textAlign = "center"; styles.backgroundColor = '#c40719'; styles.display = "block !important"; styles.zIndex = '999'; - this.cursorTime = {utc: cursorUTC, lst: cursorLST}; + this.cursorTime = { utc: cursorUTC, lst: cursorLST }; return ( <> <div style={styles} /> <div style={cursorTextStyles}> - <div>UTC: { cursorUTC.format('DD-MMM-YYYY HH:mm:00')}</div> + <div>UTC: {cursorUTC.format('DD-MMM-YYYY HH:mm:00')}</div> <div>LST: {cursorLST}</div> </div> </> @@ -764,106 +768,111 @@ export class CalendarTimeline extends Component { } /** Custom function to pass to timeline component to render item */ - renderItem({ item, timelineContext, itemContext, getItemProps, getResizeProps }) { + renderItem({ item , itemContext, getItemProps, getResizeProps }) { /* Reduce the item height so that the suntimings can be viewed above the item block. Also suntimes are rendered as items with tiny height to represent as horizontal bar above the actual items */ if (item.type === "SUNTIME") { itemContext.dimensions.height = 3; - } else { + } else { itemContext.dimensions.height -= 3; if (!this.props.showSunTimings && this.state.viewType === UIConstants.timeline.types.NORMAL) { if (item.type === "RESERVATION") { // itemContext.dimensions.top -= 20; // itemContext.dimensions.height += 20; - } else { + } else { // itemContext.dimensions.top -= 20; } - } else if (this.state.viewType === UIConstants.timeline.types.WEEKVIEW) { + } else if (this.state.viewType === UIConstants.timeline.types.WEEKVIEW) { // itemContext.dimensions.top -= (this.props.rowHeight-5); - } else { - if (item.type === "TASK" || item.type==="STATION_TASK") { + } else { + if (item.type === "TASK" || item.type === "STATION_TASK") { itemContext.dimensions.top += 6; itemContext.dimensions.height -= 10; - } else { + } else { itemContext.dimensions.top += 3; } } - + } const isStationView = (this.state.viewType === UIConstants.timeline.types.NORMAL && !this.props.showSunTimings); const { left: leftResizeProps, right: rightResizeProps } = getResizeProps(); - const backgroundColor = itemContext.selected?item.bgColor:item.bgColor; - let itemContentStyle = {lineHeight: `${Math.floor(item.type==="RESERVATION"?itemContext.dimensions.height/(isStationView?1:2):itemContext.dimensions.height)}px`, - fontSize: isStationView?"10px":"14px", - overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", - textAlign: "center"}; + const backgroundColor = itemContext.selected ? item.bgColor : item.bgColor; + let itemContentStyle = { + lineHeight: `${Math.floor(item.type === "RESERVATION" ? itemContext.dimensions.height / (isStationView ? 1 : 2) : itemContext.dimensions.height)}px`, + fontSize: isStationView ? "10px" : "14px", + overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", + textAlign: "center" + }; let itemStatus = null; - if (item.type === "SCHEDULE" || item.type === "TASK" || item.type==="STATION_TASK" ) { - itemContentStyle = {lineHeight: `${Math.floor(itemContext.dimensions.height/(isStationView?1:3))}px`, - maxHeight: itemContext.dimensions.height, - fontSize: isStationView?"10px":"12px", fontWeight: "600", - overflow: "hidden", textOverflow: "ellipsis", - whiteSpace: isStationView?"nowrap":"inherit", - opacity: item.status==="schedulable" && !item.placed ? 0.5 : 1.0, - textAlign: "center"}; + if (item.type === "SCHEDULE" || item.type === "TASK" || item.type === "STATION_TASK") { + itemContentStyle = { + lineHeight: `${Math.floor(itemContext.dimensions.height / (isStationView ? 1 : 3))}px`, + maxHeight: itemContext.dimensions.height, + fontSize: isStationView ? "10px" : "12px", fontWeight: "600", + overflow: "hidden", textOverflow: "ellipsis", + whiteSpace: isStationView ? "nowrap" : "inherit", + opacity: item.status === "schedulable" && !item.placed ? 0.5 : 1.0, + textAlign: "center" + }; itemStatus = item.status; } - let itemDivStyle = { background: backgroundColor, - color: item.color, - borderColor: item.color, - borderRadius: 3, - border: "none", - zIndex: item.type==="SUNTIME"?79:80 - }; - if (item.type === "SCHEDULE" || item.type === "TASK" || item.type==="STATION_TASK" ) { - itemDivStyle.border = item.scheduleMethod === 'dynamic'?"1.5px dashed":"1.5px solid" - } else if (this.state.viewType === UIConstants.timeline.types.WEEKVIEW && item.type === "SUNTIME") { + let itemDivStyle = { + background: backgroundColor, + color: item.color, + borderColor: item.color, + borderRadius: 3, + border: "none", + zIndex: item.type === "SUNTIME" ? 79 : 80 + }; + if (item.type === "SCHEDULE" || item.type === "TASK" || item.type === "STATION_TASK") { + itemDivStyle.border = item.scheduleMethod === 'dynamic' ? "1.5px dashed" : "1.5px solid" + } else if (this.state.viewType === UIConstants.timeline.types.WEEKVIEW && item.type === "SUNTIME") { itemStatus = "undefined"; } return ( - <div - {...getItemProps({ - className: `rct-item ${itemStatus?'su-'+itemStatus:''}`, - style: itemDivStyle, - onMouseDown: () => { - if (item.type !== "SUNTIME") { - this.onItemClick(item); - } - } - })} onMouseOver={(evt) => { this.onItemMouseOver(evt, item)}} - onMouseOut={(evt) => { this.onItemMouseOut(evt, item)}} - > - {itemContext.useResizeHandle ? <div {...leftResizeProps} /> : null} - - { item.type === "SCHEDULE" && + <div + {...getItemProps({ + className: `rct-item ${itemStatus ? 'su-' + itemStatus : ''}`, + style: itemDivStyle, + onMouseDown: () => { + if (item.type !== "SUNTIME") { + this.onItemClick(item); + } + } + })} onMouseOver={(evt) => { this.onItemMouseOver(evt, item) }} + onMouseOut={(evt) => { this.onItemMouseOut(evt, item) }} + > + {itemContext.useResizeHandle ? <div {...leftResizeProps} /> : null} + + {item.type === "SCHEDULE" && <div style={itemContentStyle}> - <i style={{fontSize:"12px"}} className={`fa fa-user su-${item.status}-icon`} ></i> - {isStationView? - <span>{`${item.project} - ${item.suId?item.suId:item.id}`}</span>: - <span>{`${item.project} - ${item.suId?item.suId:item.id} - ${item.name} - ${item.band} - ${item.on_sky_duration}`}</span> + <i style={{ fontSize: "12px" }} className={`fa fa-user su-${item.status}-icon`} ></i> + {isStationView ? + <span>{`${item.project} - ${item.suId ? item.suId : item.id}`}</span> : + <span>{`${item.project} - ${item.suId ? item.suId : item.id} - ${item.name} - ${item.band} - ${item.on_sky_duration}`}</span> } </div> } - { (item.type === "TASK" || item.type==="STATION_TASK") && + {(item.type === "TASK" || item.type === "STATION_TASK") && <div style={itemContentStyle}> - {isStationView? - <span>{`${item.project} - ${item.suId}`}</span>: - <span>{`${item.project} - ${item.suId} - ${item.taskId} - ${item.name} - ${item.controlId} - ${item.typeValue} ${item.band?'- '+ item.band:''} - ${item.duration}`}</span> + {isStationView ? + <span>{`${item.project} - ${item.suId}`}</span> : + <span>{`${item.project} - ${item.suId} - ${item.taskId} - ${item.name} - ${item.controlId} - ${item.typeValue} ${item.band ? '- ' + item.band : ''} - ${item.duration}`}</span> } </div> } - { (item.type === "SUNTIME" || item.type === "RESERVATION") && - <div style={itemContentStyle}><span>{item.actType}</span> - {item.type === "RESERVATION" && !isStationView && - <div style={itemContentStyle}><span>{item.desc}</span></div> } - </div> } - - {itemContext.useResizeHandle ? <div {...rightResizeProps} /> : null} - </div> + {(item.type === "SUNTIME" || item.type === "RESERVATION") && + <div style={itemContentStyle}><span>{item.actType}</span> + {item.type === "RESERVATION" && !isStationView && + <div style={itemContentStyle}><span>{item.desc}</span></div>} + </div>} + + {itemContext.useResizeHandle ? <div {...rightResizeProps} /> : null} + </div> ); } - + /** Overriding function to pass to timeline component for zoom activities */ onZoom(timelineContext) { // Update to the timeline values based on pre-defined zoom on mouse scroll @@ -872,35 +881,31 @@ export class CalendarTimeline extends Component { let startTime = moment(timelineContext.visibleTimeStart); let endTime = moment(timelineContext.visibleTimeEnd); const zoomTimeDiff = endTime.diff(startTime, 'seconds'); - const prevZoomLevel = _.find(ZOOM_LEVELS, {'name': this.state.zoomLevel}); + const prevZoomLevel = _.find(ZOOM_LEVELS, { 'name': this.state.zoomLevel }); let zoomIndex = ZOOM_LEVELS.indexOf(prevZoomLevel); - if (zoomTimeDiff < prevZoomLevel.value && zoomIndex>0) { + if (zoomTimeDiff < prevZoomLevel.value && zoomIndex > 0) { zoomIndex--; - } else if (endTime.diff(startTime, 'seconds') > prevZoomLevel.value && zoomIndex<ZOOM_LEVELS.length-2) { + } else if (endTime.diff(startTime, 'seconds') > prevZoomLevel.value && zoomIndex < ZOOM_LEVELS.length - 2) { zoomIndex++; } this.changeZoomLevel(ZOOM_LEVELS[zoomIndex].name, true) } - } else { - this.setState({isTimelineZoom: true}); + } else { + this.setState({ isTimelineZoom: true }); } } - /** Override function to pass to timeline component for custom action when timeline boundary changes */ - onBoundsChange(canvasTimeStart, canvasTimeEnd) { - // To be implemented for lazy loading items - } /** Overriding function to pass to timeline component for custom actions when visible time changes */ onTimeChange(visibleTimeStart, visibleTimeEnd, updateScrollCanvas) { let newVisibleTimeStart = moment(visibleTimeStart).utc(); let newVisibleTimeEnd = moment(visibleTimeEnd).utc(); if (this.state.viewType === UIConstants.timeline.types.WEEKVIEW) { - const visibleTimeDiff = (visibleTimeEnd - visibleTimeStart)/1000; + const visibleTimeDiff = (visibleTimeEnd - visibleTimeStart) / 1000; if (newVisibleTimeStart.isBefore(this.state.timelineStartDate)) { newVisibleTimeStart = this.state.timelineStartDate.clone(); newVisibleTimeEnd = newVisibleTimeStart.clone().add(visibleTimeDiff, 'seconds'); - } else if (newVisibleTimeEnd.isAfter(this.state.timelineEndDate)) { + } else if (newVisibleTimeEnd.isAfter(this.state.timelineEndDate)) { newVisibleTimeEnd = this.state.timelineEndDate.clone(); newVisibleTimeStart = newVisibleTimeEnd.clone().add((-1 * visibleTimeDiff), 'seconds'); } @@ -909,11 +914,12 @@ export class CalendarTimeline extends Component { updateScrollCanvas(newVisibleTimeStart.valueOf(), newVisibleTimeEnd.valueOf()); this.changeDateRange(newVisibleTimeStart, newVisibleTimeEnd); // this.setState({defaultStartTime: moment(visibleTimeStart), defaultEndTime: moment(visibleTimeEnd)}) - this.setState({defaultStartTime: newVisibleTimeStart, defaultEndTime: newVisibleTimeEnd, - zoomRange: this.getZoomRange(newVisibleTimeStart, newVisibleTimeEnd) - }); + this.setState({ + defaultStartTime: newVisibleTimeStart, defaultEndTime: newVisibleTimeEnd, + zoomRange: this.getZoomRange(newVisibleTimeStart, newVisibleTimeEnd) + }); if (this.timelineUIAttributes && this.state.viewType === UIConstants.timeline.types.NORMAL) { - let dateRange = {startTime: newVisibleTimeStart, endTime: newVisibleTimeEnd}; + let dateRange = { startTime: newVisibleTimeStart, endTime: newVisibleTimeEnd }; this.timelineUIAttributes.dateRange = dateRange; this.timelineCommonUtils.storeUIAttributes(this.timelineUIAttributes); } @@ -934,13 +940,13 @@ export class CalendarTimeline extends Component { * @param {Object} item */ onItemMouseOver(evt, item) { - if ((item.type==="SCHEDULE" || item.type==="TASK" || item.type==="STATION_TASK" || item.type==="RESERVATION") - && this.props.itemMouseOverCallback) { + if ((item.type === "SCHEDULE" || item.type === "TASK" || item.type === "STATION_TASK" || item.type === "RESERVATION") + && this.props.itemMouseOverCallback) { // this.setState({mouseEvent: true}); this.props.itemMouseOverCallback(evt, item); - } else if (this.state.viewType === UIConstants.timeline.types.WEEKVIEW && item.type === "SUNTIME") { + } else if (this.state.viewType === UIConstants.timeline.types.WEEKVIEW && item.type === "SUNTIME") { // For week view set the group id to identify the row date - this.setState({onRow: item.group}); + this.setState({ onRow: item.group }); } } @@ -949,8 +955,8 @@ export class CalendarTimeline extends Component { * @param {Object} item */ onItemMouseOut(evt, item) { - if ((item.type==="SCHEDULE" || item.type==="TASK"|| item.type==="STATION_TASK" || item.type==="RESERVATION") - && this.props.itemMouseOutCallback) { + if ((item.type === "SCHEDULE" || item.type === "TASK" || item.type === "STATION_TASK" || item.type === "RESERVATION") + && this.props.itemMouseOutCallback) { // this.setState({mouseEvent: true}); this.props.itemMouseOutCallback(evt); } @@ -965,14 +971,14 @@ export class CalendarTimeline extends Component { * @param {moment} weekDay - Day of the week displayed on the timeline for which all SUs start and end time are set to display in different rows. */ async changeDateRange(startTime, endTime, refreshData, weekDay) { - if (this.props.showSunTimings && this.state.viewType===UIConstants.timeline.types.NORMAL && !this.loadingNormalSuntimes) { + if (this.props.showSunTimings && this.state.viewType === UIConstants.timeline.types.NORMAL && !this.loadingNormalSuntimes) { this.setNormalSuntimings(startTime, endTime); } const result = await this.props.dateRangeCallback(startTime, endTime, refreshData, weekDay); if (!this.props.showSunTimings && this.state.viewType === UIConstants.timeline.types.NORMAL) { result.items = await this.addStationSunTimes(startTime, endTime, result.group, result.items); result.items = _.orderBy(result.items, ['type'], ['desc']); - } else if (this.state.viewType === UIConstants.timeline.types.WEEKVIEW && !this.loadingWeekSunTimes) { + } else if (this.state.viewType === UIConstants.timeline.types.WEEKVIEW && !this.loadingWeekSunTimes) { let group = DEFAULT_GROUP.concat(result.group); result.items = await this.addWeekSunTimes(startTime, endTime, group, result.items); } @@ -986,11 +992,11 @@ export class CalendarTimeline extends Component { * @param {moment} endTime */ async setNormalSuntimings(startTime, endTime) { - let sunRiseTimings = [], sunSetTimings = [], sunTimeMap={}; + let sunRiseTimings = [], sunSetTimings = [], sunTimeMap = {}; const noOfDays = endTime.diff(startTime, 'days'); if (!this.loadingNormalSuntimes) { this.loadingNormalSuntimes = true; - for (const number of _.range(noOfDays+3)) { // Added 3 to have suntimes of day before start time and day after end time so that for small time duration also, suntimes will be available. + for (const number of _.range(noOfDays + 3)) { // Added 3 to have suntimes of day before start time and day after end time so that for small time duration also, suntimes will be available. let prevStartTime = startTime.clone().add(-1, 'days'); const date = prevStartTime.clone().add(number, 'days').hours(12).minutes(0).seconds(0); const formattedDate = date.format("YYYY-MM-DD"); @@ -1000,18 +1006,18 @@ export class CalendarTimeline extends Component { const sunriseEndTime = moment.utc(timings.sun_rise.end.split('.')[0]); const sunsetStartTime = moment.utc(timings.sun_set.start.split('.')[0]); const sunsetEndTime = moment.utc(timings.sun_set.end.split('.')[0]); - const sunriseTime = {start: sunriseStartTime, end: sunriseEndTime}; - const sunsetTime = {start: sunsetStartTime, end: sunsetEndTime}; + const sunriseTime = { start: sunriseStartTime, end: sunriseEndTime }; + const sunsetTime = { start: sunsetStartTime, end: sunsetEndTime }; // if (moment.utc(timings.sunriseEndTime).isAfter(startTime)) { - sunRiseTimings.push(sunriseTime); + sunRiseTimings.push(sunriseTime); // } // if (moment.utc(timings.sunsetStartTime).isBefore(endTime)) { - sunSetTimings.push(sunsetTime); + sunSetTimings.push(sunsetTime); // } - sunTimeMap[formattedDate] = {sunrise: sunriseTime, sunset: sunsetTime}; - this.setState({sunRiseTimings: sunRiseTimings, sunSetTimings: sunSetTimings, sunTimeMap: sunTimeMap}); + sunTimeMap[formattedDate] = { sunrise: sunriseTime, sunset: sunsetTime }; + this.setState({ sunRiseTimings: sunRiseTimings, sunSetTimings: sunSetTimings, sunTimeMap: sunTimeMap }); } - if (number === (noOfDays+2)) { + if (number === (noOfDays + 2)) { this.loadingNormalSuntimes = false; } } @@ -1029,24 +1035,26 @@ export class CalendarTimeline extends Component { const noOfDays = endTime.diff(startTime, 'days'); let sunItems = _.cloneDeep(items); this.loadingStationSunTimes = true; - for (const number of _.range(noOfDays+1)) { + for (const number of _.range(noOfDays + 1)) { for (const station of stationGroup) { if (!this.componentUnmounting) { const date = startTime.clone().add(number, 'days').hours(12).minutes(0).seconds(0); const timings = await UtilService.getSunTimings(date.format("YYYY-MM-DD"), station.id); if (timings && timings.sun_rise && timings.sun_set) { - let sunriseItem = { id: `sunrise-${number}-${station.id}`, - group: station.id, - // title: `${timings.sun_rise.start} to ${timings.sun_rise.end}`, - title: "", - project: "", - name: "", - duration: "", - start_time: moment.utc(timings.sun_rise.start), - end_time: moment.utc(timings.sun_rise.end), - bgColor: "yellow", - selectedBgColor: "yellow", - type: "SUNTIME"}; + let sunriseItem = { + id: `sunrise-${number}-${station.id}`, + group: station.id, + // title: `${timings.sun_rise.start} to ${timings.sun_rise.end}`, + title: "", + project: "", + name: "", + duration: "", + start_time: moment.utc(timings.sun_rise.start), + end_time: moment.utc(timings.sun_rise.end), + bgColor: "yellow", + selectedBgColor: "yellow", + type: "SUNTIME" + }; sunItems.push(sunriseItem); let sunsetItem = _.cloneDeep(sunriseItem); sunsetItem.id = `sunset-${number}-${station.id}`; @@ -1084,23 +1092,25 @@ export class CalendarTimeline extends Component { dayItem.bgColor = "white"; dayItem.selectedBgColor = "white"; sunItems.push(dayItem); - } else { + } else { /* If no sunrise and sunset, show it as night time. Later it should be done as either day or night. */ - let befSunriseItem = { id: `bef-sunrise-${number}-${station.id}`, - group: station.id, - // title: `${timings.sun_rise.start} to ${timings.sun_rise.end}`, - title: "", - project: "", - name: "", - duration: "", - start_time: moment.utc(date.format("YYYY-MM-DD 00:00:00")), - end_time: moment.utc(date.format("YYYY-MM-DD 23:59:59")), - bgColor: "grey", - selectedBgColor: "grey", - type: "SUNTIME"}; + let befSunriseItem = { + id: `bef-sunrise-${number}-${station.id}`, + group: station.id, + // title: `${timings.sun_rise.start} to ${timings.sun_rise.end}`, + title: "", + project: "", + name: "", + duration: "", + start_time: moment.utc(date.format("YYYY-MM-DD 00:00:00")), + end_time: moment.utc(date.format("YYYY-MM-DD 23:59:59")), + bgColor: "grey", + selectedBgColor: "grey", + type: "SUNTIME" + }; sunItems.push(befSunriseItem); } - } else { + } else { break; } } @@ -1130,18 +1140,20 @@ export class CalendarTimeline extends Component { const sunsetStart = moment.utc(timings.sun_set.start); const sunsetEnd = moment.utc(timings.sun_set.end); if (timings) { - let sunriseItem = { id: `sunrise-${weekDay.id}`, - group: weekDay.id, - // title: `${timings.sun_rise.start} to ${timings.sun_rise.end}`, - title: "", - project: "", - name: "", - duration: "", - start_time: startTime.clone().hours(sunriseStart.hours()).minutes(sunriseStart.minutes()).seconds(sunriseStart.seconds()), - end_time: startTime.clone().hours(sunriseEnd.hours()).minutes(sunriseEnd.minutes()).seconds(sunriseEnd.seconds()), - bgColor: "yellow", - selectedBgColor: "yellow", - type: "SUNTIME"}; + let sunriseItem = { + id: `sunrise-${weekDay.id}`, + group: weekDay.id, + // title: `${timings.sun_rise.start} to ${timings.sun_rise.end}`, + title: "", + project: "", + name: "", + duration: "", + start_time: startTime.clone().hours(sunriseStart.hours()).minutes(sunriseStart.minutes()).seconds(sunriseStart.seconds()), + end_time: startTime.clone().hours(sunriseEnd.hours()).minutes(sunriseEnd.minutes()).seconds(sunriseEnd.seconds()), + bgColor: "yellow", + selectedBgColor: "yellow", + type: "SUNTIME" + }; sunItems.push(sunriseItem); let sunsetItem = _.cloneDeep(sunriseItem); sunsetItem.id = `sunset-${weekDay.id}`; @@ -1197,38 +1209,40 @@ export class CalendarTimeline extends Component { setLive(isLive) { if (isLive) { this.timelineUIAttributes.isLive = isLive; - } else { + } else { delete this.timelineUIAttributes["isLive"]; } this.timelineCommonUtils.storeUIAttributes(this.timelineUIAttributes); - this.setState({'isLive': isLive}); + this.setState({ 'isLive': isLive }); } /** * Resets the timeline view to default zoom and move to the current timeline */ - async resetToCurrentTime(){ - if (this.state.viewType===UIConstants.timeline.types.NORMAL) { + async resetToCurrentTime() { + if (this.state.viewType === UIConstants.timeline.types.NORMAL) { const startTime = moment().utc().add(-24, 'hours'); const endTime = moment().utc().add(24, 'hours'); let result = await this.changeDateRange(startTime, endTime); let group = DEFAULT_GROUP.concat(result.group); - this.setState({defaultStartTime: startTime, defaultEndTime: endTime, - zoomRange: this.getZoomRange(startTime, endTime), - zoomLevel: DEFAULT_ZOOM_LEVEL, dayHeaderVisible: true, - weekHeaderVisible: false, lstDateHeaderUnit: "hour", - group: group, items: result.items}); + this.setState({ + defaultStartTime: startTime, defaultEndTime: endTime, + zoomRange: this.getZoomRange(startTime, endTime), + zoomLevel: DEFAULT_ZOOM_LEVEL, dayHeaderVisible: true, + weekHeaderVisible: false, lstDateHeaderUnit: "hour", + group: group, items: result.items + }); // If reset button is clicked, remove the date range and zoom level from local storage delete this.timelineUIAttributes["dateRange"]; delete this.timelineUIAttributes["zoomLevel"]; this.timelineCommonUtils.storeUIAttributes(this.timelineUIAttributes); - } else { - await this.setState({showCustomDate: false, reset: true}); + } else { + await this.setState({ showCustomDate: false, reset: true }); const weekDay = moment.utc(moment(this.state.weekDay[0]).format(UTC_DATE_FORMAT)); - if (moment().utc().week()-this.state.timelineStartDate.week() !== 0 || moment().utc().diff(weekDay, 'day') !== 0) { - await this.setState({weekDay: [moment().utc().format(UTC_DATE_FORMAT)]}); + if (moment().utc().week() - this.state.timelineStartDate.week() !== 0 || moment().utc().diff(weekDay, 'day') !== 0) { + await this.setState({ weekDay: [moment().utc().format(UTC_DATE_FORMAT)] }); this.changeWeek(null, true); - } else { + } else { this.changeZoomLevel("1 Day"); } } @@ -1241,46 +1255,48 @@ export class CalendarTimeline extends Component { * @param {boolean} isTimelineZoom */ async changeZoomLevel(zoomLevel, isTimelineZoom) { - zoomLevel = zoomLevel?zoomLevel: DEFAULT_ZOOM_LEVEL; - const newZoomLevel = _.find(ZOOM_LEVELS, {'name': zoomLevel}); - this.setState({isTimelineZoom: isTimelineZoom}); + zoomLevel = zoomLevel ? zoomLevel : DEFAULT_ZOOM_LEVEL; + const newZoomLevel = _.find(ZOOM_LEVELS, { 'name': zoomLevel }); + this.setState({ isTimelineZoom: isTimelineZoom }); let startTime = this.state.defaultStartTime; let endTime = this.state.defaultEndTime; if (zoomLevel === 'Custom') { if (this.state.prevZoomRange) { this.setZoomRange(this.state.prevZoomRange); } - } else { + } else { const visibleDuration = endTime.diff(startTime, 'seconds'); if (newZoomLevel.value < visibleDuration) { - startTime = startTime.add(1 * (visibleDuration-newZoomLevel.value)/2, 'seconds'); - endTime = endTime.add(-1 * (visibleDuration-newZoomLevel.value)/2, 'seconds'); - } else { - startTime = startTime.add(-1 * (newZoomLevel.value-visibleDuration)/2, 'seconds'); - endTime = endTime.add(1 * (newZoomLevel.value-visibleDuration)/2, 'seconds'); + startTime = startTime.add(1 * (visibleDuration - newZoomLevel.value) / 2, 'seconds'); + endTime = endTime.add(-1 * (visibleDuration - newZoomLevel.value) / 2, 'seconds'); + } else { + startTime = startTime.add(-1 * (newZoomLevel.value - visibleDuration) / 2, 'seconds'); + endTime = endTime.add(1 * (newZoomLevel.value - visibleDuration) / 2, 'seconds'); } if (this.state.viewType === UIConstants.timeline.types.WEEKVIEW) { - if ( zoomLevel==="1 Day") { + if (zoomLevel === "1 Day") { startTime = this.state.timelineStartDate.clone(); endTime = startTime.clone().add(newZoomLevel.value, 'seconds'); - } else { + } else { if (startTime.isBefore(this.state.timelineStartDate)) { startTime = this.state.timelineStartDate.clone(); endTime = startTime.clone().add(newZoomLevel.value, 'seconds'); - } else if (endTime.isAfter(this.state.timelineEndDate)) { + } else if (endTime.isAfter(this.state.timelineEndDate)) { endTime = this.state.timelineEndDate.clone(); - startTime = endTime.clone().add(-1 * ( newZoomLevel.value), 'seconds'); + startTime = endTime.clone().add(-1 * (newZoomLevel.value), 'seconds'); } } } this.loadLSTDateHeaderMap(startTime, endTime, 'hour'); let result = await this.changeDateRange(startTime, endTime); let group = DEFAULT_GROUP.concat(result.group); - this.setState({zoomLevel: zoomLevel, defaultStartTime: startTime, defaultEndTime: endTime, - isTimelineZoom: true, - zoomRange: this.getZoomRange(startTime, endTime), - dayHeaderVisible: true, weekHeaderVisible: false, lstDateHeaderUnit: 'hour', - group: group, items: result.items}); + this.setState({ + zoomLevel: zoomLevel, defaultStartTime: startTime, defaultEndTime: endTime, + isTimelineZoom: true, + zoomRange: this.getZoomRange(startTime, endTime), + dayHeaderVisible: true, weekHeaderVisible: false, lstDateHeaderUnit: 'hour', + group: group, items: result.items + }); if (this.state.viewType === UIConstants.timeline.types.NORMAL) { // Store selected zoom level to restore when the page is reloaded this.timelineUIAttributes.zoomLevel = zoomLevel; @@ -1295,25 +1311,27 @@ export class CalendarTimeline extends Component { async moveLeft() { let visibleTimeStart = this.state.defaultStartTime.utc(); let visibleTimeEnd = this.state.defaultEndTime.utc(); - const visibleTimeDiff = visibleTimeEnd.valueOf()-visibleTimeStart.valueOf(); - let secondsToMove = visibleTimeDiff / 1000 / 10 ; + const visibleTimeDiff = visibleTimeEnd.valueOf() - visibleTimeStart.valueOf(); + let secondsToMove = visibleTimeDiff / 1000 / 10; let newVisibleTimeStart = visibleTimeStart.clone().add(-1 * secondsToMove, 'seconds'); let newVisibleTimeEnd = visibleTimeEnd.clone().add(-1 * secondsToMove, 'seconds'); if (this.state.viewType === UIConstants.timeline.types.WEEKVIEW && newVisibleTimeStart.isBefore(this.state.timelineStartDate)) { newVisibleTimeStart = this.state.timelineStartDate.clone().hours(0).minutes(0).seconds(0); - newVisibleTimeEnd = newVisibleTimeStart.clone().add(visibleTimeDiff/1000, 'seconds'); + newVisibleTimeEnd = newVisibleTimeStart.clone().add(visibleTimeDiff / 1000, 'seconds'); } let result = await this.changeDateRange(newVisibleTimeStart, newVisibleTimeEnd); this.loadLSTDateHeaderMap(newVisibleTimeStart, newVisibleTimeEnd, 'hour'); let group = DEFAULT_GROUP.concat(result.group); - this.setState({defaultStartTime: newVisibleTimeStart, - defaultEndTime: newVisibleTimeEnd, - zoomRange: this.getZoomRange(newVisibleTimeStart, newVisibleTimeEnd), - group: group, items: result.items}); - // Store the selected date range and remove selected zoom level + this.setState({ + defaultStartTime: newVisibleTimeStart, + defaultEndTime: newVisibleTimeEnd, + zoomRange: this.getZoomRange(newVisibleTimeStart, newVisibleTimeEnd), + group: group, items: result.items + }); + // Store the selected date range and remove selected zoom level if (this.timelineUIAttributes && this.state.viewType === UIConstants.timeline.types.NORMAL) { - let dateRange = {startTime: newVisibleTimeStart, endTime: newVisibleTimeEnd}; + let dateRange = { startTime: newVisibleTimeStart, endTime: newVisibleTimeEnd }; this.timelineUIAttributes.dateRange = dateRange; this.timelineCommonUtils.storeUIAttributes(this.timelineUIAttributes); } @@ -1325,24 +1343,26 @@ export class CalendarTimeline extends Component { async moveRight() { let visibleTimeStart = this.state.defaultStartTime.utc(); let visibleTimeEnd = this.state.defaultEndTime.utc(); - const visibleTimeDiff = visibleTimeEnd.valueOf()-visibleTimeStart.valueOf(); - const secondsToMove = visibleTimeDiff / 1000 / 10 ; + const visibleTimeDiff = visibleTimeEnd.valueOf() - visibleTimeStart.valueOf(); + const secondsToMove = visibleTimeDiff / 1000 / 10; let newVisibleTimeStart = visibleTimeStart.clone().add(1 * secondsToMove, 'seconds'); let newVisibleTimeEnd = visibleTimeEnd.clone().add(1 * secondsToMove, 'seconds'); if (this.state.viewType === UIConstants.timeline.types.WEEKVIEW && newVisibleTimeEnd.isAfter(this.state.timelineEndDate)) { newVisibleTimeEnd = this.state.timelineEndDate.clone().hours(23).minutes(59).minutes(59); - newVisibleTimeStart = newVisibleTimeEnd.clone().add((-1 * visibleTimeDiff/1000), 'seconds'); + newVisibleTimeStart = newVisibleTimeEnd.clone().add((-1 * visibleTimeDiff / 1000), 'seconds'); } let result = await this.changeDateRange(newVisibleTimeStart, newVisibleTimeEnd); this.loadLSTDateHeaderMap(newVisibleTimeStart, newVisibleTimeEnd, 'hour'); let group = DEFAULT_GROUP.concat(result.group); - this.setState({defaultStartTime: newVisibleTimeStart, - defaultEndTime: newVisibleTimeEnd, - zoomRange: this.getZoomRange(newVisibleTimeStart, newVisibleTimeEnd), - group: group, items: result.items}); + this.setState({ + defaultStartTime: newVisibleTimeStart, + defaultEndTime: newVisibleTimeEnd, + zoomRange: this.getZoomRange(newVisibleTimeStart, newVisibleTimeEnd), + group: group, items: result.items + }); if (this.timelineUIAttributes && this.state.viewType === UIConstants.timeline.types.NORMAL) { - let dateRange = {startTime: newVisibleTimeStart, endTime: newVisibleTimeEnd}; + let dateRange = { startTime: newVisibleTimeStart, endTime: newVisibleTimeEnd }; this.timelineUIAttributes.dateRange = dateRange; this.timelineCommonUtils.storeUIAttributes(this.timelineUIAttributes); } @@ -1353,10 +1373,10 @@ export class CalendarTimeline extends Component { */ zoomIn() { let prevZoomLevel = this.state.zoomLevel; - const prevZoomObject = _.find(this.ZOOM_LEVELS, {'name': prevZoomLevel}); + const prevZoomObject = _.find(this.ZOOM_LEVELS, { 'name': prevZoomLevel }); const prevZoomIndex = this.ZOOM_LEVELS.indexOf(prevZoomObject); if (prevZoomIndex > 0) { - this.changeZoomLevel(this.ZOOM_LEVELS[prevZoomIndex-1].name, false); + this.changeZoomLevel(this.ZOOM_LEVELS[prevZoomIndex - 1].name, false); } } @@ -1365,11 +1385,11 @@ export class CalendarTimeline extends Component { */ zoomOut() { let prevZoomLevel = this.state.zoomLevel; - const prevZoomObject = _.find(this.ZOOM_LEVELS, {'name': prevZoomLevel}); + const prevZoomObject = _.find(this.ZOOM_LEVELS, { 'name': prevZoomLevel }); const prevZoomIndex = this.ZOOM_LEVELS.indexOf(prevZoomObject); - const maxZoomOutLevel = this.ZOOM_LEVELS.length-(this.state.viewType===UIConstants.timeline.types.NORMAL?2:1); + const maxZoomOutLevel = this.ZOOM_LEVELS.length - (this.state.viewType === UIConstants.timeline.types.NORMAL ? 2 : 1); if (prevZoomIndex < maxZoomOutLevel) { - this.changeZoomLevel(this.ZOOM_LEVELS[prevZoomIndex+1].name, false); + this.changeZoomLevel(this.ZOOM_LEVELS[prevZoomIndex + 1].name, false); } } @@ -1378,9 +1398,9 @@ export class CalendarTimeline extends Component { * calls back parent to get updated group and item records, LST date header values * @param {array} value - array of moment object */ - async setZoomRange(value, refreshTimeline){ + async setZoomRange(value, refreshTimeline) { let startDate, endDate = null; - if (value && value.length>0) { + if (value && value.length > 0) { // Set all values only when both range values available in the array else just set the value to reflect in the date selection component if (value[1] && refreshTimeline) { startDate = moment.utc(moment(value[0]).format("YYYY-MM-DD HH:mm:ss")); @@ -1389,34 +1409,35 @@ export class CalendarTimeline extends Component { let weekHeaderVisible = this.state.weekHeaderVisible; let lstDateHeaderUnit = this.state.lstDateHeaderUnit; let rangeDays = endDate.diff(startDate, 'days'); - dayHeaderVisible = rangeDays > 35?false: true; - weekHeaderVisible = rangeDays > 35?true: false; - lstDateHeaderUnit = rangeDays > 35?"day":"hour"; - this.setState({zoomRange:value, prevZoomRange:value, - defaultStartTime: startDate, defaultEndTime: endDate, - zoomLevel: ZOOM_LEVELS[ZOOM_LEVELS.length-1].name, isTimelineZoom: false, - dayHeaderVisible: dayHeaderVisible, weekHeaderVisible: weekHeaderVisible, - lstDateHeaderUnit: lstDateHeaderUnit - }); + dayHeaderVisible = rangeDays > 35 ? false : true; + weekHeaderVisible = rangeDays > 35 ? true : false; + lstDateHeaderUnit = rangeDays > 35 ? "day" : "hour"; + this.setState({ + zoomRange: value, prevZoomRange: value, + defaultStartTime: startDate, defaultEndTime: endDate, + zoomLevel: ZOOM_LEVELS[ZOOM_LEVELS.length - 1].name, isTimelineZoom: false, + dayHeaderVisible: dayHeaderVisible, weekHeaderVisible: weekHeaderVisible, + lstDateHeaderUnit: lstDateHeaderUnit + }); const result = await this.changeDateRange(startDate, endDate); if (this.state.defaultStartTime === result.startTime && this.state.defaultEndTime === result.endTime) { let group = DEFAULT_GROUP.concat(result.group); - this.setState({group: group, items: result.items}); + this.setState({ group: group, items: result.items }); this.loadLSTDateHeaderMap(startDate, endDate, lstDateHeaderUnit); // Store the selected date range and remove selected zoom level if (this.timelineUIAttributes && this.state.viewType === UIConstants.timeline.types.NORMAL) { - let dateRange = {startTime: startDate, endTime: endDate}; + let dateRange = { startTime: startDate, endTime: endDate }; this.timelineUIAttributes.dateRange = dateRange; delete this.timelineUIAttributes["zoomLevel"]; this.timelineCommonUtils.storeUIAttributes(this.timelineUIAttributes); } } - } else { - this.setState({zoomRange: value}); + } else { + this.setState({ zoomRange: value }); } - } else if (value && value.length===0) { - this.setState({zoomRange: this.getZoomRange(this.state.defaultStartTime, this.state.defaultEndTime)}); - } else { + } else if (value && value.length === 0) { + this.setState({ zoomRange: this.getZoomRange(this.state.defaultStartTime, this.state.defaultEndTime) }); + } else { this.resetToCurrentTime(); } } @@ -1427,8 +1448,8 @@ export class CalendarTimeline extends Component { * @param {Array} value - array of Date object. */ validateRange(value) { - if (value && value.length===1) { - this.setState({zoomRange: this.getZoomRange(this.state.defaultStartTime, this.state.defaultEndTime)}); + if (value && value.length === 1) { + this.setState({ zoomRange: this.getZoomRange(this.state.defaultStartTime, this.state.defaultEndTime) }); } } @@ -1440,7 +1461,7 @@ export class CalendarTimeline extends Component { */ getZoomRange(startTime, endTime) { return [moment(startTime.format(UIConstants.CALENDAR_DATETIME_FORMAT)).toDate(), - moment(endTime.format(UIConstants.CALENDAR_DATETIME_FORMAT)).toDate()]; + moment(endTime.format(UIConstants.CALENDAR_DATETIME_FORMAT)).toDate()]; } /** @@ -1451,7 +1472,7 @@ export class CalendarTimeline extends Component { const zoomRange = this.state.zoomRange; if (zoomRange && zoomRange.length === 2) { return `${moment(zoomRange[0]).format(UIConstants.CALENDAR_DATETIME_FORMAT)} to ${moment(zoomRange[1]).format(UIConstants.CALENDAR_DATETIME_FORMAT)}`; - } else { + } else { return 'Select Date Range' } } @@ -1465,10 +1486,10 @@ export class CalendarTimeline extends Component { // If the scroll occurs due to live update timeline change, scroll to the previous manual scroll position if (this.state.liveChange) { window.scrollTo(0, prevScrollPosition); - this.setState({liveChange: false, scrollPosition: prevScrollPosition}); - } else { + this.setState({ liveChange: false, scrollPosition: prevScrollPosition }); + } else { // If scrolled manually, store the scroll position - this.setState({scrollPosition: window.scrollY}); + this.setState({ scrollPosition: window.scrollY }); } } @@ -1480,22 +1501,22 @@ export class CalendarTimeline extends Component { async changeWeek(direction, fromDatepicker) { this.timelineUIAttributes["showCustomDate"] = this.state.showCustomDate; this.timelineCommonUtils.storeUIAttributes(this.timelineUIAttributes); - this.setState({changingWeek: true}); + this.setState({ changingWeek: true }); // New week day selected let weekDay = moment.utc(moment(this.state.weekDay[0]).format(UTC_DATE_FORMAT)); if (fromDatepicker) { // Number of the new week day selected (0..6 for Sunday to Saturday) let newWeekDayNo = weekDay.day(); // To calculate the weeks between, for Saturday consider the first one in the group as it has to display the next week dates. - direction = Math.ceil(weekDay.diff(this.state.group[(newWeekDayNo===6?2:newWeekDayNo+3)].value, 'days')/7); - } else { + direction = Math.ceil(weekDay.diff(this.state.group[(newWeekDayNo === 6 ? 2 : newWeekDayNo + 3)].value, 'days') / 7); + } else { weekDay.add(direction * 7, 'days'); } - let startDate = (this.state.showCustomDate) ? weekDay.clone() : this.state.reset?weekDay.clone().day(5).add(-7, 'days'):this.state.group[1].value.clone().add(direction * 7, 'days'); + let startDate = (this.state.showCustomDate) ? weekDay.clone() : this.state.reset ? weekDay.clone().day(5).add(-7, 'days') : this.state.group[1].value.clone().add(direction * 7, 'days'); let endDate = startDate.clone().add(10, 'days').hours(23).minutes(59).seconds(59); let timelineStart = weekDay.clone(); let timelineEnd = weekDay.clone().hours(23).minutes(59).seconds(59); - this.setState({weekDay: [weekDay.format(UTC_DATE_FORMAT)]}); + this.setState({ weekDay: [weekDay.format(UTC_DATE_FORMAT)] }); const result = await this.changeDateRange(startDate, endDate, true, weekDay); if (result.weekDay.format(UTC_DATE_FORMAT) === this.state.weekDay[0]) { let group = DEFAULT_GROUP.concat(result.group); @@ -1503,23 +1524,25 @@ export class CalendarTimeline extends Component { let weekHeaderVisible = this.state.weekHeaderVisible; let lstDateHeaderUnit = this.state.lstDateHeaderUnit; let rangeDays = endDate.diff(startDate, 'days'); - dayHeaderVisible = rangeDays > 35?false: true; - weekHeaderVisible = rangeDays > 35?true: false; - lstDateHeaderUnit = rangeDays > 35?"day":"hour"; + dayHeaderVisible = rangeDays > 35 ? false : true; + weekHeaderVisible = rangeDays > 35 ? true : false; + lstDateHeaderUnit = rangeDays > 35 ? "day" : "hour"; const items = this.state.showCustomDate ? result.items : await this.addWeekSunTimes(timelineStart, timelineEnd, group, result.items); - this.setState({defaultStartTime: timelineStart, defaultEndTime: timelineEnd, - timelineStartDate: timelineStart, timelineEndDate: timelineEnd, - zoomLevel: this.ZOOM_LEVELS[this.ZOOM_LEVELS.length-1].name, isTimelineZoom: false, - dayHeaderVisible: dayHeaderVisible, weekHeaderVisible: weekHeaderVisible, - lstDateHeaderUnit: lstDateHeaderUnit, group: group, items: items, - weekDay: [weekDay.format(UTC_DATE_FORMAT)]}); + this.setState({ + defaultStartTime: timelineStart, defaultEndTime: timelineEnd, + timelineStartDate: timelineStart, timelineEndDate: timelineEnd, + zoomLevel: this.ZOOM_LEVELS[this.ZOOM_LEVELS.length - 1].name, isTimelineZoom: false, + dayHeaderVisible: dayHeaderVisible, weekHeaderVisible: weekHeaderVisible, + lstDateHeaderUnit: lstDateHeaderUnit, group: group, items: items, + weekDay: [weekDay.format(UTC_DATE_FORMAT)] + }); this.loadLSTDateHeaderMap(startDate, endDate, lstDateHeaderUnit); - this.setState({isWeekLoading: false, changingWeek: false}); + this.setState({ isWeekLoading: false, changingWeek: false }); if (this.timelineUIAttributes) { // If the selected week day is the current day remove from storage so that when there is nothing stored, the current week will be displayed if (this.state.currentUTC.format(UTC_DATE_FORMAT) === weekDay.format(UTC_DATE_FORMAT)) { delete this.timelineUIAttributes["weekDay"]; - } else { + } else { this.timelineUIAttributes.weekDay = weekDay; } this.timelineCommonUtils.storeUIAttributes(this.timelineUIAttributes); @@ -1535,24 +1558,25 @@ export class CalendarTimeline extends Component { async updateTimeline(props) { if (!this.state.mouseEvent && !this.state.changingWeek) { // No need to update timeline items for mouseover and mouseout events // this.setState({ showSpinner: true }); - let group = DEFAULT_GROUP.concat(props.group); - if (!this.props.showSunTimings && this.state.viewType === UIConstants.timeline.types.NORMAL - // && !this.loadingStationSunTimes - && props.stationsViewToggle) { + let group = DEFAULT_GROUP.concat(props.group); + if (!this.props.showSunTimings && this.state.viewType === UIConstants.timeline.types.NORMAL + // && !this.loadingStationSunTimes + && props.stationsViewToggle) { props.items = await this.addStationSunTimes(this.state.defaultStartTime, this.state.defaultEndTime, props.group, props.items); props.items = _.orderBy(props.items, ['type'], ['desc']); - } else if(this.props.showSunTimings && this.state.viewType === UIConstants.timeline.types.NORMAL && !this.loadingNormalSuntimes) { + } else if (this.props.showSunTimings && this.state.viewType === UIConstants.timeline.types.NORMAL && !this.loadingNormalSuntimes) { this.setNormalSuntimings(this.state.defaultStartTime, this.state.defaultEndTime); - } else if (this.state.viewType === UIConstants.timeline.types.WEEKVIEW) { + } else if (this.state.viewType === UIConstants.timeline.types.WEEKVIEW) { props.items = await this.addWeekSunTimes(this.state.defaultStartTime, this.state.defaultEndTime, group, props.items); } - this.setState({group: group, showSpinner: false, items: _.orderBy(props.items, ['type'], ['desc']), + this.setState({ + group: group, showSpinner: false, items: _.orderBy(props.items, ['type'], ['desc']), onSkyViewToggle: props.onSkyViewToggle, stationsViewToggle: props.stationsViewToggle, selectedStationGroup: props.selectedStationGroup, reservationsViewToggle: props.reservationsViewToggle, reservationFilter: props.reservationFilter, taskToggle: props.taskToggle, suToggle: props.suToggle, selectedTaskTypes: props.selectedTaskTypes }); - } else { - this.setState({mouseEvent: false}); + } else { + this.setState({ mouseEvent: false }); } } @@ -1565,36 +1589,36 @@ export class CalendarTimeline extends Component { } : (value) => { // Set the selected date as the current week day and calculate the number of weeks between and change to the week - this.setState({weekDay: value, showCustomDate: true, reset: false}); + this.setState({ weekDay: value, showCustomDate: true, reset: false }); this.changeWeek(null, true); } - // console.log("rendering: ", this.state.showTimelineItems) + // console.log("rendering: ", this.state.showTimelineItems) return ( <React.Fragment> <div className="timeline-tools"> <Filters onSkyViewToggle={this.state.onSkyViewToggle} - setOnSkyViewToggle={this.state.setOnSkyViewToggle} - stationsViewToggle={this.state.stationsViewToggle} - setStationsViewToggle={this.state.setStationsViewToggle} - isStationTasksVisible={this.state.isStationTasksVisible} - changeViewBlocks={this.state.changeViewBlocks} - selectedStationGroup={this.state.selectedStationGroup} - mainStationGroupOptions={this.state.mainStationGroupOptions} - setSelectedStationGroup={this.state.setSelectedStationGroup} - suToggle={this.state.suToggle} - setSUToggle={this.state.setSUToggle} - taskToggle={this.state.taskToggle} - setTaskToggle={this.state.setTaskToggle} - selectedTaskTypes={this.state.selectedTaskTypes} - taskTypes={this.state.taskTypes} - setSelectedTaskTypes={this.state.setSelectedTaskTypes} - setGroupByProject={this.state.setGroupByProject} - isGroupedByProject={this.state.isGroupedByProject} - reservationsViewToggle={this.state.reservationsViewToggle} - setReservationsViewToggle={this.state.setReservationsViewToggle} - reservationFilter={this.state.reservationFilter} - setReservationFilter={this.state.setReservationFilter}/> + setOnSkyViewToggle={this.state.setOnSkyViewToggle} + stationsViewToggle={this.state.stationsViewToggle} + setStationsViewToggle={this.state.setStationsViewToggle} + isStationTasksVisible={this.state.isStationTasksVisible} + changeViewBlocks={this.state.changeViewBlocks} + selectedStationGroup={this.state.selectedStationGroup} + mainStationGroupOptions={this.state.mainStationGroupOptions} + setSelectedStationGroup={this.state.setSelectedStationGroup} + suToggle={this.state.suToggle} + setSUToggle={this.state.setSUToggle} + taskToggle={this.state.taskToggle} + setTaskToggle={this.state.setTaskToggle} + selectedTaskTypes={this.state.selectedTaskTypes} + taskTypes={this.state.taskTypes} + setSelectedTaskTypes={this.state.setSelectedTaskTypes} + setGroupByProject={this.state.setGroupByProject} + isGroupedByProject={this.state.isGroupedByProject} + reservationsViewToggle={this.state.reservationsViewToggle} + setReservationsViewToggle={this.state.setReservationsViewToggle} + reservationFilter={this.state.reservationFilter} + setReservationFilter={this.state.setReservationFilter} /> <DateTimeNavigator currentUTC={this.state.currentUTC} allowLive={isRange} @@ -1613,10 +1637,10 @@ export class CalendarTimeline extends Component { zoomInCallback={this.zoomOut} zoomLevel={this.state.zoomLevel} allZoomLevels={this.ZOOM_LEVELS} - onChangeZoomLevelCallback={this.changeZoomLevel}/> + onChangeZoomLevelCallback={this.changeZoomLevel} /> </div> - <div onMouseOut={e => this.cursorTime = null }> - <Timeline + <div onMouseOut={() => this.cursorTime = null}> + <Timeline groups={this.state.group} items={this.state.items} visibleTimeStart={this.state.defaultStartTime.valueOf()} @@ -1627,26 +1651,25 @@ export class CalendarTimeline extends Component { minZoom={this.state.minZoom} maxZoom={this.state.maxZoom} lineHeight={this.props.rowHeight || 50} itemHeightRatio={1} - sidebarWidth={this.props.sidebarWidth?this.props.sidebarWidth:this.state.sidebarWidth} + sidebarWidth={this.props.sidebarWidth ? this.props.sidebarWidth : this.state.sidebarWidth} timeSteps={this.state.timeSteps} onZoom={this.onZoom} - onBoundsChange={this.onBoundsChange} onTimeChange={this.onTimeChange} itemRenderer={this.renderItem} canMove={this.state.canMove} canResize={this.state.canResize} canChangeGroup={this.state.canChangeGroup}> <TimelineHeaders className="sticky"> - <SidebarHeader>{({ getRootProps }) => {return this.renderSidebarHeader({ getRootProps })}}</SidebarHeader> + <SidebarHeader>{({ getRootProps }) => { return this.renderSidebarHeader({ getRootProps }) }}</SidebarHeader> {this.state.weekHeaderVisible && - <DateHeader unit="Week" labelFormat="w"></DateHeader> } - { this.state.dayHeaderVisible && - <DateHeader unit="hour" intervalRenderer={this.renderDayHeader}></DateHeader> } + <DateHeader unit="Week" labelFormat="w"></DateHeader>} + {this.state.dayHeaderVisible && + <DateHeader unit="hour" intervalRenderer={this.renderDayHeader}></DateHeader>} <DateHeader unit={this.state.lstDateHeaderUnit} intervalRenderer={this.renderUTCDateHeader} ></DateHeader> {!this.state.isLSTDateHeaderLoading && // This method keeps updating the header labels, so that the LST values will be displayed after fetching from server <DateHeader unit={this.state.lstDateHeaderUnit} - intervalRenderer={({ getIntervalProps, intervalContext, data })=>{return this.renderLSTDateHeader({ getIntervalProps, intervalContext, data })}}> + intervalRenderer={({ getIntervalProps, intervalContext, data }) => { return this.renderLSTDateHeader({ getIntervalProps, intervalContext, data }) }}> </DateHeader> // This method will render once but will not update the values after fetching from server // <DateHeader unit={this.state.lstDateHeaderUnit} intervalRenderer={this.renderLSTDateHeader}></DateHeader> @@ -1663,28 +1686,28 @@ export class CalendarTimeline extends Component { <TimelineMarkers> {/* Current time line marker */} <CustomMarker date={this.state.currentUTC.valueOf()}> - {({ styles, date }) => { + {({ styles }) => { const customStyles = { - ...styles, - backgroundColor: 'green', - width: '2px', zIndex: 998 + ...styles, + backgroundColor: 'green', + width: '2px', zIndex: 998 } return <div style={customStyles} /> }} </CustomMarker> {/* Show sunrise and sunset markers for normal timeline view (Not station view and week view */} - {this.props.showSunTimings && this.state.viewType===UIConstants.timeline.types.NORMAL && + {this.props.showSunTimings && this.state.viewType === UIConstants.timeline.types.NORMAL && <> - {/* Sunrise time line markers */} - { this.renderSunriseMarkers(this.state.sunRiseTimings)} - {/* Sunset time line markers */} - { this.renderSunsetMarkers(this.state.sunSetTimings)} + {/* Sunrise time line markers */} + {this.renderSunriseMarkers(this.state.sunRiseTimings)} + {/* Sunset time line markers */} + {this.renderSunsetMarkers(this.state.sunSetTimings)} </> } - {this.state.showCursor? + {this.state.showCursor ? <CursorMarker> {this.renderCursor} - </CursorMarker>:""} + </CursorMarker> : ""} </TimelineMarkers> </Timeline> </div> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/Scheduled.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/Scheduled.js index 410034172517e2fa2561ebc805ceca1f3348c4ec..fee2b3196262be960ac2e9e0a6bb892797922e3b 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/Scheduled.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/Scheduled.js @@ -49,7 +49,7 @@ class Scheduled extends Component { {!this.props.readOnly && <div className="p-grid p-justify-start"> <div className="p-col-1"> <Button label="Cancel" className="p-button-danger" icon="pi pi-times" style={{ width: '90px' }} - onClick={(e) => {this.props.onCancel()}} /> + onClick={() => {this.props.onCancel()}} /> </div> </div>} </div> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/index.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/index.js index 81c1664f74ee11472495c4c9183cf81518289616..f094796cc9122827f4a163eaf02db298a6bf7e90 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/index.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/index.js @@ -24,7 +24,6 @@ import UtilService from '../../services/util.service'; import NotFound from '../../layout/components/NotFound'; import { appGrowl } from '../../layout/components/AppGrowl'; import Websocket from 'react-websocket'; -/* eslint-disable react-hooks/exhaustive-deps */ const RedirectionMap = { 'wait scheduled': { diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/ingesting.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/ingesting.js index 1a74f72d58a81c9bb4ca940683fbf56201b28bc8..f75b023f813b8cbed9c0b767ba549f624d0ee65b 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/ingesting.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/ingesting.js @@ -30,7 +30,7 @@ class Ingesting extends Component { <div className="col-lg-1 col-md-1 col-sm-12"></div> <label htmlFor="ingestMonitoring" className="col-lg-2 col-md-2 col-sm-12">Ingest Monitoring</label> <label className="col-lg-3 col-md-3 col-sm-12" > - <a rel="noopener noreferrer" href="http://lexar003.control.lofar:9632/" target="_blank">View Ingest Monitoring <span class="fas fa-desktop"></span></a> + <a rel="noopener noreferrer" href="http://lexar003.control.lofar:9632/" target="_blank">View Ingest Monitoring <span className="fas fa-desktop"></span></a> </label> </div> </div> @@ -41,7 +41,7 @@ class Ingesting extends Component { </div> <div className="btn-bar"> <Button label="Cancel" className="p-button-danger" icon="pi pi-times" style={{ width: '90px' }} - onClick={(e) => { this.props.onCancel() }} /> + onClick={() => { this.props.onCancel() }} /> </div> </div>} diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/processing.done.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/processing.done.js index cf6188b83ef2c608139c85d0f44d35416adb2ea8..9832b5964b4ec5dd68457677f85a019987a5c742 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/processing.done.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/processing.done.js @@ -34,14 +34,14 @@ class ProcessingDone extends Component { <div className="col-lg-1 col-md-1 col-sm-12"></div> <label htmlFor="timeLine" className="col-lg-2 col-md-2 col-sm-12">Timeline</label> <div className="col-lg-3 col-md-3 col-sm-12 block-list"> - <Link to={{ pathname: '/su/timelineview/week' }}>Week Overview <span class="fas fa-calendar-alt"></span></Link> + <Link to={{ pathname: '/su/timelineview/week' }}>Week Overview <span className="fas fa-calendar-alt"></span></Link> </div> </div> </div> {!this.props.readOnly && <div className="p-grid p-justify-start"> <div className="p-col-1"> <Button label="Cancel" className="p-button-danger" icon="pi pi-times" style={{ width : '90px' }} - onClick={(e) => {this.props.onCancel()}} /> + onClick={() => {this.props.onCancel()}} /> </div> </div>} </> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/qa.reporting.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/qa.reporting.js index 7a3f00c73e98e096f36d2ac003e8277b8c22f62d..15d3682dfc874e3dd87dc2976b39a9f40e29d10b 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/qa.reporting.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/qa.reporting.js @@ -84,7 +84,7 @@ class QAreporting extends Component{ } }) let tempDuration = ''; - var timeDiff = Math.abs(moment(this.props.schedulingUnit.on_sky_start_time) - moment(this.props.schedulingUnit.on_sky_stop_time)) / 1000; + let timeDiff = Math.abs(moment(this.props.schedulingUnit.on_sky_start_time) - moment(this.props.schedulingUnit.on_sky_stop_time)) / 1000; tempDuration = UnitConverter.getSecsToDDHHmmss(timeDiff); this.tmpSystemEvent = { 'start': this.props.schedulingUnit.on_sky_start_time, @@ -309,10 +309,10 @@ class QAreporting extends Component{ {!this.props.readOnly && !this.state.reassign && <> {this.state.currentWorkflowTask.editPermissions - ? <Link onClick={e => this.setState({reassign: true})} style={{marginLeft: '10px'}}> + ? <Link onClick={()=> this.setState({reassign: true})} style={{marginLeft: '10px'}}> <i className="pi pi-pencil"></i> </Link> - : <Link style={{ cursor: 'default', pointerEvents: "none", color: 'grey', marginLeft: '10px'}} onClick={e => this.setState({reassign: true})}> + : <Link style={{ cursor: 'default', pointerEvents: "none", color: 'grey', marginLeft: '10px'}} onClick={() => this.setState({reassign: true})}> <i className="pi pi-pencil"></i> </Link> } @@ -351,7 +351,7 @@ class QAreporting extends Component{ } {!this.state.showEditor && <div onClick={() => !this.props.readOnly && this.setState({ showEditor: !this.state.showEditor })} className="operator-report"></div>} - {this.props.readOnly &&<div class="comment-editor-content" dangerouslySetInnerHTML={{ __html: this.state.content }}></div>} + {this.props.readOnly &&<div className="comment-editor-content" dangerouslySetInnerHTML={{ __html: this.state.content }}></div>} </div> <div style={{ marginLeft: '1em', position:'relative' }}> <div className="p-field p-grid workflow-wrap"> @@ -399,7 +399,7 @@ class QAreporting extends Component{ </div> <div className="btn-bar"> <Button label="Cancel" className="act-btn-cancel" icon="pi pi-times" style={{ width : '88px' }} - onClick={(e) => { this.props.onCancel()}} /> + onClick={() => { this.props.onCancel()}} /> </div> </div>} {!this.props.readOnly && diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/task.assigner.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/task.assigner.js index 13bbf25cebdfd7fa3d99dc139bdb55f3ff2d647e..3f71b6d2d4825e7bb05022439061659bab608d91 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/task.assigner.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Workflow/task.assigner.js @@ -66,7 +66,7 @@ class TaskAssigner extends Component { <div> { this.props.currentWorkflowTask.editPermissions && !this.props.disableAssignToMe - ? <Link to="#" className="notDisabled" onClick={e => {this.assignUser(true)}}>Assign to me</Link> + ? <Link to="#" className="notDisabled" onClick={() => {this.assignUser(true)}}>Assign to me</Link> : <Link to="#" style={{ cursor: 'disabled', pointerEvents: "none", color: 'grey'}}>Assign to me</Link> } </div> @@ -85,10 +85,10 @@ class TaskAssigner extends Component { </label> </div> <div style={{float: 'right'}}> - <Link to="#" onClick={e => {this.assignUser()}} style={{marginRight: '10px'}} + <Link to="#" onClick={() => {this.assignUser()}} style={{marginRight: '10px'}} className={allowSave?'':'disabled-link'}> <i className="fa fa-check"></i></Link> - <Link to="#" onClick={e => {this.props.callback()}}> + <Link to="#" onClick={() => {this.props.callback()}}> <i className="fa fa-times"></i></Link> </div> </> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/services/schedule.service.js b/SAS/TMSS/frontend/tmss_webapp/src/services/schedule.service.js index a4806e902f7b2fe96168446bffce6769c8fc3610..32f770b0b8d57d08ae8bb50df42035c3a2a78f66 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/services/schedule.service.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/services/schedule.service.js @@ -291,9 +291,7 @@ const ScheduleService = { } //Fetch blueprint details for Task Draft const draftBlueprints = await TaskService.getDraftsTaskBlueprints(task.id); - // let filteredblueprints = _.filter(taskblueprints, function(o) { - // if (o.draft_id === task['id']) return o; - // }); + let subTasktemplate = {} for (const blueprint of draftBlueprints) { @@ -431,7 +429,7 @@ const ScheduleService = { await axios.get('/api/scheduling_unit_draft/' + id + '/task_draft/?ordering=id') .then(async response => { res = response; - if (response && response.data.results && loadTemplate) { + if (response?.data?.results && loadTemplate) { for (const task of response.data.results) { task.template = await TaskService.getTaskTemplate(task.specifications_template_id); } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/shared/timeline.constants.test.js b/SAS/TMSS/frontend/tmss_webapp/src/shared/timeline.constants.test.js new file mode 100644 index 0000000000000000000000000000000000000000..43f58af85f45db81e11f78201e4ed91f36069d10 --- /dev/null +++ b/SAS/TMSS/frontend/tmss_webapp/src/shared/timeline.constants.test.js @@ -0,0 +1,11 @@ +import TimelineConstants from "./timeline.constants"; + +describe('TimelineConstants ', () => { + + // Why are those constants there if they are not being used... + test('Constants exists', () => { + expect(TimelineConstants.SU_LIST_DEFAULT_COLUMNS).toBeDefined(); + }) +}); + + diff --git a/SAS/TMSS/frontend/tmss_webapp/src/utils/validator.js b/SAS/TMSS/frontend/tmss_webapp/src/utils/validator.js index eb4b77f680dd95a1223d4b8af306177630103043..9a00c67cc1ee558a26cde5a3b00086e16257b0e1 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/utils/validator.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/utils/validator.js @@ -1,5 +1,4 @@ import UnitConverter from "./unit.converter"; -import _ from 'lodash'; import moment from "moment"; const Validator = { @@ -8,8 +7,8 @@ const Validator = { return false; } const angleType = UnitConverter.getAngleInputType(value); - if (angleType && ['hms', 'hours', 'hour_format', 'radians'].indexOf(angleType)>=0) { - if (angleType === 'radians' && (parseFloat(value)<0 || parseFloat(value) > 6.2831)) { + if (angleType && ['hms', 'hours', 'hour_format', 'radians'].indexOf(angleType) >= 0) { + if (angleType === 'radians' && (parseFloat(value) < 0 || parseFloat(value) > 6.2831)) { return false; } return true; @@ -21,25 +20,25 @@ const Validator = { return false; } const angleType = UnitConverter.getAngleInputType(value); - if (angleType && ['hms', 'hours', 'hour_format', 'radians', 'degrees', 'deg_format', 'dms'].indexOf(angleType)>=0) { - if (angleType === 'radians' && (parseFloat(value)<0 || parseFloat(value) > 6.2831)) { + if (angleType && ['hms', 'hours', 'hour_format', 'radians', 'degrees', 'deg_format', 'dms'].indexOf(angleType) >= 0) { + if (angleType === 'radians' && (parseFloat(value) < 0 || parseFloat(value) > 6.2831)) { return false; } - if(angleType === 'dms') { + if (angleType === 'dms') { let radianValue = UnitConverter.convertAngleToRadian(value) - if(radianValue< 0 || radianValue > 6.283185306694774){ + if (radianValue < 0 || radianValue > 6.283185306694774) { return false } } - if(angleType === 'degrees') { + if (angleType === 'degrees') { let radianValue = UnitConverter.convertToRadians(value.split("d")[0]) - if(radianValue< 0 || radianValue > 6.283185306694774){ + if (radianValue < 0 || radianValue > 6.283185306694774) { return false } } - if(angleType === 'deg_format') { + if (angleType === 'deg_format') { let radianValue = UnitConverter.getAngleOutput(value.replace('d', '').replace('egree', '').replace('s', '').replace(' ', ''), true); - if(radianValue< 0 || radianValue > 6.283185306694774){ + if (radianValue < 0 || radianValue > 6.283185306694774) { return false } } @@ -52,25 +51,26 @@ const Validator = { return false; } const angleType = UnitConverter.getAngleInputType(value); - if (angleType && ['dms', 'degrees', 'deg_format', 'radians'].indexOf(angleType)>=0) { + + if (angleType && ['dms', 'degrees', 'deg_format', 'radians'].indexOf(angleType) >= 0) { if (angleType === 'radians' && (parseFloat(value) < -1.57079632679489661923 || parseFloat(value) > 1.57079632679489661923)) { return false; } - if(angleType === 'dms') { + if (angleType === 'dms') { let radianValue = UnitConverter.convertAngleToRadian(value) - if(radianValue< -1.5707963268 || radianValue > 1.5707963268){ + if (radianValue < -1.5707963268 || radianValue > 1.5707963268) { return false } } - if(angleType === 'degrees') { + if (angleType === 'degrees') { let radianValue = UnitConverter.convertToRadians(value.split("d")[0]) - if(radianValue< -1.5707963268 || radianValue > 1.5707963268){ + if (radianValue < -1.5707963268 || radianValue > 1.5707963268) { return false } } - if(angleType === 'deg_format') { + if (angleType === 'deg_format') { let radianValue = UnitConverter.getAngleOutput(value.replace('d', '').replace('egree', '').replace('s', '').replace(' ', ''), true) - if(radianValue< -1.5707963268 || radianValue > 1.5707963268){ + if (radianValue < -1.5707963268 || radianValue > 1.5707963268) { return false } } @@ -88,7 +88,7 @@ const Validator = { isObjectModified(oldObject, newObject, properties) { let isModified = false; // If oldObject is not found, the object should be got from server - if(!oldObject && newObject) { + if (!oldObject && newObject) { return true; } for (const property of properties) { @@ -127,13 +127,13 @@ const Validator = { * @param {string value with DDD HH:mm:ss format} Days time * @returns */ - isValidDDDHHmmss(duration, excludeHour) { + isValidDDDHHmmss(duration, excludeHour) { let isValid = true; - var values = duration.split(' '); - isValid = Validator.isValidHHmmss(values[1], excludeHour) + let values = duration.split(' '); + isValid = Validator.isValidHHmmss(values[1], excludeHour) return isValid; }, - + /** * Check object is empty or not * @param {String object} @@ -146,33 +146,33 @@ const Validator = { return true; } */else if (value.length === 0) { return true; - } else { + } else { return false; } }, validateTransitOffset(schema, jsonOutput, error, path) { - const tmpTime = _.split(jsonOutput, ":"); - if (jsonOutput.length === 0 && schema.required === true) { + const tmpTime = jsonOutput.split(":"); + if (jsonOutput.length === 0 && schema.required === true) { error.push({ - message:`Transit Offset - ${schema.title} is required. Time format should be [+/- Hours:Minutes:Seconds]. eg. '-23:59:59', '+20:23:25', '15:45:45'`, - path:path, - property:'validationType', + message: `Transit Offset - ${schema.title} is required. Time format should be [+/- Hours:Minutes:Seconds]. eg. '-23:59:59', '+20:23:25', '15:45:45'`, + path: path, + property: 'validationType', }); - } + } //here the isValidHHmmss() valiadtion function not used because it requires only MM:SS validation and the hours may define more than 23 - else if (tmpTime.length !== 3 || tmpTime[1]>59 || tmpTime[1].trim() === '' || tmpTime[2]>59 || tmpTime[2].trim() === '') { + else if (tmpTime.length !== 3 || tmpTime[1] > 59 || tmpTime[1].trim() === '' || tmpTime[2] > 59 || tmpTime[2].trim() === '') { error.push({ - message:"Invalid time format. Time format should be [+/- Hours:Minutes:Seconds]. eg. '-23:59:59', '+20:23:25', '15:45:45'", - path:path, - property:'validationType', + message: "Invalid time format. Time format should be [+/- Hours:Minutes:Seconds]. eg. '-23:59:59', '+20:23:25', '15:45:45'", + path: path, + property: 'validationType', }); - } else { + } else { let value = UnitConverter.getHHmmssToSecs(jsonOutput); if (isNaN(value) || (value < schema.minimum || value > schema.maximum)) { error.push({ - message:'Time must be between '+((schema.minimum<0)?'-':'')+UnitConverter.getSecsToHHmmss(schema.minimum)+' and '+((schema.maximum<0)?'-':'')+UnitConverter.getSecsToHHmmss(schema.maximum), - path:path, - property:'validationType', + message: 'Time must be between ' + ((schema.minimum < 0) ? '-' : '') + UnitConverter.getSecsToHHmmss(schema.minimum) + ' and ' + ((schema.maximum < 0) ? '-' : '') + UnitConverter.getSecsToHHmmss(schema.maximum), + path: path, + property: 'validationType', }); } } @@ -180,17 +180,17 @@ const Validator = { validateDurationHHmmss(schema, jsonOutput, error, path) { if (!this.isValidDuration(jsonOutput)) { error.push({ - message:"Invalid duration. Duration should be in 'HH:mm:ss' format and between "+UnitConverter.getSecsToHHmmss(schema.minimum)+' and '+UnitConverter.getSecsToHHmmss(schema.maximum), - path:path, - property:'validationType', + message: "Invalid duration. Duration should be in 'HH:mm:ss' format and between " + UnitConverter.getSecsToHHmmss(schema.minimum) + ' and ' + UnitConverter.getSecsToHHmmss(schema.maximum), + path: path, + property: 'validationType', }); - } else { + } else { let value = UnitConverter.getHHmmssToSecs(jsonOutput); if (isNaN(value) || (value < schema.minimum || value > schema.maximum)) { error.push({ - message:'Duration must be between '+UnitConverter.getSecsToHHmmss(schema.minimum)+' and '+UnitConverter.getSecsToHHmmss(schema.maximum), - path:path, - property:'validationType', + message: 'Duration must be between ' + UnitConverter.getSecsToHHmmss(schema.minimum) + ' and ' + UnitConverter.getSecsToHHmmss(schema.maximum), + path: path, + property: 'validationType', }); } } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/utils/validator.test.js b/SAS/TMSS/frontend/tmss_webapp/src/utils/validator.test.js index 70b4315193259698132196315ec9695b3b794a8d..8fbdaf69e259b1f72f0197d6fd18748fb8a93285 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/utils/validator.test.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/utils/validator.test.js @@ -35,3 +35,17 @@ describe('isValidDuration', () => { expect(Validator.isValidDuration(time)).toBe(false); }) }); + + +describe('validateTimeAndAngle' ,() => { + test.each([null,"-1 hours","900 degrees" ])('Invalid Time and angle: %s', (timeandangle) => { + + expect(Validator.validateTimeAndAngle(timeandangle)).toBe(false); + }) + + + test.each(["2 hours", "5 degrees" ])('valid Time and angle: %s', (timeandangle) => { + + expect(Validator.validateTimeAndAngle(timeandangle)).toBe(true); + }) +}); \ No newline at end of file