From 2e900c93508fc5513f252f7b0520dafaf9088d65 Mon Sep 17 00:00:00 2001 From: Brian Knosp Date: Tue, 20 Aug 2024 10:51:01 -0700 Subject: [PATCH] Deploy website - based on c9c2998a381cce790c4dad8a1d2d892c1b2b4757 --- 404.html | 2 +- about.html | 2 +- assets/js/cecee5ae.14752195.js | 1 + assets/js/cecee5ae.64f53019.js | 1 - ...n.d1adc968.js => runtime~main.d3946676.js} | 2 +- code_of_conduct.html | 2 +- contributing.html | 2 +- docs/anomaly-detection.html | 52 ++++++++++--------- docs/data-dictionaries.html | 2 +- docs/data_access_server.html | 2 +- docs/fortracc-module.html | 2 +- docs/intro.html | 2 +- docs/tos2ca-documentation.html | 2 +- docs/user-interface.html | 2 +- governance.html | 2 +- index.html | 2 +- license.html | 2 +- markdown-page.html | 2 +- 18 files changed, 44 insertions(+), 40 deletions(-) create mode 100644 assets/js/cecee5ae.14752195.js delete mode 100644 assets/js/cecee5ae.64f53019.js rename assets/js/{runtime~main.d1adc968.js => runtime~main.d3946676.js} (83%) diff --git a/404.html b/404.html index 864bfab..a9e3973 100644 --- a/404.html +++ b/404.html @@ -4,7 +4,7 @@ Page Not Found | TOS2CA Documentation - + diff --git a/about.html b/about.html index f3f9f7f..19a864e 100644 --- a/about.html +++ b/about.html @@ -4,7 +4,7 @@ About TOS2CA | TOS2CA Documentation - + diff --git a/assets/js/cecee5ae.14752195.js b/assets/js/cecee5ae.14752195.js new file mode 100644 index 0000000..c9d04b3 --- /dev/null +++ b/assets/js/cecee5ae.14752195.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[791],{4126:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>o,metadata:()=>s,toc:()=>d});var a=n(2218),i=n(1879);const o={sidebar_position:2},r="Anomaly Detection",s={id:"anomaly-detection",title:"Anomaly Detection",description:"Language",source:"@site/docs/anomaly-detection.md",sourceDirName:".",slug:"/anomaly-detection",permalink:"/tos2ca-documentation/docs/anomaly-detection",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/tos2ca-documentation/docs/intro"},next:{title:"ForTraCC Module",permalink:"/tos2ca-documentation/docs/fortracc-module"}},l={},d=[{value:"Requirements",id:"requirements",level:2},{value:"Resources",id:"resources",level:2},{value:"Library Flow",id:"library-flow",level:2},{value:"Phenomenon Definition (PhDef) Stage",id:"phenomenon-definition-phdef-stage",level:3},{value:"Data Curation Stage",id:"data-curation-stage",level:3}];function h(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.header,{children:(0,a.jsx)(t.h1,{id:"anomaly-detection",children:"Anomaly Detection"})}),"\n",(0,a.jsx)(t.p,{children:(0,a.jsx)(t.a,{href:"#",children:(0,a.jsx)(t.img,{src:"https://img.shields.io/badge/python-3.9-blue",alt:"Language"})})}),"\n",(0,a.jsx)(t.p,{children:"This python library is responsible for:"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsx)(t.li,{children:"Taking user input about an inequality, variables, temporal bounds, and geospatial bounds"}),"\n",(0,a.jsx)(t.li,{children:"Retrieving subsetted data matching that user input"}),"\n",(0,a.jsx)(t.li,{children:"Converting that data to a binary format in a time-ordered sequence"}),"\n",(0,a.jsx)(t.li,{children:"Passing the data to ForTraCC"}),"\n",(0,a.jsx)(t.li,{children:"Using the masks produced by ForTraCC to retrieve curated data of interest to the user"}),"\n"]}),"\n",(0,a.jsx)(t.h2,{id:"requirements",children:"Requirements"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:["Access to the TOS2CA ",(0,a.jsx)(t.a,{href:"https://github.jpl.nasa.gov/TOS2CA/data-dictionaries",children:"data dictionaries"})]}),"\n",(0,a.jsx)(t.li,{children:(0,a.jsx)(t.a,{href:"https://github.jpl.nasa.gov/TOS2CA/fortracc-module",children:"ForTraCC"})}),"\n",(0,a.jsx)(t.li,{children:"See the requirements.txt file for required Python libraries"}),"\n"]}),"\n",(0,a.jsx)(t.h2,{id:"resources",children:"Resources"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsx)(t.li,{children:"Access to an S3 bucket where you can read and write data"}),"\n",(0,a.jsx)(t.li,{children:"Access to a MySQL database that stores user input"}),"\n",(0,a.jsx)(t.li,{children:"Access to a Redis/Elasticache memory store to temporarily house data that's being read/curated"}),"\n",(0,a.jsx)(t.li,{children:"Access to AWS Secrets Manager to retrieve things like credentails, tokes, etc."}),"\n",(0,a.jsxs)(t.li,{children:["Should have a ",(0,a.jsx)(t.a,{href:"https://urs.earthdata.nasa.gov",children:"NASA Earthdata login"})," to use any tools DAAC tools/applications"]}),"\n",(0,a.jsxs)(t.li,{children:["Should have access to the ",(0,a.jsx)(t.code,{children:"us-west-2"})," AWS region to access any NASA DAAC data over S3"]}),"\n",(0,a.jsx)(t.li,{children:"The code is currently run on an EC2 instance but future work includes containerizing the code and running it in chunks on AWS Fargate"}),"\n"]}),"\n",(0,a.jsx)(t.h2,{id:"library-flow",children:"Library Flow"}),"\n",(0,a.jsx)(t.h3,{id:"phenomenon-definition-phdef-stage",children:"Phenomenon Definition (PhDef) Stage"}),"\n",(0,a.jsx)(t.p,{children:"Running the library in an end-to-end fashion requires the following steps:"}),"\n",(0,a.jsxs)(t.ol,{children:["\n",(0,a.jsxs)(t.li,{children:["Read the job information from the database that includes all the infomration about the temporal, spatial, operator, dataset, and variable requested. Initially, jobs will be in ",(0,a.jsx)(t.code,{children:"'pending'"})," status in the database."]}),"\n",(0,a.jsxs)(t.li,{children:["Once you have the job information, choose the appropriate reader for the dataset/variable in question and mark the job as ",(0,a.jsx)(t.code,{children:"'running'"})," in the database."]}),"\n",(0,a.jsx)(t.li,{children:"Request and/or read the data, returning a subset based on the user input."}),"\n",(0,a.jsx)(t.li,{children:"Format the data into a dict type and convert it to binary."}),"\n",(0,a.jsx)(t.li,{children:"Store the read data in Elasticache."}),"\n",(0,a.jsx)(t.li,{children:"Call the ForTraCC operator class that will start the ForTraCC job, reading the data from Elasticache and converting it back from binary to dict."}),"\n",(0,a.jsx)(t.li,{children:"Deposit the ForTraCC output into th S3 bucket."}),"\n",(0,a.jsx)(t.li,{children:"Create plots and GeoJSON polygons of the anomalies."}),"\n",(0,a.jsx)(t.li,{children:"Upload the plots and GeoJSON to S3."}),"\n",(0,a.jsx)(t.li,{children:"E-Mail the user that their job is complete and send them the locatin of the S3 bucket with their job directory."}),"\n",(0,a.jsxs)(t.li,{children:["Mark the job as ",(0,a.jsx)(t.code,{children:"'complete'"})," in the database.\nThe user can continue on to data curation or exit the system here."]}),"\n"]}),"\n",(0,a.jsx)(t.h3,{id:"data-curation-stage",children:"Data Curation Stage"}),"\n",(0,a.jsx)(t.p,{children:"Running the library in an end-to-end fashion requires the following steps:"}),"\n",(0,a.jsxs)(t.ol,{children:["\n",(0,a.jsx)(t.li,{children:"Read the job information from the database that include information about what PhDef to run against, along with the dataset and variable information."}),"\n",(0,a.jsxs)(t.li,{children:["Once you have the job information, choose the appropriate curator for the dataset/variable in question and mark the job as ",(0,a.jsx)(t.code,{children:"'running'"})," in the database. Initially, jobs will be in ",(0,a.jsx)(t.code,{children:"'pending'"})," status in the database."]}),"\n",(0,a.jsx)(t.li,{children:"Run the curator, which will output a netCDF-4 file with the data for each anomaly at each time step. Note that incronguities may exist beween the grids and timesteps between the data used in PhDef and the requested curator data. See the metadata in the output curated data file for additional information on this."}),"\n",(0,a.jsx)(t.li,{children:"Upload the curated data file and JSON hierarchy file to S3."}),"\n",(0,a.jsx)(t.li,{children:"Run the curated file through the interpolater. This will get the curated data on the same temporal and spatial resolution as the original mask data. This way the user can compare them more easily. This will also generate statistics in the metadata of the interpolated file. The interpolated fill will also be stored in S3."}),"\n",(0,a.jsx)(t.li,{children:"E-Mail the user that their job is complete and send them the locatin of the S3 bucket with their job directory."}),"\n",(0,a.jsxs)(t.li,{children:["Mark the job as ",(0,a.jsx)(t.code,{children:"'complete'"})," in the database."]}),"\n",(0,a.jsx)(t.li,{children:"User can make plots of individual anomalies at spcific timestamps using the interpolated file.\nThe user can continue on to visualization tools, download the data, or exit the system here."}),"\n"]})]})}function c(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}},1879:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>s});var a=n(3746);const i={},o=a.createContext(i);function r(e){const t=a.useContext(o);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),a.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/cecee5ae.64f53019.js b/assets/js/cecee5ae.64f53019.js deleted file mode 100644 index e84370f..0000000 --- a/assets/js/cecee5ae.64f53019.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[791],{4126:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>r,default:()=>c,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var n=a(2218),i=a(1879);const o={sidebar_position:2},r="Anomaly Detection",s={id:"anomaly-detection",title:"Anomaly Detection",description:"Language",source:"@site/docs/anomaly-detection.md",sourceDirName:".",slug:"/anomaly-detection",permalink:"/tos2ca-documentation/docs/anomaly-detection",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/tos2ca-documentation/docs/intro"},next:{title:"ForTraCC Module",permalink:"/tos2ca-documentation/docs/fortracc-module"}},d={},l=[{value:"Requirements",id:"requirements",level:2},{value:"Resources",id:"resources",level:2},{value:"Library Flow",id:"library-flow",level:2},{value:"Phenomenon Definition (PhDef) Stage",id:"phenomenon-definition-phdef-stage",level:3},{value:"Data Curation Stage",id:"data-curation-stage",level:3}];function h(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"anomaly-detection",children:"Anomaly Detection"})}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.a,{href:"#",children:(0,n.jsx)(t.img,{src:"https://img.shields.io/badge/python-3.9-blue",alt:"Language"})})}),"\n",(0,n.jsx)(t.p,{children:"This python library is responsible for:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"Taking user input about an inequality, variables, temporal bounds, and geospatial bounds"}),"\n",(0,n.jsx)(t.li,{children:"Retrieving subsetted data matching that user input"}),"\n",(0,n.jsx)(t.li,{children:"Converting that data to a binary format in a time-ordered sequence"}),"\n",(0,n.jsx)(t.li,{children:"Passing the data to ForTraCC"}),"\n",(0,n.jsx)(t.li,{children:"Using the masks produced by ForTraCC to retrieve curated data of interest to the user"}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"requirements",children:"Requirements"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Access to the TOS2CA ",(0,n.jsx)(t.a,{href:"https://github.jpl.nasa.gov/TOS2CA/data-dictionaries",children:"data dictionaries"})]}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://github.jpl.nasa.gov/TOS2CA/fortracc-module",children:"ForTraCC"})}),"\n",(0,n.jsx)(t.li,{children:"See the requirements.txt file for required Python libraries"}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"resources",children:"Resources"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"Access to an S3 bucket where you can read and write data"}),"\n",(0,n.jsx)(t.li,{children:"Access to a MySQL database that stores user input"}),"\n",(0,n.jsx)(t.li,{children:"Access to a Redis/Elasticache memory store to temporarily house data that's being read/curated"}),"\n",(0,n.jsx)(t.li,{children:"Access to AWS Secrets Manager to retrieve things like credentails, tokes, etc."}),"\n",(0,n.jsxs)(t.li,{children:["Should have a ",(0,n.jsx)(t.a,{href:"https://urs.earthdata.nasa.gov",children:"NASA Earthdata login"})," to use any tools DAAC tools/applications"]}),"\n",(0,n.jsxs)(t.li,{children:["Should have access to the ",(0,n.jsx)(t.code,{children:"us-west-2"})," AWS region to access any NASA DAAC data over S3"]}),"\n",(0,n.jsx)(t.li,{children:"The code is currently run on an EC2 instance but future work includes containerizing the code and running it in chunks on AWS Fargate"}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"library-flow",children:"Library Flow"}),"\n",(0,n.jsx)(t.h3,{id:"phenomenon-definition-phdef-stage",children:"Phenomenon Definition (PhDef) Stage"}),"\n",(0,n.jsxs)(t.p,{children:["Running the library in an end-to-end fashion requires the following steps:\n01. Read the job information from the database that includes all the infomration about the temporal, spatial, operator, dataset, and variable requested. Initially, jobs will be in ",(0,n.jsx)(t.code,{children:"'pending'"})," status in the database.\n02. Once you have the job information, choose the appropriate reader for the dataset/variable in question and mark the job as ",(0,n.jsx)(t.code,{children:"'running'"})," in the database.\n03. Request and/or read the data, returning a subset based on the user input.\n04. Format the data into a dict type and convert it to binary.\n05. Store the read data in Elasticache.\n06. Call the ForTraCC operator class that will start the ForTraCC job, reading the data from Elasticache and converting it back from binary to dict.\n07. Deposit the ForTraCC output into th S3 bucket.\n08. Create plots and GeoJSON polygons of the anomalies.\n09. Upload the plots and GeoJSON to S3.\n10. E-Mail the user that their job is complete and send them the locatin of the S3 bucket with their job directory.\n11. Mark the job as ",(0,n.jsx)(t.code,{children:"'complete'"})," in the database.\nThe user can continue on to data curation or exit the system here."]}),"\n",(0,n.jsx)(t.h3,{id:"data-curation-stage",children:"Data Curation Stage"}),"\n",(0,n.jsxs)(t.p,{children:["Running the library in an end-to-end fashion requires the following steps:\n01. Read the job information from the database that include information about what PhDef to run against, along with the dataset and variable information.\n02. Once you have the job information, choose the appropriate curator for the dataset/variable in question and mark the job as ",(0,n.jsx)(t.code,{children:"'running'"})," in the database. Initially, jobs will be in ",(0,n.jsx)(t.code,{children:"'pending'"})," status in the database.\n03. Run the curator, which will output a netCDF-4 file with the data for each anomaly at each time step. Note that incronguities may exist beween the grids and timesteps between the data used in PhDef and the requested curator data. See the metadata in the output curated data file for additional information on this.\n04. Upload the curated data file and JSON hierarchy file to S3.\n05. Run the curated file through the interpolater. This will get the curated data on the same temporal and spatial resolution as the original mask data. This way the user can compare them more easily. This will also generate statistics in the metadata of the interpolated file. The interpolated fill will also be stored in S3.\n05. E-Mail the user that their job is complete and send them the locatin of the S3 bucket with their job directory.\n06. Mark the job as ",(0,n.jsx)(t.code,{children:"'complete'"})," in the database.\n07. User can make plots of individual anomalies at spcific timestamps using the interpolated file.\nThe user can continue on to visualization tools, download the data, or exit the system here."]})]})}function c(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},1879:(e,t,a)=>{a.d(t,{R:()=>r,x:()=>s});var n=a(3746);const i={},o=n.createContext(i);function r(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.d1adc968.js b/assets/js/runtime~main.d3946676.js similarity index 83% rename from assets/js/runtime~main.d1adc968.js rename to assets/js/runtime~main.d3946676.js index a810796..4cc5609 100644 --- a/assets/js/runtime~main.d1adc968.js +++ b/assets/js/runtime~main.d3946676.js @@ -1 +1 @@ -(()=>{"use strict";var e,t,a,r,o,n={},f={};function c(e){var t=f[e];if(void 0!==t)return t.exports;var a=f[e]={id:e,loaded:!1,exports:{}};return n[e].call(a.exports,a,a.exports,c),a.loaded=!0,a.exports}c.m=n,c.c=f,e=[],c.O=(t,a,r,o)=>{if(!a){var n=1/0;for(b=0;b=o)&&Object.keys(c.O).every((e=>c.O[e](a[i])))?a.splice(i--,1):(f=!1,o0&&e[b-1][2]>o;b--)e[b]=e[b-1];e[b]=[a,r,o]},c.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return c.d(t,{a:t}),t},a=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);c.r(o);var n={};t=t||[null,a({}),a([]),a(a)];for(var f=2&r&&e;"object"==typeof f&&!~t.indexOf(f);f=a(f))Object.getOwnPropertyNames(f).forEach((t=>n[t]=()=>e[t]));return n.default=()=>e,c.d(o,n),o},c.d=(e,t)=>{for(var a in t)c.o(t,a)&&!c.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},c.f={},c.e=e=>Promise.all(Object.keys(c.f).reduce(((t,a)=>(c.f[a](e,t),t)),[])),c.u=e=>"assets/js/"+({31:"ebe2f327",33:"8f2d8be7",48:"a94703ab",61:"1f391b9e",92:"11a8d2c9",98:"a7bd4aaa",134:"393be207",235:"a7456010",334:"958b6ae5",351:"c783711f",401:"17896441",518:"a564e6ff",568:"83867e9a",583:"1df93b7f",640:"33479c9a",647:"5e95c892",683:"b7761dbc",742:"aba21aa0",750:"356a0ac6",791:"cecee5ae",976:"0e384e19",982:"f372b830"}[e]||e)+"."+{31:"793391e0",33:"67673a74",48:"7b577b59",61:"c5e77fe0",92:"4ebbf3c2",98:"df2f38dd",134:"bfb73915",235:"d27e4924",334:"199e7067",351:"5b6affef",401:"330330f5",497:"57cc92c6",518:"2c48bc1e",568:"6a10dc84",583:"3eb277c0",622:"fbfe9ceb",640:"71fb776b",647:"9c50af1c",683:"df201de7",742:"bddde0da",750:"d0bdf610",791:"64f53019",976:"d32b6593",982:"58135917"}[e]+".js",c.miniCssF=e=>{},c.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),c.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},o="my-website:",c.l=(e,t,a,n)=>{if(r[e])r[e].push(t);else{var f,i;if(void 0!==a)for(var d=document.getElementsByTagName("script"),b=0;b{f.onerror=f.onload=null,clearTimeout(s);var o=r[e];if(delete r[e],f.parentNode&&f.parentNode.removeChild(f),o&&o.forEach((e=>e(a))),t)return t(a)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=l.bind(null,f.onerror),f.onload=l.bind(null,f.onload),i&&document.head.appendChild(f)}},c.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.p="/tos2ca-documentation/",c.gca=function(e){return e={17896441:"401",ebe2f327:"31","8f2d8be7":"33",a94703ab:"48","1f391b9e":"61","11a8d2c9":"92",a7bd4aaa:"98","393be207":"134",a7456010:"235","958b6ae5":"334",c783711f:"351",a564e6ff:"518","83867e9a":"568","1df93b7f":"583","33479c9a":"640","5e95c892":"647",b7761dbc:"683",aba21aa0:"742","356a0ac6":"750",cecee5ae:"791","0e384e19":"976",f372b830:"982"}[e]||e,c.p+c.u(e)},(()=>{var e={354:0,869:0};c.f.j=(t,a)=>{var r=c.o(e,t)?e[t]:void 0;if(0!==r)if(r)a.push(r[2]);else if(/^(354|869)$/.test(t))e[t]=0;else{var o=new Promise(((a,o)=>r=e[t]=[a,o]));a.push(r[2]=o);var n=c.p+c.u(t),f=new Error;c.l(n,(a=>{if(c.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var o=a&&("load"===a.type?"missing":a.type),n=a&&a.target&&a.target.src;f.message="Loading chunk "+t+" failed.\n("+o+": "+n+")",f.name="ChunkLoadError",f.type=o,f.request=n,r[1](f)}}),"chunk-"+t,t)}},c.O.j=t=>0===e[t];var t=(t,a)=>{var r,o,n=a[0],f=a[1],i=a[2],d=0;if(n.some((t=>0!==e[t]))){for(r in f)c.o(f,r)&&(c.m[r]=f[r]);if(i)var b=i(c)}for(t&&t(a);d{"use strict";var e,t,a,r,o,n={},f={};function c(e){var t=f[e];if(void 0!==t)return t.exports;var a=f[e]={id:e,loaded:!1,exports:{}};return n[e].call(a.exports,a,a.exports,c),a.loaded=!0,a.exports}c.m=n,c.c=f,e=[],c.O=(t,a,r,o)=>{if(!a){var n=1/0;for(d=0;d=o)&&Object.keys(c.O).every((e=>c.O[e](a[i])))?a.splice(i--,1):(f=!1,o0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[a,r,o]},c.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return c.d(t,{a:t}),t},a=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);c.r(o);var n={};t=t||[null,a({}),a([]),a(a)];for(var f=2&r&&e;"object"==typeof f&&!~t.indexOf(f);f=a(f))Object.getOwnPropertyNames(f).forEach((t=>n[t]=()=>e[t]));return n.default=()=>e,c.d(o,n),o},c.d=(e,t)=>{for(var a in t)c.o(t,a)&&!c.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},c.f={},c.e=e=>Promise.all(Object.keys(c.f).reduce(((t,a)=>(c.f[a](e,t),t)),[])),c.u=e=>"assets/js/"+({31:"ebe2f327",33:"8f2d8be7",48:"a94703ab",61:"1f391b9e",92:"11a8d2c9",98:"a7bd4aaa",134:"393be207",235:"a7456010",334:"958b6ae5",351:"c783711f",401:"17896441",518:"a564e6ff",568:"83867e9a",583:"1df93b7f",640:"33479c9a",647:"5e95c892",683:"b7761dbc",742:"aba21aa0",750:"356a0ac6",791:"cecee5ae",976:"0e384e19",982:"f372b830"}[e]||e)+"."+{31:"793391e0",33:"67673a74",48:"7b577b59",61:"c5e77fe0",92:"4ebbf3c2",98:"df2f38dd",134:"bfb73915",235:"d27e4924",334:"199e7067",351:"5b6affef",401:"330330f5",497:"57cc92c6",518:"2c48bc1e",568:"6a10dc84",583:"3eb277c0",622:"fbfe9ceb",640:"71fb776b",647:"9c50af1c",683:"df201de7",742:"bddde0da",750:"d0bdf610",791:"14752195",976:"d32b6593",982:"58135917"}[e]+".js",c.miniCssF=e=>{},c.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),c.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},o="my-website:",c.l=(e,t,a,n)=>{if(r[e])r[e].push(t);else{var f,i;if(void 0!==a)for(var b=document.getElementsByTagName("script"),d=0;d{f.onerror=f.onload=null,clearTimeout(s);var o=r[e];if(delete r[e],f.parentNode&&f.parentNode.removeChild(f),o&&o.forEach((e=>e(a))),t)return t(a)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=l.bind(null,f.onerror),f.onload=l.bind(null,f.onload),i&&document.head.appendChild(f)}},c.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.p="/tos2ca-documentation/",c.gca=function(e){return e={17896441:"401",ebe2f327:"31","8f2d8be7":"33",a94703ab:"48","1f391b9e":"61","11a8d2c9":"92",a7bd4aaa:"98","393be207":"134",a7456010:"235","958b6ae5":"334",c783711f:"351",a564e6ff:"518","83867e9a":"568","1df93b7f":"583","33479c9a":"640","5e95c892":"647",b7761dbc:"683",aba21aa0:"742","356a0ac6":"750",cecee5ae:"791","0e384e19":"976",f372b830:"982"}[e]||e,c.p+c.u(e)},(()=>{var e={354:0,869:0};c.f.j=(t,a)=>{var r=c.o(e,t)?e[t]:void 0;if(0!==r)if(r)a.push(r[2]);else if(/^(354|869)$/.test(t))e[t]=0;else{var o=new Promise(((a,o)=>r=e[t]=[a,o]));a.push(r[2]=o);var n=c.p+c.u(t),f=new Error;c.l(n,(a=>{if(c.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var o=a&&("load"===a.type?"missing":a.type),n=a&&a.target&&a.target.src;f.message="Loading chunk "+t+" failed.\n("+o+": "+n+")",f.name="ChunkLoadError",f.type=o,f.request=n,r[1](f)}}),"chunk-"+t,t)}},c.O.j=t=>0===e[t];var t=(t,a)=>{var r,o,n=a[0],f=a[1],i=a[2],b=0;if(n.some((t=>0!==e[t]))){for(r in f)c.o(f,r)&&(c.m[r]=f[r]);if(i)var d=i(c)}for(t&&t(a);b Code of Conduct | TOS2CA Documentation - + diff --git a/contributing.html b/contributing.html index 7ce03ab..9942fca 100644 --- a/contributing.html +++ b/contributing.html @@ -4,7 +4,7 @@ Contributing | TOS2CA Documentation - + diff --git a/docs/anomaly-detection.html b/docs/anomaly-detection.html index 4d5502e..b7407d2 100644 --- a/docs/anomaly-detection.html +++ b/docs/anomaly-detection.html @@ -4,7 +4,7 @@ Anomaly Detection | TOS2CA Documentation - + @@ -36,29 +36,33 @@

ResourcesLibrary Flow

Phenomenon Definition (PhDef) Stage

-

Running the library in an end-to-end fashion requires the following steps: -01. Read the job information from the database that includes all the infomration about the temporal, spatial, operator, dataset, and variable requested. Initially, jobs will be in 'pending' status in the database. -02. Once you have the job information, choose the appropriate reader for the dataset/variable in question and mark the job as 'running' in the database. -03. Request and/or read the data, returning a subset based on the user input. -04. Format the data into a dict type and convert it to binary. -05. Store the read data in Elasticache. -06. Call the ForTraCC operator class that will start the ForTraCC job, reading the data from Elasticache and converting it back from binary to dict. -07. Deposit the ForTraCC output into th S3 bucket. -08. Create plots and GeoJSON polygons of the anomalies. -09. Upload the plots and GeoJSON to S3. -10. E-Mail the user that their job is complete and send them the locatin of the S3 bucket with their job directory. -11. Mark the job as 'complete' in the database. -The user can continue on to data curation or exit the system here.

+

Running the library in an end-to-end fashion requires the following steps:

+
    +
  1. Read the job information from the database that includes all the infomration about the temporal, spatial, operator, dataset, and variable requested. Initially, jobs will be in 'pending' status in the database.
  2. +
  3. Once you have the job information, choose the appropriate reader for the dataset/variable in question and mark the job as 'running' in the database.
  4. +
  5. Request and/or read the data, returning a subset based on the user input.
  6. +
  7. Format the data into a dict type and convert it to binary.
  8. +
  9. Store the read data in Elasticache.
  10. +
  11. Call the ForTraCC operator class that will start the ForTraCC job, reading the data from Elasticache and converting it back from binary to dict.
  12. +
  13. Deposit the ForTraCC output into th S3 bucket.
  14. +
  15. Create plots and GeoJSON polygons of the anomalies.
  16. +
  17. Upload the plots and GeoJSON to S3.
  18. +
  19. E-Mail the user that their job is complete and send them the locatin of the S3 bucket with their job directory.
  20. +
  21. Mark the job as 'complete' in the database. +The user can continue on to data curation or exit the system here.
  22. +

Data Curation Stage

-

Running the library in an end-to-end fashion requires the following steps: -01. Read the job information from the database that include information about what PhDef to run against, along with the dataset and variable information. -02. Once you have the job information, choose the appropriate curator for the dataset/variable in question and mark the job as 'running' in the database. Initially, jobs will be in 'pending' status in the database. -03. Run the curator, which will output a netCDF-4 file with the data for each anomaly at each time step. Note that incronguities may exist beween the grids and timesteps between the data used in PhDef and the requested curator data. See the metadata in the output curated data file for additional information on this. -04. Upload the curated data file and JSON hierarchy file to S3. -05. Run the curated file through the interpolater. This will get the curated data on the same temporal and spatial resolution as the original mask data. This way the user can compare them more easily. This will also generate statistics in the metadata of the interpolated file. The interpolated fill will also be stored in S3. -05. E-Mail the user that their job is complete and send them the locatin of the S3 bucket with their job directory. -06. Mark the job as 'complete' in the database. -07. User can make plots of individual anomalies at spcific timestamps using the interpolated file. -The user can continue on to visualization tools, download the data, or exit the system here.

+

Running the library in an end-to-end fashion requires the following steps:

+
    +
  1. Read the job information from the database that include information about what PhDef to run against, along with the dataset and variable information.
  2. +
  3. Once you have the job information, choose the appropriate curator for the dataset/variable in question and mark the job as 'running' in the database. Initially, jobs will be in 'pending' status in the database.
  4. +
  5. Run the curator, which will output a netCDF-4 file with the data for each anomaly at each time step. Note that incronguities may exist beween the grids and timesteps between the data used in PhDef and the requested curator data. See the metadata in the output curated data file for additional information on this.
  6. +
  7. Upload the curated data file and JSON hierarchy file to S3.
  8. +
  9. Run the curated file through the interpolater. This will get the curated data on the same temporal and spatial resolution as the original mask data. This way the user can compare them more easily. This will also generate statistics in the metadata of the interpolated file. The interpolated fill will also be stored in S3.
  10. +
  11. E-Mail the user that their job is complete and send them the locatin of the S3 bucket with their job directory.
  12. +
  13. Mark the job as 'complete' in the database.
  14. +
  15. User can make plots of individual anomalies at spcific timestamps using the interpolated file. +The user can continue on to visualization tools, download the data, or exit the system here.
  16. +
\ No newline at end of file diff --git a/docs/data-dictionaries.html b/docs/data-dictionaries.html index 3b6bed2..3b9cd66 100644 --- a/docs/data-dictionaries.html +++ b/docs/data-dictionaries.html @@ -4,7 +4,7 @@ Data Dictionaries | TOS2CA Documentation - + diff --git a/docs/data_access_server.html b/docs/data_access_server.html index 18ad616..fd79240 100644 --- a/docs/data_access_server.html +++ b/docs/data_access_server.html @@ -4,7 +4,7 @@ Data Access Server | TOS2CA Documentation - + diff --git a/docs/fortracc-module.html b/docs/fortracc-module.html index b9f161c..63f939b 100644 --- a/docs/fortracc-module.html +++ b/docs/fortracc-module.html @@ -4,7 +4,7 @@ ForTraCC Module | TOS2CA Documentation - + diff --git a/docs/intro.html b/docs/intro.html index 697c135..1b946ff 100644 --- a/docs/intro.html +++ b/docs/intro.html @@ -4,7 +4,7 @@ Introduction | TOS2CA Documentation - + diff --git a/docs/tos2ca-documentation.html b/docs/tos2ca-documentation.html index 845aaf6..37d63d8 100644 --- a/docs/tos2ca-documentation.html +++ b/docs/tos2ca-documentation.html @@ -4,7 +4,7 @@ Documentation | TOS2CA Documentation - + diff --git a/docs/user-interface.html b/docs/user-interface.html index 6b4dfa8..dbfa8f6 100644 --- a/docs/user-interface.html +++ b/docs/user-interface.html @@ -4,7 +4,7 @@ User Interface | TOS2CA Documentation - + diff --git a/governance.html b/governance.html index 71cae7f..e4d6384 100644 --- a/governance.html +++ b/governance.html @@ -4,7 +4,7 @@ Governance | TOS2CA Documentation - + diff --git a/index.html b/index.html index 2da7a73..dc9edf2 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ Hello from TOS2CA Documentation | TOS2CA Documentation - + diff --git a/license.html b/license.html index 6065a3c..0551ff2 100644 --- a/license.html +++ b/license.html @@ -4,7 +4,7 @@ License | TOS2CA Documentation - + diff --git a/markdown-page.html b/markdown-page.html index 43eb60d..a778e7f 100644 --- a/markdown-page.html +++ b/markdown-page.html @@ -4,7 +4,7 @@ Markdown page example | TOS2CA Documentation - +