diff --git a/.gitignore b/.gitignore index 7a09f42..57e2df9 100644 --- a/.gitignore +++ b/.gitignore @@ -66,4 +66,5 @@ CLAUDE.md # MCP files node_modules/ -test-pu \ No newline at end of file +test-pu +**/*.quarto_ipynb diff --git a/_freeze/pages/gallery/reports/openwashdata-02/index/execute-results/html.json b/_freeze/pages/gallery/reports/openwashdata-02/index/execute-results/html.json new file mode 100644 index 0000000..8fe814c --- /dev/null +++ b/_freeze/pages/gallery/reports/openwashdata-02/index/execute-results/html.json @@ -0,0 +1,15 @@ +{ + "hash": "e944e9a08c5abff35244949089454fb9", + "result": { + "engine": "knitr", + "markdown": "---\ntitle: \"Final Scientific Report\"\nformat: docx\neditor_options: \n chunk_output_type: console\n---\n\n| | |\n|------------------------------------|------------------------------------|\n| **Project title:** | Open WASH data by building Open Science Competencies and Community (openwashdata) |\n| **Contribute call number:** | 1 |\n| **Project starting & end date:** | 01.03.2023 – 30.11.2025 (incl. 3 month no cost extension) |\n| **Applicant responsible for project:** | Prof. Dr. Elizabeth Tilley |\n| **Function:** | Chair of Global Health Engineering |\n| **Laboratory (and/or Department):** | Department of Mechanical and Process Engineering (D-MAVT) |\n| **Institution of the applicant:** | ETH Zurich |\n\n# Lay summary (public, 1/2 page)\n\n*Please summarise the objectives of the project, explain the progress achieved so far and – if applicable - the planned activities for the next period. This lay summary (maximum: ½ page) should be understandable by a non-expert audience and will be used for outreach and communications activities (e.g. ORD web portal). By submitting this lay summary, you thus agree to making it potentially public.*\n\nThe vision of this project is to create an active global community that applies FAIR principles to data generated in the greater Water, Sanitation, and Hygiene (WASH) sector. Current data management practices hold back progress which we address by empowering WASH professionals to engage with tools and workflows for open data and code. We introduce people to the concept of \"open by default\", as well as the use of open source software, the principles of open science, and benefits of open government (data). So far, we have developed a data cleaning and publishing workflow using the R ecosystem and are consistently applying the concepts and principles we teach. We are delivering a free online course with 10 modules for data science with R and concluded with 20 to graduate from the course, applying the learned material to a real-life dataset of their own.\n\n# Achievements (2 pages)\n\n*Please describe the work conducted and what was achieved since the beginning of the project, referring to the planned objectives, milestones, and expected results described in the proposal (maximum: 2 pages). You should also explain how the project contributes to the wider aims of the ORD Explore programme (please refer to page 1 of the application guidelines for Explore).*\n\nThis project consists of five work packages and 20 activities against which we will provide this report. The full name of each acitivity can be found in the activities table of the proposal: https://docs.google.com/spreadsheets/d/1T3NV75vVCeSRcN6FYghOrVFyWWi4WjQT5e4tqwp8jAQ/edit#gid=0).\n\n**Contribution to ORD Explore programme aims.** In addition to the contributions mentioned in the intermediate scientific report, our project was recognized by the Open Research Data Unit of the Swiss Academies of Arts and Sciences of which we received the \\[National Prize for Open Research Data 2024\\](https://ord.swiss-academies.ch/news/open-science-rewarded-four-projects-to-receive-the-national-prize-for-open-research-data.\n\n## WP0: Infrastructure Design and Installation\n\n::: callout-note\n## Goal: The Goal of WP0 is to prototype a technical foundation for the ORD toolchain at ETH in a a way that allows teaching and scientific collaboration to continue beyond the explore project's funding.\n\n**Activity 0.1.** Report was complete in intermediate scientific report.\n\n**Activity 0.2:** Report was complete in intermediate scientific report.\n\n**Activity 0.3:** As we identified Posit Cloud by Posit PBC to be the most suitable option for our needs, we did not compare the costs to the hosting costs and technical overhead of Virtual Machines hosted at ETH Zurich.\n:::\n\n## WP1: Mobilize Community\n\n::: callout-note\n## Goal: Create and grow an international network of data-curious practitioners and students who may be interested in pursuing one or more of the subsequent activities.\n\n**Activity 1.1.** Report was complete in intermediate scientific report.\n\n**Activity 1.2.** Report was complete in intermediate scientific report.\n:::\n\n## WP2: Data sharing\n\n::: callout-note\n## Goal: Solicit and receive interest in providing data to be published openly; develop an easy-to-use data-collection protocol and tool; receive data from interested partners.\n\n**Activity 2.1.** We have continued to invest time and resources into further development of our data publication. By the end of this reporting period, we expanded on the functionality of the `washr` R package, which was then further developed in the 2nd Explore project we have received funding for.\n\n**Activity 2.2.** Our strategy has shifted to encourage participants of our data science online training programmes to use their own data in our classes and follow up to publish the data as ORD, using our established workflows. More information under WP3: Data cleaning.\n\n**Activity 2.3:** We continue to expand the openwashdata community on Element using the Matrix Chat, which is our main support channel. Additionally, we prepared a first version of a guide titled [\"Data Publishing with washr\"](https://global-health-engineering.github.io/ghedatapublishing/).\n:::\n\n## WP3: Data cleaning\n\n::: callout-note\n## Goal: Facilitate user-directed data cleaning (including documentation and metadata) to produce a first set of analysis-ready open datasets\n\n**Activity 3.1.** As reported in the intermediate scientific report, we have engaged with participants of our \"data science for openwashdata\" course in data cleaning processes. We successfully published five datasets from the 20 graduates of the first iteration. We realized that this approach is the most effective way to engage with the community and support them in data cleaning and data publishing. Therefore, we decided to invest more time into these data management practices in future iterations of \"data science for openwashdata\" and develop further material to teach our workflows. This further led to a 1-day in-person workshop in Durban, South Africa under Activity 3.5.\n\n**Activity 3.2.** Report was complete in intermediate scientific report.\n\n**Activity 3.3.** We concluded this first iteration of \"data science for openwashdata\" with 20 graduates. The programme was highly successful and learnings a future iteration were documented. One key take-away was that we have to provide video recordings of the live sessions, as many participants do not have access to a reliable source of electricity or internet connection. As watching video recordings is against our principles for effective teaching and learning, we decided to come up with a mentorship programme for participants to still have live exchanges with their peers.\n\n**Activity 3.4:** We have hosted two hackathons. The [first hackathon](https://openwashdata.org/pages/events/2024-06-21-hackathon/) was a hands-on educational event for our `washr` data package workflow and was attended by five people. The goal was to introduce the data package to participants and then use it to publish datasets that are on our list for data publication. The hackathon helped us beta-test our R package and resulted in 5 new data publications, one by each participant. The [second hackathon](https://openwashdata.org/pages/blog/posts/2024-12-09-hackathon/) was hosted online and the goal was to use one of our data packages to produce a compelling story, using the data analysis tools that participants prefer. The hackathon was attended by 20 people and we distributed three monetary prizes worth 1500 CHF in total.\n\n**Activity 3.5:**\n\nWe hosted a [1-day workshop](https://fairdatapub-washcentre.github.io/website/) with our partners at the WASH R&D Center at the University of KwaZulu-Natal. The workshop is titled \"FAIR Data Publishing\" and builds on the hackathon that was an educational event for our `washr` data package workflow. This 1-day workshop was attended by 20 participants of the research groups, representing more than 80% of the total research staff. It was highly successful as many participants are complete novices in using computational workflows such as R, Git, and GitHub, and are new to the concepts of FAIR data publishing. We could remove barriers that will allow us to effectively work with the researchers in our follow-up 2nd Explore project.\n:::\n\n## WP4: Data publishing and communication\n\n::: callout-note\n## Goal: Increase reach and impact of data by making it citable and creating data communication products\n\n**Activity 4.1.** By the end of this project, we had published 28 datasets. An updated list is provided in the list of outputs and a live link to the datasets is available on our [openwashdata website data list](https://openwashdata.org/pages/gallery/data/). This list will continue to grow beyond the scope of the projects with our goal to continue to publish one dataset per month from the community and more than half of all primary datasets used by participants of our \"data science for openwashdata\" course.\n\n**Activity 4.2.** We continue to improve the templates for our data package website and identify datasets for which it is worth developing a data analysis report.\n\n**Activity 4.3.** Report was complete in intermediate scientific report.\n\n**Activity 4.4.** Report was complete in intermediate scientific report.\n:::\n\n# Deviations from original plan ()\n\n*Please describe and justify any major changes or deviations from the original plan as set out in the application form (e.g. expected results and objectives), notably unexpected challenges/problems (or unforeseen/unexpected positive outcomes) and how they have been addressed. Events such as changes of personnel, changes in the financial resources’ usage plan and delayed start of project must be mentioned and – if needed – agreed in advance. If applicable, the implications and impact for the 2nd phase of the project must also be described.*\n\nWe had no further deviations from the plan that were not previously documented in the intermediate scientific report.\n\n# Value delivered for ORD practices/communities\n\n*Please explain the impact (achieved or expected) of the project and ORD practices on new or existing ORD communit(ies) during and beyond the funding period, including on the wider ETH Domain. Please explain whether the project will continue and if so, how it will be sustained. Please also describe the main outreach and dissemination activities undertaken and/or planned.*\n\nSee intermediate scientific report for detailed reporting. The workflow continues to gain interest by the scientific community at ETH Zurich. This was recognized by the Open Research Data Unit of the Swiss Academies of Arts and Sciences, which awarded us the [National Prize for Open Research Data 2024](https://ord.swiss-academies.ch/news/open-science-rewarded-four-projects-to-receive-the-national-prize-for-open-research-data).\n\nBeyond the scope of the project, the project lead is increasingly receiving requests for support in data management and data publishing from researchers at ETH Zurich. This also resulted in providing input to the [ETH Library 17:15 Kolloquium series in November 2024](https://library.ethz.ch/news-und-kurse/veranstaltungen/17-15-kolloquium-der-eth-bibliothek/data-stewardship.html).\n\n# International exposure & collaborations\n\n*Please explain – if applicable - how the project is gathering the communit(ies) around an open practice and how it is achieving international exposure and influence. Also, comment on how the project is fostering new or existing collaborations.*\n\nOur data publishing workflow can be applied by any community. It is independent of disciplines, and can be used to publish any type of data. We engage with researchers nationally and internationally to apply these open practices. The exposure at the end of the project and into the next phases beyond this reporting period has increased significantly where we are now in the position to influence the development of data management strategies at ETH Zurich and beyond. The final goal for us is to complete documentation of the data publishing workflow through scientific publications and develop Open Educational Resources that we can use to invest into training of trainer concepts. After any event where our workflows are presented, new collaborations have established themselves which has led and continues to lead to writing proposals for further funding or being invited to decision-making bodies (e.g., board members).\n\n# List of Outputs\n\n*Please indicate the outputs directly related to this ORD project since it began and provide further details in the table below, if and as applicable. This list of outputs (e.g. links) may be used for outreach and dissemination activities (e.g. ORD web portal); please indicate in the table below if any information is confidential and cannot be shared.*\n\n\n::: {.cell}\n\n```{.r .cell-code}\nlibrary(tidyverse)\n```\n\n::: {.cell-output .cell-output-stderr}\n\n```\n── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──\n✔ dplyr 1.2.1 ✔ readr 2.2.0\n✔ forcats 1.0.1 ✔ stringr 1.6.0\n✔ ggplot2 4.0.3 ✔ tibble 3.3.1\n✔ lubridate 1.9.5 ✔ tidyr 1.3.2\n✔ purrr 1.2.2 \n── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──\n✖ dplyr::filter() masks stats::filter()\n✖ dplyr::lag() masks stats::lag()\nℹ Use the conflicted package () to force all conflicts to become errors\n```\n\n\n:::\n\n```{.r .cell-code}\nlibrary(googlesheets4)\n\noutputs <- googlesheets4::read_sheet(\"https://docs.google.com/spreadsheets/d/16KPKCi-bkoX9fi2PqJysdPYJXzLnsdX4wbHTxAMz7cU/edit?gid=0#gid=0\")\n```\n\n::: {.cell-output .cell-output-stderr}\n\n```\nℹ Suitable tokens found in the cache, associated with these emails:\n• 'lars@lse.de'\n• 'lschoebitz@ethz.ch'\n Defaulting to the first email.\n! Using an auto-discovered, cached token.\n To suppress this message, modify your code or options to clearly consent to\n the use of a cached token.\n See gargle's \"Non-interactive auth\" vignette for more details:\n \nℹ The googlesheets4 package is using a cached token for 'lars@lse.de'.\nAuto-refreshing stale OAuth token.\n✔ Reading from \"tbl-19-final-report-section-8\".\n✔ Range 'Sheet1'.\n```\n\n\n:::\n:::\n\n\n\n# Appendix\n\n*Please attach any additional documentation relevant to the ORD project (e.g. screenshots, resources developed, outreach material, copies/link to publications etc.). Among other, it would be particularly useful to include any images/graphs (hereunder or as an attachment) that could be shared for the purpose of outreach and dissemination activities (e.g. ORD web portal). Please indicate if any information is confidential and cannot be shared.*\n", + "supporting": [], + "filters": [ + "rmarkdown/pagebreak.lua" + ], + "includes": {}, + "engineDependencies": {}, + "preserve": {}, + "postProcess": true + } +} \ No newline at end of file diff --git a/_freeze/site_libs/quarto-listing/list.min.js b/_freeze/site_libs/quarto-listing/list.min.js index 511346f..43dfd15 100644 --- a/_freeze/site_libs/quarto-listing/list.min.js +++ b/_freeze/site_libs/quarto-listing/list.min.js @@ -1,2 +1,2 @@ -var List;List=function(){var t={"./src/add-async.js":function(t){t.exports=function(t){return function e(r,n,s){var i=r.splice(0,50);s=(s=s||[]).concat(t.add(i)),r.length>0?setTimeout((function(){e(r,n,s)}),1):(t.update(),n(s))}}},"./src/filter.js":function(t){t.exports=function(t){return t.handlers.filterStart=t.handlers.filterStart||[],t.handlers.filterComplete=t.handlers.filterComplete||[],function(e){if(t.trigger("filterStart"),t.i=1,t.reset.filter(),void 0===e)t.filtered=!1;else{t.filtered=!0;for(var r=t.items,n=0,s=r.length;nv.page,a=new g(t[s],void 0,n),v.items.push(a),r.push(a)}return v.update(),r}m(t.slice(0),e)}},this.show=function(t,e){return this.i=t,this.page=e,v.update(),v},this.remove=function(t,e,r){for(var n=0,s=0,i=v.items.length;s-1&&r.splice(n,1),v},this.trigger=function(t){for(var e=v.handlers[t].length;e--;)v.handlers[t][e](v);return v},this.reset={filter:function(){for(var t=v.items,e=t.length;e--;)t[e].filtered=!1;return v},search:function(){for(var t=v.items,e=t.length;e--;)t[e].found=!1;return v}},this.update=function(){var t=v.items,e=t.length;v.visibleItems=[],v.matchingItems=[],v.templater.clear();for(var r=0;r=v.i&&v.visibleItems.lengthe},innerWindow:function(t,e,r){return t>=e-r&&t<=e+r},dotted:function(t,e,r,n,s,i,a){return this.dottedLeft(t,e,r,n,s,i)||this.dottedRight(t,e,r,n,s,i,a)},dottedLeft:function(t,e,r,n,s,i){return e==r+1&&!this.innerWindow(e,s,i)&&!this.right(e,n)},dottedRight:function(t,e,r,n,s,i,a){return!t.items[a-1].values().dotted&&(e==n&&!this.innerWindow(e,s,i)&&!this.right(e,n))}};return function(e){var n=new i(t.listContainer.id,{listClass:e.paginationClass||"pagination",item:e.item||"
  • ",valueNames:["page","dotted"],searchClass:"pagination-search-that-is-not-supposed-to-exist",sortClass:"pagination-sort-that-is-not-supposed-to-exist"});s.bind(n.listContainer,"click",(function(e){var r=e.target||e.srcElement,n=t.utils.getAttribute(r,"data-page"),s=t.utils.getAttribute(r,"data-i");s&&t.show((s-1)*n+1,n)})),t.on("updated",(function(){r(n,e)})),r(n,e)}}},"./src/parse.js":function(t,e,r){t.exports=function(t){var e=r("./src/item.js")(t),n=function(r,n){for(var s=0,i=r.length;s0?setTimeout((function(){e(r,s)}),1):(t.update(),t.trigger("parseComplete"))};return t.handlers.parseComplete=t.handlers.parseComplete||[],function(){var e=function(t){for(var e=t.childNodes,r=[],n=0,s=e.length;n]/g.exec(t)){var e=document.createElement("tbody");return e.innerHTML=t,e.firstElementChild}if(-1!==t.indexOf("<")){var r=document.createElement("div");return r.innerHTML=t,r.firstElementChild}}},a=function(e,r,n){var s=void 0,i=function(e){for(var r=0,n=t.valueNames.length;r=1;)t.list.removeChild(t.list.firstChild)},function(){var r;if("function"!=typeof t.item){if(!(r="string"==typeof t.item?-1===t.item.indexOf("<")?document.getElementById(t.item):i(t.item):s()))throw new Error("The list needs to have at least one item on init otherwise you'll have to add a template.");r=n(r,t.valueNames),e=function(){return r.cloneNode(!0)}}else e=function(e){var r=t.item(e);return i(r)}}()};t.exports=function(t){return new e(t)}},"./src/utils/classes.js":function(t,e,r){var n=r("./src/utils/index-of.js"),s=/\s+/;Object.prototype.toString;function i(t){if(!t||!t.nodeType)throw new Error("A DOM element reference is required");this.el=t,this.list=t.classList}t.exports=function(t){return new i(t)},i.prototype.add=function(t){if(this.list)return this.list.add(t),this;var e=this.array();return~n(e,t)||e.push(t),this.el.className=e.join(" "),this},i.prototype.remove=function(t){if(this.list)return this.list.remove(t),this;var e=this.array(),r=n(e,t);return~r&&e.splice(r,1),this.el.className=e.join(" "),this},i.prototype.toggle=function(t,e){return this.list?(void 0!==e?e!==this.list.toggle(t,e)&&this.list.toggle(t):this.list.toggle(t),this):(void 0!==e?e?this.add(t):this.remove(t):this.has(t)?this.remove(t):this.add(t),this)},i.prototype.array=function(){var t=(this.el.getAttribute("class")||"").replace(/^\s+|\s+$/g,"").split(s);return""===t[0]&&t.shift(),t},i.prototype.has=i.prototype.contains=function(t){return this.list?this.list.contains(t):!!~n(this.array(),t)}},"./src/utils/events.js":function(t,e,r){var n=window.addEventListener?"addEventListener":"attachEvent",s=window.removeEventListener?"removeEventListener":"detachEvent",i="addEventListener"!==n?"on":"",a=r("./src/utils/to-array.js");e.bind=function(t,e,r,s){for(var o=0,l=(t=a(t)).length;o32)return!1;var a=n,o=function(){var t,r={};for(t=0;t=p;b--){var j=o[t.charAt(b-1)];if(C[b]=0===m?(C[b+1]<<1|1)&j:(C[b+1]<<1|1)&j|(v[b+1]|v[b])<<1|1|v[b+1],C[b]&d){var x=l(m,b-1);if(x<=u){if(u=x,!((c=b-1)>a))break;p=Math.max(1,2*a-c)}}}if(l(m+1,a)>u)break;v=C}return!(c<0)}},"./src/utils/get-attribute.js":function(t){t.exports=function(t,e){var r=t.getAttribute&&t.getAttribute(e)||null;if(!r)for(var n=t.attributes,s=n.length,i=0;i=48&&t<=57}function i(t,e){for(var i=(t+="").length,a=(e+="").length,o=0,l=0;o=i&&l=a?-1:l>=a&&o=i?1:i-a}i.caseInsensitive=i.i=function(t,e){return i((""+t).toLowerCase(),(""+e).toLowerCase())},Object.defineProperties(i,{alphabet:{get:function(){return e},set:function(t){r=[];var s=0;if(e=t)for(;s0?setTimeout((function(){e(r,n,s)}),1):(t.update(),n(s))}}},"./src/filter.js":function(t){t.exports=function(t){return t.handlers.filterStart=t.handlers.filterStart||[],t.handlers.filterComplete=t.handlers.filterComplete||[],function(e){if(t.trigger("filterStart"),t.i=1,t.reset.filter(),void 0===e)t.filtered=!1;else{t.filtered=!0;for(var r=t.items,n=0,s=r.length;nv.page,a=new g(t[s],void 0,n),v.items.push(a),r.push(a)}return v.update(),r}m(t.slice(0),e)}},this.show=function(t,e){return this.i=t,this.page=e,v.update(),v},this.remove=function(t,e,r){for(var n=0,s=0,i=v.items.length;s-1&&r.splice(n,1),v},this.trigger=function(t){for(var e=v.handlers[t].length;e--;)v.handlers[t][e](v);return v},this.reset={filter:function(){for(var t=v.items,e=t.length;e--;)t[e].filtered=!1;return v},search:function(){for(var t=v.items,e=t.length;e--;)t[e].found=!1;return v}},this.update=function(){var t=v.items,e=t.length;v.visibleItems=[],v.matchingItems=[],v.templater.clear();for(var r=0;r=v.i&&v.visibleItems.lengthe},innerWindow:function(t,e,r){return t>=e-r&&t<=e+r},dotted:function(t,e,r,n,s,i,a){return this.dottedLeft(t,e,r,n,s,i)||this.dottedRight(t,e,r,n,s,i,a)},dottedLeft:function(t,e,r,n,s,i){return e==r+1&&!this.innerWindow(e,s,i)&&!this.right(e,n)},dottedRight:function(t,e,r,n,s,i,a){return!t.items[a-1].values().dotted&&(e==n&&!this.innerWindow(e,s,i)&&!this.right(e,n))}};return function(e){var n=new i(t.listContainer.id,{listClass:e.paginationClass||"pagination",item:e.item||"
  • ",valueNames:["page","dotted"],searchClass:"pagination-search-that-is-not-supposed-to-exist",sortClass:"pagination-sort-that-is-not-supposed-to-exist"});s.bind(n.listContainer,"click",(function(e){var r=e.target||e.srcElement,n=t.utils.getAttribute(r,"data-page"),s=t.utils.getAttribute(r,"data-i");s&&t.show((s-1)*n+1,n)})),t.on("updated",(function(){r(n,e)})),r(n,e)}}},"./src/parse.js":function(t,e,r){t.exports=function(t){var e=r("./src/item.js")(t),n=function(r,n){for(var s=0,i=r.length;s0?setTimeout((function(){e(r,s)}),1):(t.update(),t.trigger("parseComplete"))};return t.handlers.parseComplete=t.handlers.parseComplete||[],function(){var e=function(t){for(var e=t.childNodes,r=[],n=0,s=e.length;n]/g.exec(t)){var e=document.createElement("tbody");return e.innerHTML=t,e.firstElementChild}if(-1!==t.indexOf("<")){var r=document.createElement("div");return r.innerHTML=t,r.firstElementChild}}},a=function(e,r,n){var s=void 0,i=function(e){for(var r=0,n=t.valueNames.length;r=1;)t.list.removeChild(t.list.firstChild)},function(){var r;if("function"!=typeof t.item){if(!(r="string"==typeof t.item?-1===t.item.indexOf("<")?document.getElementById(t.item):i(t.item):s()))throw new Error("The list needs to have at least one item on init otherwise you'll have to add a template.");r=n(r,t.valueNames),e=function(){return r.cloneNode(!0)}}else e=function(e){var r=t.item(e);return i(r)}}()};t.exports=function(t){return new e(t)}},"./src/utils/classes.js":function(t,e,r){var n=r("./src/utils/index-of.js"),s=/\s+/;Object.prototype.toString;function i(t){if(!t||!t.nodeType)throw new Error("A DOM element reference is required");this.el=t,this.list=t.classList}t.exports=function(t){return new i(t)},i.prototype.add=function(t){if(this.list)return this.list.add(t),this;var e=this.array();return~n(e,t)||e.push(t),this.el.className=e.join(" "),this},i.prototype.remove=function(t){if(this.list)return this.list.remove(t),this;var e=this.array(),r=n(e,t);return~r&&e.splice(r,1),this.el.className=e.join(" "),this},i.prototype.toggle=function(t,e){return this.list?(void 0!==e?e!==this.list.toggle(t,e)&&this.list.toggle(t):this.list.toggle(t),this):(void 0!==e?e?this.add(t):this.remove(t):this.has(t)?this.remove(t):this.add(t),this)},i.prototype.array=function(){var t=(this.el.getAttribute("class")||"").replace(/^\s+|\s+$/g,"").split(s);return""===t[0]&&t.shift(),t},i.prototype.has=i.prototype.contains=function(t){return this.list?this.list.contains(t):!!~n(this.array(),t)}},"./src/utils/events.js":function(t,e,r){var n=window.addEventListener?"addEventListener":"attachEvent",s=window.removeEventListener?"removeEventListener":"detachEvent",i="addEventListener"!==n?"on":"",a=r("./src/utils/to-array.js");e.bind=function(t,e,r,s){for(var o=0,l=(t=a(t)).length;o32)return!1;var a=n,o=function(){var t,r={};for(t=0;t=p;b--){var j=o[t.charAt(b-1)];if(C[b]=0===m?(C[b+1]<<1|1)&j:(C[b+1]<<1|1)&j|(v[b+1]|v[b])<<1|1|v[b+1],C[b]&d){var x=l(m,b-1);if(x<=u){if(u=x,!((c=b-1)>a))break;p=Math.max(1,2*a-c)}}}if(l(m+1,a)>u)break;v=C}return!(c<0)}},"./src/utils/get-attribute.js":function(t){t.exports=function(t,e){var r=t.getAttribute&&t.getAttribute(e)||null;if(!r)for(var n=t.attributes,s=n.length,i=0;i=48&&t<=57}function i(t,e){for(var i=(t+="").length,a=(e+="").length,o=0,l=0;o=i&&l=a?-1:l>=a&&o=i?1:i-a}i.caseInsensitive=i.i=function(t,e){return i((""+t).toLowerCase(),(""+e).toLowerCase())},Object.defineProperties(i,{alphabet:{get:function(){return e},set:function(t){r=[];var s=0;if(e=t)for(;s { + // category is URI encoded in EJS template for UTF-8 support + category = decodeURIComponent(atob(category)); if (categoriesLoaded) { activateCategory(category); setCategoryHash(category); @@ -15,7 +17,9 @@ window["quarto-listing-loaded"] = () => { if (hash) { // If there is a category, switch to that if (hash.category) { - activateCategory(hash.category); + // category hash are URI encoded so we need to decode it before processing + // so that we can match it with the category element processed in JS + activateCategory(decodeURIComponent(hash.category)); } // Paginate a specific listing const listingIds = Object.keys(window["quarto-listings"]); @@ -58,7 +62,10 @@ window.document.addEventListener("DOMContentLoaded", function (_event) { ); for (const categoryEl of categoryEls) { - const category = categoryEl.getAttribute("data-category"); + // category needs to support non ASCII characters + const category = decodeURIComponent( + atob(categoryEl.getAttribute("data-category")) + ); categoryEl.onclick = () => { activateCategory(category); setCategoryHash(category); @@ -208,7 +215,9 @@ function activateCategory(category) { // Activate this category const categoryEl = window.document.querySelector( - `.quarto-listing-category .category[data-category='${category}'` + `.quarto-listing-category .category[data-category='${btoa( + encodeURIComponent(category) + )}']` ); if (categoryEl) { categoryEl.classList.add("active"); @@ -231,7 +240,9 @@ function filterListingCategory(category) { list.filter(function (item) { const itemValues = item.values(); if (itemValues.categories !== null) { - const categories = itemValues.categories.split(","); + const categories = decodeURIComponent( + atob(itemValues.categories) + ).split(","); return categories.includes(category); } else { return false; diff --git a/pages/blog/posts/2026-06-22-collaboration/index.qmd b/pages/blog/posts/2026-06-22-collaboration/index.qmd new file mode 100644 index 0000000..d69af2a --- /dev/null +++ b/pages/blog/posts/2026-06-22-collaboration/index.qmd @@ -0,0 +1,48 @@ +--- +title: "From course project to published dataset and paper: a collaboration with Kelsey Shaw" +description: | + How a project started during the ds4owd-001 course grew into an open dataset and a + peer-reviewed publication in Environmental Science & Technology. +categories: + - collaboration + - data publication + - ds4owd +author: Lars Schöbitz +date: "2026-06-22" +draft: true +bibliography: references.bib +format: + html: default + pdf: + toc: false + number-sections: false + colorlinks: true +--- + +Kelsey Shaw, a PhD student at the University of Victoria, took part in the [ds4owd-001 course](https://ds4owd-001.github.io/website/) between September and December 2023. During the course she began working with data she had collected for her PhD research. The openwashdata data scientist Mian Zhong supported Kelsey's project, and after the course encouraged her to publish the data underlying her work as an open dataset with openwashdata. + +Over the following two years, Kelsey worked closely with Mian and Lars. A repository for the data was created on Kelsey's GitHub profile, where the raw data, the processed data, and the R code that turns one into the other are documented. The repository was made public at the point when the research article based on the data was published. + +Kelsey's paper is now published in *Environmental Science & Technology* [@shaw2026methane], and the openwashdata team is proud to have been part of this journey. The dataset is also cited in Eawag's ERIC research data repository, and it has now been curated as an R data package [@shaw2024fecalcanuga] following the openwashdata data publication workflow. + +Check out the data: + +Check out Kelsey's article: + +## Citation + +Please cite the dataset and the article as follows. + +**Dataset:** Shaw K, Dorea C, Strande L, Niwagaba C, Zhong M (2024). *fecalcanuga: Demographic, Environmental, Technical and Physio-chemical Data on Non Sewered Sanitation Containments in Rural Canada and Urban Uganda.* + +**Article:** Shaw K, Niwagaba CB, Strande L, Dorea CC (2026). Improving Methane Emission Estimates from Nonsewered Wastewater during Storage in Septic and Holding Tanks. *Environmental Science & Technology*, 60(20), 14467-14481. + +## Links + +- ds4owd-001 course: +- Dataset in Eawag's ERIC repository: + +## References + +::: {#refs} +::: diff --git a/pages/blog/posts/2026-06-22-collaboration/references.bib b/pages/blog/posts/2026-06-22-collaboration/references.bib new file mode 100644 index 0000000..164938f --- /dev/null +++ b/pages/blog/posts/2026-06-22-collaboration/references.bib @@ -0,0 +1,19 @@ +@article{shaw2026methane, + title = {Improving Methane Emission Estimates from Nonsewered Wastewater during Storage in Septic and Holding Tanks}, + author = {Shaw, Kelsey and Niwagaba, Charles B. and Strande, Linda and Dorea, Caetano C.}, + year = {2026}, + journal = {Environmental Science \& Technology}, + volume = {60}, + number = {20}, + pages = {14467--14481}, + doi = {10.1021/acs.est.5c17325} +} + +@misc{shaw2024fecalcanuga, + title = {Fecalcanuga: {{Demographic}}, {{Environmental}}, {{Technical}} and {{Physio-chemical Data}} on {{Non Sewered Sanitation Containments}} in {{Rural Canada}} and {{Urban Uganda}}}, + shorttitle = {Fecalcanuga}, + author = {Shaw, Kelsey and Dorea, Caetano and Strande, Linda and Niwagaba, Charles and Zhong, Mian}, + year = {2024}, + url = {https://github.com/openwashdata/fecalcanuga}, + copyright = {CC-BY-4.0} +} diff --git a/pages/gallery/report/index.qmd b/pages/gallery/reports/openwashdata-01/index.qmd similarity index 100% rename from pages/gallery/report/index.qmd rename to pages/gallery/reports/openwashdata-01/index.qmd diff --git a/pages/gallery/reports/openwashdata-02/index.qmd b/pages/gallery/reports/openwashdata-02/index.qmd new file mode 100644 index 0000000..372f1d3 --- /dev/null +++ b/pages/gallery/reports/openwashdata-02/index.qmd @@ -0,0 +1,134 @@ +--- +title: "Final Scientific Report" +format: docx +editor_options: + chunk_output_type: console +--- + +| | | +|------------------------------------|------------------------------------| +| **Project title:** | Open WASH data by building Open Science Competencies and Community (openwashdata) | +| **Contribute call number:** | 1 | +| **Project starting & end date:** | 01.03.2023 – 30.11.2025 (incl. 3 month no cost extension) | +| **Applicant responsible for project:** | Prof. Dr. Elizabeth Tilley | +| **Function:** | Chair of Global Health Engineering | +| **Laboratory (and/or Department):** | Department of Mechanical and Process Engineering (D-MAVT) | +| **Institution of the applicant:** | ETH Zurich | + +# Lay summary (public, 1/2 page) + +*Please summarise the objectives of the project, explain the progress achieved so far and – if applicable - the planned activities for the next period. This lay summary (maximum: ½ page) should be understandable by a non-expert audience and will be used for outreach and communications activities (e.g. ORD web portal). By submitting this lay summary, you thus agree to making it potentially public.* + +The vision of this project is to create an active global community that applies FAIR principles to data generated in the greater Water, Sanitation, and Hygiene (WASH) sector. Current data management practices hold back progress which we address by empowering WASH professionals to engage with tools and workflows for open data and code. We introduce people to the concept of "open by default", as well as the use of open source software, the principles of open science, and benefits of open government (data). So far, we have developed a data cleaning and publishing workflow using the R ecosystem and are consistently applying the concepts and principles we teach. We are delivering a free online course with 10 modules for data science with R and concluded with 20 to graduate from the course, applying the learned material to a real-life dataset of their own. + +# Achievements (2 pages) + +*Please describe the work conducted and what was achieved since the beginning of the project, referring to the planned objectives, milestones, and expected results described in the proposal (maximum: 2 pages). You should also explain how the project contributes to the wider aims of the ORD Explore programme (please refer to page 1 of the application guidelines for Explore).* + +This project consists of five work packages and 20 activities against which we will provide this report. The full name of each acitivity can be found in the activities table of the proposal: https://docs.google.com/spreadsheets/d/1T3NV75vVCeSRcN6FYghOrVFyWWi4WjQT5e4tqwp8jAQ/edit#gid=0). + +**Contribution to ORD Explore programme aims.** In addition to the contributions mentioned in the intermediate scientific report, our project was recognized by the Open Research Data Unit of the Swiss Academies of Arts and Sciences of which we received the \[National Prize for Open Research Data 2024\](https://ord.swiss-academies.ch/news/open-science-rewarded-four-projects-to-receive-the-national-prize-for-open-research-data. + +## WP0: Infrastructure Design and Installation + +::: callout-note +## Goal: The Goal of WP0 is to prototype a technical foundation for the ORD toolchain at ETH in a a way that allows teaching and scientific collaboration to continue beyond the explore project's funding. + +**Activity 0.1.** Report was complete in intermediate scientific report. + +**Activity 0.2:** Report was complete in intermediate scientific report. + +**Activity 0.3:** As we identified Posit Cloud by Posit PBC to be the most suitable option for our needs, we did not compare the costs to the hosting costs and technical overhead of Virtual Machines hosted at ETH Zurich. +::: + +## WP1: Mobilize Community + +::: callout-note +## Goal: Create and grow an international network of data-curious practitioners and students who may be interested in pursuing one or more of the subsequent activities. + +**Activity 1.1.** Report was complete in intermediate scientific report. + +**Activity 1.2.** Report was complete in intermediate scientific report. +::: + +## WP2: Data sharing + +::: callout-note +## Goal: Solicit and receive interest in providing data to be published openly; develop an easy-to-use data-collection protocol and tool; receive data from interested partners. + +**Activity 2.1.** We have continued to invest time and resources into further development of our data publication. By the end of this reporting period, we expanded on the functionality of the `washr` R package, which was then further developed in the 2nd Explore project we have received funding for. + +**Activity 2.2.** Our strategy has shifted to encourage participants of our data science online training programmes to use their own data in our classes and follow up to publish the data as ORD, using our established workflows. More information under WP3: Data cleaning. + +**Activity 2.3:** We continue to expand the openwashdata community on Element using the Matrix Chat, which is our main support channel. Additionally, we prepared a first version of a guide titled ["Data Publishing with washr"](https://global-health-engineering.github.io/ghedatapublishing/). +::: + +## WP3: Data cleaning + +::: callout-note +## Goal: Facilitate user-directed data cleaning (including documentation and metadata) to produce a first set of analysis-ready open datasets + +**Activity 3.1.** As reported in the intermediate scientific report, we have engaged with participants of our "data science for openwashdata" course in data cleaning processes. We successfully published five datasets from the 20 graduates of the first iteration. We realized that this approach is the most effective way to engage with the community and support them in data cleaning and data publishing. Therefore, we decided to invest more time into these data management practices in future iterations of "data science for openwashdata" and develop further material to teach our workflows. This further led to a 1-day in-person workshop in Durban, South Africa under Activity 3.5. + +**Activity 3.2.** Report was complete in intermediate scientific report. + +**Activity 3.3.** We concluded this first iteration of "data science for openwashdata" with 20 graduates. The programme was highly successful and learnings a future iteration were documented. One key take-away was that we have to provide video recordings of the live sessions, as many participants do not have access to a reliable source of electricity or internet connection. As watching video recordings is against our principles for effective teaching and learning, we decided to come up with a mentorship programme for participants to still have live exchanges with their peers. + +**Activity 3.4:** We have hosted two hackathons. The [first hackathon](https://openwashdata.org/pages/events/2024-06-21-hackathon/) was a hands-on educational event for our `washr` data package workflow and was attended by five people. The goal was to introduce the data package to participants and then use it to publish datasets that are on our list for data publication. The hackathon helped us beta-test our R package and resulted in 5 new data publications, one by each participant. The [second hackathon](https://openwashdata.org/pages/blog/posts/2024-12-09-hackathon/) was hosted online and the goal was to use one of our data packages to produce a compelling story, using the data analysis tools that participants prefer. The hackathon was attended by 20 people and we distributed three monetary prizes worth 1500 CHF in total. + +**Activity 3.5:** + +We hosted a [1-day workshop](https://fairdatapub-washcentre.github.io/website/) with our partners at the WASH R&D Center at the University of KwaZulu-Natal. The workshop is titled "FAIR Data Publishing" and builds on the hackathon that was an educational event for our `washr` data package workflow. This 1-day workshop was attended by 20 participants of the research groups, representing more than 80% of the total research staff. It was highly successful as many participants are complete novices in using computational workflows such as R, Git, and GitHub, and are new to the concepts of FAIR data publishing. We could remove barriers that will allow us to effectively work with the researchers in our follow-up 2nd Explore project. +::: + +## WP4: Data publishing and communication + +::: callout-note +## Goal: Increase reach and impact of data by making it citable and creating data communication products + +**Activity 4.1.** By the end of this project, we had published 28 datasets. An updated list is provided in the list of outputs and a live link to the datasets is available on our [openwashdata website data list](https://openwashdata.org/pages/gallery/data/). This list will continue to grow beyond the scope of the projects with our goal to continue to publish one dataset per month from the community and more than half of all primary datasets used by participants of our "data science for openwashdata" course. + +**Activity 4.2.** We continue to improve the templates for our data package website and identify datasets for which it is worth developing a data analysis report. + +**Activity 4.3.** Report was complete in intermediate scientific report. + +**Activity 4.4.** Report was complete in intermediate scientific report. +::: + +# Deviations from original plan () + +*Please describe and justify any major changes or deviations from the original plan as set out in the application form (e.g. expected results and objectives), notably unexpected challenges/problems (or unforeseen/unexpected positive outcomes) and how they have been addressed. Events such as changes of personnel, changes in the financial resources’ usage plan and delayed start of project must be mentioned and – if needed – agreed in advance. If applicable, the implications and impact for the 2nd phase of the project must also be described.* + +We had no further deviations from the plan that were not previously documented in the intermediate scientific report. + +# Value delivered for ORD practices/communities + +*Please explain the impact (achieved or expected) of the project and ORD practices on new or existing ORD communit(ies) during and beyond the funding period, including on the wider ETH Domain. Please explain whether the project will continue and if so, how it will be sustained. Please also describe the main outreach and dissemination activities undertaken and/or planned.* + +See intermediate scientific report for detailed reporting. The workflow continues to gain interest by the scientific community at ETH Zurich. This was recognized by the Open Research Data Unit of the Swiss Academies of Arts and Sciences, which awarded us the [National Prize for Open Research Data 2024](https://ord.swiss-academies.ch/news/open-science-rewarded-four-projects-to-receive-the-national-prize-for-open-research-data). + +Beyond the scope of the project, the project lead is increasingly receiving requests for support in data management and data publishing from researchers at ETH Zurich. This also resulted in providing input to the [ETH Library 17:15 Kolloquium series in November 2024](https://library.ethz.ch/news-und-kurse/veranstaltungen/17-15-kolloquium-der-eth-bibliothek/data-stewardship.html). + +# International exposure & collaborations + +*Please explain – if applicable - how the project is gathering the communit(ies) around an open practice and how it is achieving international exposure and influence. Also, comment on how the project is fostering new or existing collaborations.* + +Our data publishing workflow can be applied by any community. It is independent of disciplines, and can be used to publish any type of data. We engage with researchers nationally and internationally to apply these open practices. The exposure at the end of the project and into the next phases beyond this reporting period has increased significantly where we are now in the position to influence the development of data management strategies at ETH Zurich and beyond. The final goal for us is to complete documentation of the data publishing workflow through scientific publications and develop Open Educational Resources that we can use to invest into training of trainer concepts. After any event where our workflows are presented, new collaborations have established themselves which has led and continues to lead to writing proposals for further funding or being invited to decision-making bodies (e.g., board members). + +# List of Outputs + +*Please indicate the outputs directly related to this ORD project since it began and provide further details in the table below, if and as applicable. This list of outputs (e.g. links) may be used for outreach and dissemination activities (e.g. ORD web portal); please indicate in the table below if any information is confidential and cannot be shared.* + +```{r} +library(tidyverse) +library(googlesheets4) + +outputs <- googlesheets4::read_sheet("https://docs.google.com/spreadsheets/d/16KPKCi-bkoX9fi2PqJysdPYJXzLnsdX4wbHTxAMz7cU/edit?gid=0#gid=0") + + +``` + + +# Appendix + +*Please attach any additional documentation relevant to the ORD project (e.g. screenshots, resources developed, outreach material, copies/link to publications etc.). Among other, it would be particularly useful to include any images/graphs (hereunder or as an attachment) that could be shared for the purpose of outreach and dissemination activities (e.g. ORD web portal). Please indicate if any information is confidential and cannot be shared.*