diff --git a/.github/workflows/blog.yaml b/.github/workflows/blog.yaml index 8f532af8a..61b271309 100644 --- a/.github/workflows/blog.yaml +++ b/.github/workflows/blog.yaml @@ -50,7 +50,7 @@ jobs: API_KEY: ${{ secrets.DELPHI_GITHUB_ACTIONS_EPIDATA_API_KEY }} run: | npm run build:blog - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: blog path: | diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 7333eaacb..c2c76f933 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -26,7 +26,7 @@ jobs: - name: Build run: npm run build - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: website path: ./public diff --git a/content/about/publications/images/forecast.png b/content/about/publications/images/forecast.png new file mode 100644 index 000000000..2a395dfab Binary files /dev/null and b/content/about/publications/images/forecast.png differ diff --git a/content/about/publications/images/paper-2023-nowcasting-reported.jpg b/content/about/publications/images/paper-2023-nowcasting-reported.jpg new file mode 100644 index 000000000..4b7cde612 Binary files /dev/null and b/content/about/publications/images/paper-2023-nowcasting-reported.jpg differ diff --git a/content/about/publications/index.md b/content/about/publications/index.md index d5243d4ae..81742e7a2 100644 --- a/content/about/publications/index.md +++ b/content/about/publications/index.md @@ -1,6 +1,17 @@ --- title: Research papers: + - title: "Computationally Assisted Quality Control for Public Health Data Streams" + image: forecast.png + authors: Joshi, Mazaitis, Rosenfeld, Wilder + link: https://arxiv.org/abs/2306.16914 + journal: International Joint Conference on Artificial Intelligence + - title: "Nowcasting Reported COVID-19 Hospitalizations Using De-Identified, Aggregated Medical Insurance Claims Data" + image: paper-2023-nowcasting-reported.jpg + authors: Shen, Rumack, Wilder, Tibshirani + link: https://doi.org/10.1101/2023.12.22.23300471 + journal: medRxiv + year: 2023 - title: "Frequentist Inference for Semi-mechanistic Epidemic Models with Interventions" image: dag.jpg authors: Bong, Ventura, Wasserman diff --git a/content/blog/2023-12-20-changepoint_explore.Rmd b/content/blog/2023-12-20-changepoint_explore.Rmd new file mode 100644 index 000000000..091dbca21 --- /dev/null +++ b/content/blog/2023-12-20-changepoint_explore.Rmd @@ -0,0 +1,96 @@ +--- +title: Exploratory Analysis - Identifying Changing Variant Behavior during a Pandemic +author: Tara Lakdawala, Ananya Joshi +date: 2023-12-20 +tags: + - epidata + - changepoint analysis + - early indicators +authors: + - tara + - ajoshi +heroImage: changepoint-hero.png +heroImageThumb: changepoint-blog.png + +summary: | + We use changepoint detection algorithms to analyze Delphi's indicators and classify them as early, on-time, late, undefined, or undetermined. + +output: + blogdown::html_page: + toc: true +--- + + +## Introduction + +In November 2021, less than eighteen months after the first emergence of COVID-19, the National Institute for Communicable Diseases (NICD) in South Africa [announced a new COVID-19 variant](https://www.nicd.ac.za/covid-19-update-delta-variant-in-south-africa/). Scientists subsequently discovered that the [transmission, hospitalization](https://www.yalemedicine.org/news/covid-19-variants-of-concern-omicron), and [mortality rates](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC10125879/) of the virus variant, known as the Delta variant, differed from the Original pandemic strain^[We refer to the “Original” variant as both Alpha and Beta variants because they emerged [around the same time](https://www.verywellhealth.com/covid-variants-timeline-6741198#toc-b117-alpha).]. Methods that can detect these changes in underlying distributions of values in public health indicators (like cases, hospitalizations and deaths) can be useful in identifying changing health dynamics, like an emerging virus variant. We specifically use a technique called **changepoint detection** to analyze the power of Delphi’s historically available [indicators](https://cmu-delphi.github.io/delphi-epidata/api/covidcast_signals.html) to identify changes in COVID-19 variant behavior between January 30, 2021 and September 17, 2022^[Range based on the data history available for many of the Delphi indicators]. + +## Establishing National Ground Truth Changepoints + +To establish when the composition of different COVID-19 variants changed, we used three changepoint detection algorithms: [PELT](https://centre-borelli.github.io/ruptures-docs/user-guide/detection/pelt/), [Binary Segmentation](https://centre-borelli.github.io/ruptures-docs/user-guide/detection/binseg/), and [Bottom-up Segmentation](https://centre-borelli.github.io/ruptures-docs/user-guide/detection/bottomup/) on Delphi’s national [JHU-CSSE COVID-19 Cases](https://cmu-delphi.github.io/delphi-epidata/api/covidcast-signals/jhu-csse.html) stream^[These methods **do not** require a set number of changepoints.].This stream was the smoothed 7-day average of the number of new confirmed COVID-19 cases (for all variants) in the United States (US). After aggregating the changepoints at a weekly level, we marked the weeks where all three methods agreed for the national cases data stream (Fig. 1). To corroborate these points, we also used the [CDC’s COVID Data Tracker](https://covid.cdc.gov/covid-data-tracker/#variant-proportions), which reports the ratio of different COVID-19 sub-variant variants among the infected US population. We combine the different sub-strains of COVID in the data to represent the three dominant variants: “Original,” “Delta,” and “Omicron.” These changes in variant makeup visually match the ground truth changepoints from the national signal, as seen in Figure 1. + +
In November 2021, less than eighteen months after the first emergence of COVID-19, the National Institute for Communicable Diseases (NICD) in South Africa announced a new COVID-19 variant. Scientists subsequently discovered that the transmission, hospitalization, and mortality rates of the virus variant, known as the Delta variant, differed from the Original pandemic strain1. Methods that can detect these changes in underlying distributions of values in public health indicators (like cases, hospitalizations and deaths) can be useful in identifying changing health dynamics, like an emerging virus variant. We specifically use a technique called changepoint detection to analyze the power of Delphi’s historically available indicators to identify changes in COVID-19 variant behavior between January 30, 2021 and September 17, 20222.
+To establish when the composition of different COVID-19 variants changed, we used three changepoint detection algorithms: PELT, Binary Segmentation, and Bottom-up Segmentation on Delphi’s national JHU-CSSE COVID-19 Cases stream3.This stream was the smoothed 7-day average of the number of new confirmed COVID-19 cases (for all variants) in the United States (US). After aggregating the changepoints at a weekly level, we marked the weeks where all three methods agreed for the national cases data stream (Fig. 1). To corroborate these points, we also used the CDC’s COVID Data Tracker, which reports the ratio of different COVID-19 sub-variant variants among the infected US population. We combine the different sub-strains of COVID in the data to represent the three dominant variants: “Original,” “Delta,” and “Omicron.” These changes in variant makeup visually match the ground truth changepoints from the national signal, as seen in Figure 1.
++
+Next, we needed to identify how these ground truth changepoints compared to changepoints in indicators (using the same three algorithms). We used all available data streams during our selected time range from Delphi’s COVIDCast database, which corresponds to 60 indicators (including the Facebook survey, Google Search, claims, hospitalization, and mortality indicators), each at the state/territory and national tier. When we aggregated the calculated changepoints per indicator per week, as Fig. 2 shows, we identified that some weeks have many more changepoints than others. To match the number of ground truth changepoints, we filter to the top 5 weeks per indicator (major indicator changepoints) to directly compare with the ground truth changepoints.
+Then, we categorized indicators as early, on-time, or late using the following definitions:
+As we expect COVID dynamics (like waves) to last around four weeks, if any major indicator changepoint is more than 28 days away from the nearest ground truth changepoint, it is likely a changepoint from an unrelated phenomena. Therefore, we only consider changepoints to have a leading or lagging relationship if the major indicator changepoint is within 28 days from a ground truth changepoint. + +
+In total, of the sixty indicators, 4 were early, 8 were on time, and 12 were late. There was also 1 undetermined indicator and 35 indicators whose major indicator changepoints had inconsistent relationships with the ground truth changepoints. Some indicators in this inconsistent category started out as early indicators and ended as late indicators, while others started as late indicators but ended as on time indicators, showing that indicators may not always be consistently early, on time, or late. +Interestingly, indicators from the same source were usually classified similarly, suggesting that indicator timeliness depends heavily on the data provider. Still, while there was some variance in the leading nature of early indicators, other categories had much less variance.
+Classification | +# of Indicators | +95% CI for Leadingness (in days) Using Range of 28 days | +
---|---|---|
Early | +4 | +13.125±5.54 | +
On time | +12 | +1.55±1.69 | +
Late | +8 | +-14.62±1.6 | +
Undetermined | +1 | +28 | +
Variable | +35 | +1.13±2.13 | +
Early Indicators: Early indicators are the most important in identifying changing health dynamics. For example, the majority (6/8) of indicators from Google Symptoms are early indicators, especially indicators related to fevers. In Fig 3. we see one example of Google Symptoms early indicator (which includes searches for Fever, Hyperthermia, Chills, Shivering, and Low grade fever), where the major indicator changepoints lead ground truth changepoints by approximately one week.
+On-time Indicators: On-time indicators (Fig. 4) most frequently correspond to data involving insurance claims, suspected COVID cases among hospital admissions, and, unsurprisingly, other COVID-19 incidence data reports from JHU-CSSE. Other notable early or on-time indicators include: the number of doctors visits for cases with COVID or COVID-like symptoms, Data Strategy and Execution Workgroup Community Profile Report (CPR) data on the number of people who were fully vaccinated.
+Variable Indicators: Variable indicators are perhaps the most interesting set of indicators. For most of the available range, the JHU-CSSE new confirmed COVID-19 cases daily indicator was early, but the last changepoint was late. Many other JHU-CSSE indicators follow this pattern. Another example is the Google Symptom Search data related to smell and taste loss, specifically, “Anosmia, Dysgeusia, Ageusia.” In the figure below, we see the relationship between the indicator’s major changepoints and the ground truth change from early in the first ground truth changepoint to late in the middle of the pandemic, and then early again for the rest of the ground truth changepoints.
++
+Due to state level reporting inconsistencies, we could only analyze 60 out of 79 indicators available in the timespan investigated. Many of these indicators were missing data, like that the number of confirmed COVID-19 patients admitted to all hospitals in the state of Alaska was reported only five times within the 595 day search window. We also recognize that not all regions will be impacted by emerging variants at the same time in the same way and that a further detailed analysis which takes into account different impacts per region is an important avenue for future work.
+Overall, Changepoint detection is a powerful tool to identify early indicators. Of Delphi’s sixty indicators, we identified several on time and early indicators of emerging variants from the data available. We also found out that for many of the indicators, the number of days they led or lagged disease phenomena changed over time. Still, if these public health indicators continue to receive high quality data, tracking these indicators closely can help us identify changing health dynamics.
+The python notebook used for this analysis can be found on Github here.
+We refer to the “Original” variant as both Alpha and Beta variants because they emerged around the same time.↩︎
Range based on the data history available for many of the Delphi indicators↩︎
These methods do not require a set number of changepoints.↩︎
Delphi publishes millions of public-health-related data points per day, including the total number of daily influenza cases, hospitalizations, and deaths per county and state in the United States (US). This data helps public health practitioners, data professionals, and members of the public make important, informed decisions relating to health and well-being.
+Yet, as data volumes continue to grow quickly (Delphi’s data volume expanded 1000x in just 3 years), it is infeasible for data reviewers to inspect every one of these data points for subtle changes in
+These issues, if undetected, can have critical downstream ramifications on data users (as shown by the example in Fig 1).
+We care about finding data issues like these so that we can alert downstream data users accordingly. That is why our goal in the FlaSH team (Flagging Anomalies in Streams related to public Health) is to quickly identify data points that warrant human inspection and create tools to support data review. Towards this goal, our team of researchers, engineers, and data reviewers iterate on our deployed interdisciplinary approach. In this blog series, we will cover the different methods and perspectives of the FlaSH project.
+Members: Ananya Joshi, Nolan Gormley, Richa Gadgil, Tina Townes
+Former Members: Luke Neurieter, Katie Mazaitis
+Advisors: Peter Jhon, Roni Rosenfeld, Bryan Wilder
diff --git a/content/blog/images/changepoint-blog.png b/content/blog/images/changepoint-blog.png new file mode 100644 index 000000000..1961d102a Binary files /dev/null and b/content/blog/images/changepoint-blog.png differ diff --git a/content/blog/images/changepoint-hero.png b/content/blog/images/changepoint-hero.png new file mode 100644 index 000000000..deb60770c Binary files /dev/null and b/content/blog/images/changepoint-hero.png differ diff --git a/content/blog/images/flash_logo.png b/content/blog/images/flash_logo.png new file mode 100644 index 000000000..c7b029a13 Binary files /dev/null and b/content/blog/images/flash_logo.png differ diff --git a/content/blog/images/flash_long.png b/content/blog/images/flash_long.png new file mode 100644 index 000000000..85a6bc2cc Binary files /dev/null and b/content/blog/images/flash_long.png differ diff --git a/content/people/index.md b/content/people/index.md index 6e90a1d0f..2dd6f648c 100644 --- a/content/people/index.md +++ b/content/people/index.md @@ -216,10 +216,12 @@ people: affiliation: Girls of Steel Robotics team: - contributors -- firstName: Richa +- key: richa + firstName: Richa lastName: Gadgil image: richa.png affiliation: CMU/MLD + description: is a masters student in the Machine Learning Department. team: - core - key: agarcia @@ -405,9 +407,10 @@ people: lastName: Lakdawala image: tarannum-lakdawala.jpeg affiliation: CMU/CSD + description: was a contributor to the Delphi group from June-December 2021 and September 2022-May 2023 team: - contributors - future_note: Contributor, June-December 2021, September 2022-TBD + note: Contributor, June-December 2021, September 2022-May 2023 - firstName: Daniel lastName: LaLiberte image: daniel-laliberte_head-shot.jpg @@ -871,10 +874,12 @@ people: - center-of-excellence description: is a Principal Investigator in the Delphi group, and a Professor in the Department of Statistics & Data Science and the Machine Learning Department at CMU. He is also an Amazon Scholar. leaderOrder: 1 -- firstName: Tina +- key: tina + firstName: Tina lastName: Townes image: tina.png affiliation: CMU + description: is a member of the Delphi group specializing in data quality monitoring and response. team: - core - firstName: Will diff --git a/package-lock.json b/package-lock.json index c131b8c93..e38a63852 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "www-main", - "version": "3.2.9", + "version": "3.2.10", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -77,13 +77,13 @@ } }, "@xhmikosr/bin-wrapper": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@xhmikosr/bin-wrapper/-/bin-wrapper-11.0.2.tgz", - "integrity": "sha512-pm71RomgwM9M/2bW6JBqzdNY04DXtdSUIQDj4wKY353eqvTNhc32SwS451EvJVjLb4Nn5/8W9n4+MREn+wCxSA==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/bin-wrapper/-/bin-wrapper-12.0.0.tgz", + "integrity": "sha512-QMsHQ+ZIzzp4bSfytxRN33XMVEIljmU0M4MuEQ0zgk7agmZLYSGX4/OEFYpg4Xq08VwlhCCJ+8p+dMKL8WTa8g==", "dev": true, "requires": { "@xhmikosr/bin-check": "^6.0.0", - "@xhmikosr/downloader": "^13.0.1", + "@xhmikosr/downloader": "^14.0.0", "bin-version-check": "^5.1.0", "os-filter-obj": "^2.0.0" } @@ -150,21 +150,20 @@ } }, "@xhmikosr/downloader": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@xhmikosr/downloader/-/downloader-13.0.1.tgz", - "integrity": "sha512-mBvWew1kZJHfNQVVfVllMjUDwCGN9apPa0t4/z1zaUJ9MzpXjRL3w8fsfJKB8gHN/h4rik9HneKfDbh2fErN+w==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/downloader/-/downloader-14.0.0.tgz", + "integrity": "sha512-qoKPKzGyoSZ7HxkKaMSFOA9dNnmow6nMNlOqoRvKkDvFhDVNjma6CBr/5o/oXtlQk+mEHxZWeHSNHHpWte4ApQ==", "dev": true, "requires": { "@xhmikosr/archive-type": "^6.0.1", "@xhmikosr/decompress": "^9.0.1", "content-disposition": "^0.5.4", + "defaults": "^2.0.2", "ext-name": "^5.0.0", - "file-type": "^18.5.0", - "filenamify": "^5.1.1", + "file-type": "^18.7.0", + "filenamify": "^6.0.0", "get-stream": "^6.0.1", - "got": "^12.6.1", - "merge-options": "^3.0.4", - "p-event": "^5.0.1" + "got": "^13.0.0" } }, "ansi-escapes": { @@ -420,6 +419,12 @@ } } }, + "defaults": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-2.0.2.tgz", + "integrity": "sha512-cuIw0PImdp76AOfgkjbW4VhQODRmNNcKR73vdCH5cLd/ifj7aamfoXvYgfGkEAjNJZ3ozMIy9Gu2LutUkGEPbA==", + "dev": true + }, "defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", @@ -438,12 +443,6 @@ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, - "escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true - }, "eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", @@ -539,14 +538,12 @@ "dev": true }, "filenamify": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-5.1.1.tgz", - "integrity": "sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-6.0.0.tgz", + "integrity": "sha512-vqIlNogKeyD3yzrm0yhRMQg8hOVwYcYRfjEoODd49iCprMn4HL85gK3HcykQE53EPIpX3HcAbGA5ELQv216dAQ==", "dev": true, "requires": { - "filename-reserved-regex": "^3.0.0", - "strip-outer": "^2.0.0", - "trim-repeated": "^2.0.0" + "filename-reserved-regex": "^3.0.0" } }, "fill-range": { @@ -640,9 +637,9 @@ } }, "got": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", - "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", + "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==", "dev": true, "requires": { "@sindresorhus/is": "^5.2.0", @@ -695,12 +692,12 @@ } }, "hugo-bin": { - "version": "0.117.0", - "resolved": "https://registry.npmjs.org/hugo-bin/-/hugo-bin-0.117.0.tgz", - "integrity": "sha512-Wy0X7kxQ1nhpfUUtaVv428Lsg1j1ZZr9O7Ii+g0ErAoswNt/rEWtjJfpZVTYb+TaPIfwJLnqMTbf9mjPSGgNhw==", + "version": "0.118.0", + "resolved": "https://registry.npmjs.org/hugo-bin/-/hugo-bin-0.118.0.tgz", + "integrity": "sha512-YVmmJIhoN9wJtHOR+FfVP2OFDymJF1Nop2MKSFmIKqOSu9B7ZfAn+yVCwernWNelepacjSYSoAebt+vFSsF5+g==", "dev": true, "requires": { - "@xhmikosr/bin-wrapper": "^11.0.2", + "@xhmikosr/bin-wrapper": "^12.0.0", "pkg-conf": "^4.0.0" } }, @@ -1097,23 +1094,6 @@ "semver": "^7.5.3" } }, - "merge-options": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", - "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", - "dev": true, - "requires": { - "is-plain-obj": "^2.1.0" - }, - "dependencies": { - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - } - } - }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -1223,15 +1203,6 @@ "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "dev": true }, - "p-event": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-5.0.1.tgz", - "integrity": "sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==", - "dev": true, - "requires": { - "p-timeout": "^5.0.2" - } - }, "p-limit": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", @@ -1250,12 +1221,6 @@ "p-limit": "^4.0.0" } }, - "p-timeout": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", - "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", - "dev": true - }, "path-exists": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", @@ -1333,9 +1298,9 @@ } }, "prettier": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", - "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", + "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", "dev": true }, "prettier-plugin-go-template": { @@ -1590,9 +1555,9 @@ } }, "streamx": { - "version": "2.15.5", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.5.tgz", - "integrity": "sha512-9thPGMkKC2GctCzyCUjME3yR03x2xNo0GPKGkRw2UMYN+gqWa9uqpyNWhmsNCutU5zHmkUum0LsCRQTXUgUCAg==", + "version": "2.15.6", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz", + "integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==", "dev": true, "requires": { "fast-fifo": "^1.1.0", @@ -1707,12 +1672,6 @@ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true }, - "strip-outer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-2.0.0.tgz", - "integrity": "sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==", - "dev": true - }, "strtok3": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", @@ -1765,15 +1724,6 @@ "ieee754": "^1.2.1" } }, - "trim-repeated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-2.0.0.tgz", - "integrity": "sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==", - "dev": true, - "requires": { - "escape-string-regexp": "^5.0.0" - } - }, "type-fest": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", diff --git a/package.json b/package.json index cf1fd9abb..cb652d571 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "www-main", - "version": "3.2.9", + "version": "3.2.10", "private": true, "dependencies": { "@fortawesome/fontawesome-free": "^6.5.1", @@ -12,10 +12,10 @@ "www-epivis": "https://github.com/cmu-delphi/www-epivis/releases/download/v2.0.3/www-epivis-2.0.3.tgz" }, "devDependencies": { - "hugo-bin": "^0.117.0", + "hugo-bin": "^0.118.0", "husky": "^8.0.3", "lint-staged": "^15.2.0", - "prettier": "^3.1.0", + "prettier": "^3.1.1", "prettier-plugin-go-template": "^0.0.15", "rimraf": "^5.0.5", "shx": "^0.3.4" diff --git a/static/blog/2023-12-20-changepoint_explore_files/image1.png b/static/blog/2023-12-20-changepoint_explore_files/image1.png new file mode 100644 index 000000000..39a830d02 Binary files /dev/null and b/static/blog/2023-12-20-changepoint_explore_files/image1.png differ diff --git a/static/blog/2023-12-20-changepoint_explore_files/image2.png b/static/blog/2023-12-20-changepoint_explore_files/image2.png new file mode 100644 index 000000000..498a0c9f1 Binary files /dev/null and b/static/blog/2023-12-20-changepoint_explore_files/image2.png differ diff --git a/static/blog/2023-12-20-changepoint_explore_files/image3.png b/static/blog/2023-12-20-changepoint_explore_files/image3.png new file mode 100644 index 000000000..41f723e11 Binary files /dev/null and b/static/blog/2023-12-20-changepoint_explore_files/image3.png differ diff --git a/static/blog/2023-12-20-changepoint_explore_files/image4.png b/static/blog/2023-12-20-changepoint_explore_files/image4.png new file mode 100644 index 000000000..f678905e0 Binary files /dev/null and b/static/blog/2023-12-20-changepoint_explore_files/image4.png differ diff --git a/static/blog/2023-12-20-changepoint_explore_files/image5.png b/static/blog/2023-12-20-changepoint_explore_files/image5.png new file mode 100644 index 000000000..b7393c222 Binary files /dev/null and b/static/blog/2023-12-20-changepoint_explore_files/image5.png differ diff --git a/static/blog/2024-01-01-flash-intro/forecast.jpg b/static/blog/2024-01-01-flash-intro/forecast.jpg new file mode 100644 index 000000000..9d6739107 Binary files /dev/null and b/static/blog/2024-01-01-flash-intro/forecast.jpg differ