diff --git a/.quarto/_freeze/results/index/execute-results/html.json b/.quarto/_freeze/results/index/execute-results/html.json
index 527089b..5b79374 100644
--- a/.quarto/_freeze/results/index/execute-results/html.json
+++ b/.quarto/_freeze/results/index/execute-results/html.json
@@ -1,9 +1,11 @@
{
- "hash": "6778c3d1ca365a8b708c6c9c65ae3859",
+ "hash": "3e6213073952079a128be0308193f5b9",
"result": {
"engine": "knitr",
- "markdown": "---\ntitle: \"Results\"\nformat:\n html:\n page-layout: full\n code-link: true\n toc: false\n---\n\n```{ojs}\n//| echo: false\n\nfunkyheatmap = (await require('d3@7').then(d3 => {\n\n window.d3 = d3;\n\n window._ = _;\n\n return import('https://unpkg.com/funkyheatmapjs@0.2.5');\n\n})).default;\n\n```\n\n\n\n```{ojs}\n//| label: read data\n//| warning: false\n//| echo: false\n\n//color_by_rank = Inputs.toggle({label: \"Color by rank:\", value: true})\n//scale_column = Inputs.toggle({label: \"Minmax column:\", value: false})\n//show_con = Inputs.toggle({label: \"Show control methods:\", value: true})\n\nfinal_data = FileAttachment(\"./data/final_data2.csv\").csv()\ncolumn_info = await FileAttachment(\"./data/column_info.csv\").csv()\ncolumn_groups = await FileAttachment(\"./data/column_groups.JSON\").json()\n\npalettes = [\n {\n overall: \"Greys\",\n palette1: \"Blues\",\n palette2: \"Reds\",\n palette3: \"Greens\",\n palette4: \"YlOrBr\",\n NA: \"Greys\",\n white6black4: \"Greys\",\n error_reason: {\n colors: [\"#8DD3C7\", \"#FFFFB3\", \"#BEBADA\", \"#FFFFFF\"],\n names: [\"Memory limit exceeded\", \"Time limit exceeded\", \"Execution error\", \"No error\"]\n }\n }\n ][0] \n\n/* poss_method_ids = method_info\n .map(d => d.method)\n .filter(d => results.map(r => r.method).includes(d))\nposs_metric_ids = metric_info\n .map(d => d.metric)\n .filter(d => results.map(r => Object.keys(r.scaled_scores)).flat().includes(d)) */\n```\n\n```{ojs}\n//| echo: false\n\nfunction removeLastNColumns(data, n) {\n if (data.length === 0 || n <= 0) return data;\n\n // Extract the keys of the columns\n const keys = Object.keys(data[0]);\n\n // Determine the columns to keep\n const columnsToKeep = keys.slice(0, -n);\n\n // Filter columns for each row\n return data.map(row => {\n const newRow = {};\n columnsToKeep.forEach(key => {\n newRow[key] = row[key];\n });\n return newRow;\n });\n}\n\n// Remove the last 4 columns from the data\nfilteredData = removeLastNColumns(final_data, 6);\n\nfunction removeLastNItems(array, n) {\n return array.slice(0, -n);\n}\n\n\n// Remove the last 4 items\nfilteredColumnInfo = removeLastNItems(column_info, 12);\n\nfilteredColumnGroups = removeLastNItems(column_groups, 2);\n\nconsole.log(filteredColumnGroups)\n\n```\n\n\n\n::: {.fullwidth}\n## Results - Heatmap\n\n\n\n\n\n```{ojs}\n//| echo: false\n\nfunction transpose_list_of_objects(list) {\n return Object.fromEntries(Object.keys(list[0]).map(key => [key, list.map(d => d[key])]))\n }\n\nfunkyheatmap(\n transpose_list_of_objects(final_data),\n transpose_list_of_objects(column_info),\n [],\n transpose_list_of_objects(column_groups),\n \n [],\n palettes,\n {\n fontSize: 14,\n rowHeight: 26,\n rootStyle: 'max-width: none',\n colorByRank: true\n }\n );\n\n```\n\n\n\n\nFilter methods\n\n\n\n## Results - Table\n\n\n\n::: {.cell}\n::: {.cell-output-display}\n\n```{=html}\n
\n\n```\n\n:::\n:::\n\n\n\n\n:::",
- "supporting": [],
+ "markdown": "---\ntitle: \"Results\"\nformat:\n html:\n page-layout: full\n code-link: true\n toc: false\n---\n\n```{ojs}\n//| echo: false\n\nfunkyheatmap = (await require('d3@7').then(d3 => {\n\n window.d3 = d3;\n\n window._ = _;\n\n return import('https://unpkg.com/funkyheatmapjs@0.2.5');\n\n})).default;\n\n```\n\n\n\n```{ojs}\n//| label: read data\n//| warning: false\n//| echo: false\n\n//color_by_rank = Inputs.toggle({label: \"Color by rank:\", value: true})\n//scale_column = Inputs.toggle({label: \"Minmax column:\", value: false})\n//show_con = Inputs.toggle({label: \"Show control methods:\", value: true})\n\nfinal_data = FileAttachment(\"./data/final_data2.csv\").csv()\ncolumn_info = await FileAttachment(\"./data/column_info.csv\").csv()\ncolumn_groups = await FileAttachment(\"./data/column_groups.JSON\").json()\n\npalettes = [\n {\n overall: \"Greys\",\n palette1: \"Blues\",\n palette2: \"Reds\",\n palette3: \"Greens\",\n palette4: \"YlOrBr\",\n NA: \"Greys\",\n white6black4: \"Greys\",\n error_reason: {\n colors: [\"#8DD3C7\", \"#FFFFB3\", \"#BEBADA\", \"#FFFFFF\"],\n names: [\"Memory limit exceeded\", \"Time limit exceeded\", \"Execution error\", \"No error\"]\n }\n }\n ][0] \n\n/* poss_method_ids = method_info\n .map(d => d.method)\n .filter(d => results.map(r => r.method).includes(d))\nposs_metric_ids = metric_info\n .map(d => d.metric)\n .filter(d => results.map(r => Object.keys(r.scaled_scores)).flat().includes(d)) */\n```\n\n```{ojs}\n//| echo: false\n\nfunction removeLastNColumns(data, n) {\n if (data.length === 0 || n <= 0) return data;\n\n // Extract the keys of the columns\n const keys = Object.keys(data[0]);\n\n // Determine the columns to keep\n const columnsToKeep = keys.slice(0, -n);\n\n // Filter columns for each row\n return data.map(row => {\n const newRow = {};\n columnsToKeep.forEach(key => {\n newRow[key] = row[key];\n });\n return newRow;\n });\n}\n\n// Remove the last 4 columns from the data\nfilteredData = removeLastNColumns(final_data, 6);\n\nfunction removeLastNItems(array, n) {\n return array.slice(0, -n);\n}\n\n\n// Remove the last 4 items\nfilteredColumnInfo = removeLastNItems(column_info, 12);\n\nfilteredColumnGroups = removeLastNItems(column_groups, 2);\n\nconsole.log(filteredColumnGroups)\n\n```\n\n\n\n\n\n\n\n\n\n::: {.fullwidth}\n## Results - Heatmap\n\n\n\n\n\n\n\n\n\n\n\n```{ojs}\n//| echo: false\n\nfunction transpose_list_of_objects(list) {\n return Object.fromEntries(Object.keys(list[0]).map(key => [key, list.map(d => d[key])]))\n }\n\nfunkyheatmap(\n transpose_list_of_objects(final_data),\n transpose_list_of_objects(column_info),\n [],\n transpose_list_of_objects(column_groups),\n \n [],\n palettes,\n {\n fontSize: 14,\n rowHeight: 26,\n rootStyle: 'max-width: none',\n colorByRank: true\n }\n );\n\n```\n\n\n\n\n\n\n\n\n\n\nFilter methods\n\n\n\n## Results - Table\n\n\n\n\n\n\n\n\n\n::: {.cell}\n::: {.cell-output-display}\n\n```{=html}\n\n\n```\n\n:::\n:::\n\n\n\n\n\n\n\n\n\n\n:::",
+ "supporting": [
+ "index_files"
+ ],
"filters": [
"rmarkdown/pagebreak.lua"
],
diff --git a/.quarto/idx/results/index.qmd.json b/.quarto/idx/results/index.qmd.json
index 878fca4..e47d67c 100644
--- a/.quarto/idx/results/index.qmd.json
+++ b/.quarto/idx/results/index.qmd.json
@@ -1 +1 @@
-{"title":"Results","markdown":{"yaml":{"title":"Results","format":{"html":{"page-layout":"full","code-link":true,"toc":false}}},"headingText":"Results - Heatmap","containsRefs":false,"markdown":"\n\n\n```{ojs}\n//| echo: false\n\nfunkyheatmap = (await require('d3@7').then(d3 => {\n\n window.d3 = d3;\n\n window._ = _;\n\n return import('https://unpkg.com/funkyheatmapjs@0.2.5');\n\n})).default;\n\n```\n\n\n```{r setup}\n#| label: load-packages\n#| include: false\n#| error: true\n#| echo: false\n\nlibrary(tidyverse)\nlibrary(funkyheatmap)\nlibrary(kableExtra)\nlibrary(readr)\nlibrary(DT)\nlibrary(plotly)\nlibrary(jsonlite)\n``` \n\n\n\n```{ojs}\n//| label: read data\n//| warning: false\n//| echo: false\n\n//color_by_rank = Inputs.toggle({label: \"Color by rank:\", value: true})\n//scale_column = Inputs.toggle({label: \"Minmax column:\", value: false})\n//show_con = Inputs.toggle({label: \"Show control methods:\", value: true})\n\nfinal_data = FileAttachment(\"./data/final_data2.csv\").csv()\ncolumn_info = await FileAttachment(\"./data/column_info.csv\").csv()\ncolumn_groups = await FileAttachment(\"./data/column_groups.JSON\").json()\n\npalettes = [\n {\n overall: \"Greys\",\n palette1: \"Blues\",\n palette2: \"Reds\",\n palette3: \"Greens\",\n palette4: \"YlOrBr\",\n NA: \"Greys\",\n white6black4: \"Greys\",\n error_reason: {\n colors: [\"#8DD3C7\", \"#FFFFB3\", \"#BEBADA\", \"#FFFFFF\"],\n names: [\"Memory limit exceeded\", \"Time limit exceeded\", \"Execution error\", \"No error\"]\n }\n }\n ][0] \n\n/* poss_method_ids = method_info\n .map(d => d.method)\n .filter(d => results.map(r => r.method).includes(d))\nposs_metric_ids = metric_info\n .map(d => d.metric)\n .filter(d => results.map(r => Object.keys(r.scaled_scores)).flat().includes(d)) */\n```\n\n```{ojs}\n//| echo: false\n\nfunction removeLastNColumns(data, n) {\n if (data.length === 0 || n <= 0) return data;\n\n // Extract the keys of the columns\n const keys = Object.keys(data[0]);\n\n // Determine the columns to keep\n const columnsToKeep = keys.slice(0, -n);\n\n // Filter columns for each row\n return data.map(row => {\n const newRow = {};\n columnsToKeep.forEach(key => {\n newRow[key] = row[key];\n });\n return newRow;\n });\n}\n\n// Remove the last 4 columns from the data\nfilteredData = removeLastNColumns(final_data, 6);\n\nfunction removeLastNItems(array, n) {\n return array.slice(0, -n);\n}\n\n\n// Remove the last 4 items\nfilteredColumnInfo = removeLastNItems(column_info, 12);\n\nfilteredColumnGroups = removeLastNItems(column_groups, 2);\n\nconsole.log(filteredColumnGroups)\n\n\n```\n::: {.fullwidth}\n\n\n```{ojs}\n//| echo: false\n\nfunction transpose_list_of_objects(list) {\n return Object.fromEntries(Object.keys(list[0]).map(key => [key, list.map(d => d[key])]))\n }\n\nfunkyheatmap(\n transpose_list_of_objects(final_data),\n transpose_list_of_objects(column_info),\n [],\n transpose_list_of_objects(column_groups),\n \n [],\n palettes,\n {\n fontSize: 14,\n rowHeight: 26,\n rootStyle: 'max-width: none',\n colorByRank: true\n }\n );\n\n\n```\n\nFilter methods\n\n\n\n## Results - Table\n```{r}\n#| echo: false\n#| warning: false\n\nlibrary(tibble)\nlibrary(dplyr)\n\nfinal_data_csv <- read_csv(\"./data/final_data.csv\", show_col_types = FALSE)\n\nfinal_data_csv$...1 <- NULL\n\ndatatable(\n final_data_csv,\n options = list(\n pageLength = 15,\n scrollX = TRUE,\n searching = TRUE,\n autoWidth = TRUE\n \n ),\n filter = \"top\",\n class = 'stripe compact',\n style = 'bootstrap'\n) %>%\n formatRound(columns = which(sapply(final_data_csv, is.numeric)), digits = 2)\n```\n\n:::","srcMarkdownNoYaml":"\n\n\n```{ojs}\n//| echo: false\n\nfunkyheatmap = (await require('d3@7').then(d3 => {\n\n window.d3 = d3;\n\n window._ = _;\n\n return import('https://unpkg.com/funkyheatmapjs@0.2.5');\n\n})).default;\n\n```\n\n\n```{r setup}\n#| label: load-packages\n#| include: false\n#| error: true\n#| echo: false\n\nlibrary(tidyverse)\nlibrary(funkyheatmap)\nlibrary(kableExtra)\nlibrary(readr)\nlibrary(DT)\nlibrary(plotly)\nlibrary(jsonlite)\n``` \n\n\n\n```{ojs}\n//| label: read data\n//| warning: false\n//| echo: false\n\n//color_by_rank = Inputs.toggle({label: \"Color by rank:\", value: true})\n//scale_column = Inputs.toggle({label: \"Minmax column:\", value: false})\n//show_con = Inputs.toggle({label: \"Show control methods:\", value: true})\n\nfinal_data = FileAttachment(\"./data/final_data2.csv\").csv()\ncolumn_info = await FileAttachment(\"./data/column_info.csv\").csv()\ncolumn_groups = await FileAttachment(\"./data/column_groups.JSON\").json()\n\npalettes = [\n {\n overall: \"Greys\",\n palette1: \"Blues\",\n palette2: \"Reds\",\n palette3: \"Greens\",\n palette4: \"YlOrBr\",\n NA: \"Greys\",\n white6black4: \"Greys\",\n error_reason: {\n colors: [\"#8DD3C7\", \"#FFFFB3\", \"#BEBADA\", \"#FFFFFF\"],\n names: [\"Memory limit exceeded\", \"Time limit exceeded\", \"Execution error\", \"No error\"]\n }\n }\n ][0] \n\n/* poss_method_ids = method_info\n .map(d => d.method)\n .filter(d => results.map(r => r.method).includes(d))\nposs_metric_ids = metric_info\n .map(d => d.metric)\n .filter(d => results.map(r => Object.keys(r.scaled_scores)).flat().includes(d)) */\n```\n\n```{ojs}\n//| echo: false\n\nfunction removeLastNColumns(data, n) {\n if (data.length === 0 || n <= 0) return data;\n\n // Extract the keys of the columns\n const keys = Object.keys(data[0]);\n\n // Determine the columns to keep\n const columnsToKeep = keys.slice(0, -n);\n\n // Filter columns for each row\n return data.map(row => {\n const newRow = {};\n columnsToKeep.forEach(key => {\n newRow[key] = row[key];\n });\n return newRow;\n });\n}\n\n// Remove the last 4 columns from the data\nfilteredData = removeLastNColumns(final_data, 6);\n\nfunction removeLastNItems(array, n) {\n return array.slice(0, -n);\n}\n\n\n// Remove the last 4 items\nfilteredColumnInfo = removeLastNItems(column_info, 12);\n\nfilteredColumnGroups = removeLastNItems(column_groups, 2);\n\nconsole.log(filteredColumnGroups)\n\n\n```\n::: {.fullwidth}\n## Results - Heatmap\n\n\n```{ojs}\n//| echo: false\n\nfunction transpose_list_of_objects(list) {\n return Object.fromEntries(Object.keys(list[0]).map(key => [key, list.map(d => d[key])]))\n }\n\nfunkyheatmap(\n transpose_list_of_objects(final_data),\n transpose_list_of_objects(column_info),\n [],\n transpose_list_of_objects(column_groups),\n \n [],\n palettes,\n {\n fontSize: 14,\n rowHeight: 26,\n rootStyle: 'max-width: none',\n colorByRank: true\n }\n );\n\n\n```\n\nFilter methods\n\n\n\n## Results - Table\n```{r}\n#| echo: false\n#| warning: false\n\nlibrary(tibble)\nlibrary(dplyr)\n\nfinal_data_csv <- read_csv(\"./data/final_data.csv\", show_col_types = FALSE)\n\nfinal_data_csv$...1 <- NULL\n\ndatatable(\n final_data_csv,\n options = list(\n pageLength = 15,\n scrollX = TRUE,\n searching = TRUE,\n autoWidth = TRUE\n \n ),\n filter = \"top\",\n class = 'stripe compact',\n style = 'bootstrap'\n) %>%\n formatRound(columns = which(sapply(final_data_csv, is.numeric)), digits = 2)\n```\n\n:::"},"formats":{"html":{"identifier":{"display-name":"HTML","target-format":"html","base-format":"html"},"execute":{"fig-width":7,"fig-height":5,"fig-format":"retina","fig-dpi":96,"df-print":"default","error":false,"eval":true,"cache":null,"freeze":false,"echo":true,"output":true,"warning":true,"include":true,"keep-md":false,"keep-ipynb":false,"ipynb":null,"enabled":null,"daemon":null,"daemon-restart":false,"debug":false,"ipynb-filters":[],"ipynb-shell-interactivity":null,"plotly-connected":true,"center":"#© Sydney Precision Data Science Center","engine":"knitr"},"render":{"keep-tex":false,"keep-typ":false,"keep-source":false,"keep-hidden":false,"prefer-html":false,"output-divs":true,"output-ext":"html","fig-align":"default","fig-pos":null,"fig-env":null,"code-fold":"none","code-overflow":"scroll","code-link":true,"code-line-numbers":false,"code-tools":false,"tbl-colwidths":"auto","merge-includes":true,"inline-includes":false,"preserve-yaml":false,"latex-auto-mk":true,"latex-auto-install":true,"latex-clean":true,"latex-min-runs":1,"latex-max-runs":10,"latex-makeindex":"makeindex","latex-makeindex-opts":[],"latex-tlmgr-opts":[],"latex-input-paths":[],"latex-output-dir":null,"link-external-icon":false,"link-external-newwindow":false,"self-contained-math":false,"format-resources":[],"notebook-links":true},"pandoc":{"standalone":true,"wrap":"none","default-image-extension":"png","to":"html","css":["../styles.css"],"toc":false,"output-file":"index.html"},"language":{"toc-title-document":"Table of contents","toc-title-website":"On this page","related-formats-title":"Other Formats","related-notebooks-title":"Notebooks","source-notebooks-prefix":"Source","other-links-title":"Other Links","code-links-title":"Code Links","launch-dev-container-title":"Launch Dev Container","launch-binder-title":"Launch Binder","article-notebook-label":"Article Notebook","notebook-preview-download":"Download Notebook","notebook-preview-download-src":"Download Source","notebook-preview-back":"Back to Article","manuscript-meca-bundle":"MECA Bundle","section-title-abstract":"Abstract","section-title-appendices":"Appendices","section-title-footnotes":"Footnotes","section-title-references":"References","section-title-reuse":"Reuse","section-title-copyright":"Copyright","section-title-citation":"Citation","appendix-attribution-cite-as":"For attribution, please cite this work as:","appendix-attribution-bibtex":"BibTeX citation:","appendix-view-license":"View License","title-block-author-single":"Author","title-block-author-plural":"Authors","title-block-affiliation-single":"Affiliation","title-block-affiliation-plural":"Affiliations","title-block-published":"Published","title-block-modified":"Modified","title-block-keywords":"Keywords","callout-tip-title":"Tip","callout-note-title":"Note","callout-warning-title":"Warning","callout-important-title":"Important","callout-caution-title":"Caution","code-summary":"Code","code-tools-menu-caption":"Code","code-tools-show-all-code":"Show All Code","code-tools-hide-all-code":"Hide All Code","code-tools-view-source":"View Source","code-tools-source-code":"Source Code","tools-share":"Share","tools-download":"Download","code-line":"Line","code-lines":"Lines","copy-button-tooltip":"Copy to Clipboard","copy-button-tooltip-success":"Copied!","repo-action-links-edit":"Edit this page","repo-action-links-source":"View source","repo-action-links-issue":"Report an issue","back-to-top":"Back to top","search-no-results-text":"No results","search-matching-documents-text":"matching documents","search-copy-link-title":"Copy link to search","search-hide-matches-text":"Hide additional matches","search-more-match-text":"more match in this document","search-more-matches-text":"more matches in this document","search-clear-button-title":"Clear","search-text-placeholder":"","search-detached-cancel-button-title":"Cancel","search-submit-button-title":"Submit","search-label":"Search","toggle-section":"Toggle section","toggle-sidebar":"Toggle sidebar navigation","toggle-dark-mode":"Toggle dark mode","toggle-reader-mode":"Toggle reader mode","toggle-navigation":"Toggle navigation","crossref-fig-title":"Figure","crossref-tbl-title":"Table","crossref-lst-title":"Listing","crossref-thm-title":"Theorem","crossref-lem-title":"Lemma","crossref-cor-title":"Corollary","crossref-prp-title":"Proposition","crossref-cnj-title":"Conjecture","crossref-def-title":"Definition","crossref-exm-title":"Example","crossref-exr-title":"Exercise","crossref-ch-prefix":"Chapter","crossref-apx-prefix":"Appendix","crossref-sec-prefix":"Section","crossref-eq-prefix":"Equation","crossref-lof-title":"List of Figures","crossref-lot-title":"List of Tables","crossref-lol-title":"List of Listings","environment-proof-title":"Proof","environment-remark-title":"Remark","environment-solution-title":"Solution","listing-page-order-by":"Order By","listing-page-order-by-default":"Default","listing-page-order-by-date-asc":"Oldest","listing-page-order-by-date-desc":"Newest","listing-page-order-by-number-desc":"High to Low","listing-page-order-by-number-asc":"Low to High","listing-page-field-date":"Date","listing-page-field-title":"Title","listing-page-field-description":"Description","listing-page-field-author":"Author","listing-page-field-filename":"File Name","listing-page-field-filemodified":"Modified","listing-page-field-subtitle":"Subtitle","listing-page-field-readingtime":"Reading Time","listing-page-field-wordcount":"Word Count","listing-page-field-categories":"Categories","listing-page-minutes-compact":"{0} min","listing-page-category-all":"All","listing-page-no-matches":"No matching items","listing-page-words":"{0} words","listing-page-filter":"Filter","draft":"Draft"},"metadata":{"lang":"en","fig-responsive":true,"quarto-version":"1.5.55","editor":"visual","page-footer":null,"page-layout":"full","title":"Results"},"extensions":{"book":{"multiFile":true}}}},"projectFormats":["html"]}
\ No newline at end of file
+{"title":"Results","markdown":{"yaml":{"title":"Results","format":{"html":{"page-layout":"full","code-link":true,"toc":false}}},"headingText":"Results - Heatmap","containsRefs":false,"markdown":"\n\n\n```{ojs}\n//| echo: false\n\nfunkyheatmap = (await require('d3@7').then(d3 => {\n\n window.d3 = d3;\n\n window._ = _;\n\n return import('https://unpkg.com/funkyheatmapjs@0.2.5');\n\n})).default;\n\n```\n\n\n```{r setup}\n#| label: load-packages\n#| include: false\n#| error: true\n#| echo: false\n\nlibrary(tidyverse)\nlibrary(funkyheatmap)\nlibrary(kableExtra)\nlibrary(readr)\nlibrary(DT)\nlibrary(plotly)\nlibrary(jsonlite)\n``` \n\n\n\n```{ojs}\n//| label: read data\n//| warning: false\n//| echo: false\n\n//color_by_rank = Inputs.toggle({label: \"Color by rank:\", value: true})\n//scale_column = Inputs.toggle({label: \"Minmax column:\", value: false})\n//show_con = Inputs.toggle({label: \"Show control methods:\", value: true})\n\nfinal_data = FileAttachment(\"./data/final_data2.csv\").csv()\ncolumn_info = await FileAttachment(\"./data/column_info.csv\").csv()\ncolumn_groups = await FileAttachment(\"./data/column_groups.JSON\").json()\n\npalettes = [\n {\n overall: \"Greys\",\n palette1: \"Blues\",\n palette2: \"Reds\",\n palette3: \"Greens\",\n palette4: \"YlOrBr\",\n NA: \"Greys\",\n white6black4: \"Greys\",\n error_reason: {\n colors: [\"#8DD3C7\", \"#FFFFB3\", \"#BEBADA\", \"#FFFFFF\"],\n names: [\"Memory limit exceeded\", \"Time limit exceeded\", \"Execution error\", \"No error\"]\n }\n }\n ][0] \n\n/* poss_method_ids = method_info\n .map(d => d.method)\n .filter(d => results.map(r => r.method).includes(d))\nposs_metric_ids = metric_info\n .map(d => d.metric)\n .filter(d => results.map(r => Object.keys(r.scaled_scores)).flat().includes(d)) */\n```\n\n```{ojs}\n//| echo: false\n\nfunction removeLastNColumns(data, n) {\n if (data.length === 0 || n <= 0) return data;\n\n // Extract the keys of the columns\n const keys = Object.keys(data[0]);\n\n // Determine the columns to keep\n const columnsToKeep = keys.slice(0, -n);\n\n // Filter columns for each row\n return data.map(row => {\n const newRow = {};\n columnsToKeep.forEach(key => {\n newRow[key] = row[key];\n });\n return newRow;\n });\n}\n\n// Remove the last 4 columns from the data\nfilteredData = removeLastNColumns(final_data, 6);\n\nfunction removeLastNItems(array, n) {\n return array.slice(0, -n);\n}\n\n\n// Remove the last 4 items\nfilteredColumnInfo = removeLastNItems(column_info, 12);\n\nfilteredColumnGroups = removeLastNItems(column_groups, 2);\n\n//console.log(filteredColumnGroups)\n\n\n```\n::: {.fullwidth}\n\n\n```{ojs}\n//| echo: false\n\nfunction transpose_list_of_objects(list) {\n return Object.fromEntries(Object.keys(list[0]).map(key => [key, list.map(d => d[key])]))\n }\n\nfunkyheatmap(\n transpose_list_of_objects(final_data),\n transpose_list_of_objects(column_info),\n [],\n transpose_list_of_objects(column_groups),\n \n [],\n palettes,\n {\n fontSize: 14,\n rowHeight: 26,\n rootStyle: 'max-width: none',\n colorByRank: true\n }\n );\n\n\n```\n\nFilter methods\n\n\n\n## Results - Table\n```{r}\n#| echo: false\n#| warning: false\n\nlibrary(tibble)\nlibrary(dplyr)\n\nfinal_data_csv <- read_csv(\"./data/final_data.csv\", show_col_types = FALSE)\n\nfinal_data_csv$...1 <- NULL\n\ndatatable(\n final_data_csv,\n options = list(\n pageLength = 15,\n scrollX = TRUE,\n searching = TRUE,\n autoWidth = TRUE\n \n ),\n filter = \"top\",\n class = 'stripe compact',\n style = 'bootstrap'\n) %>%\n formatRound(columns = which(sapply(final_data_csv, is.numeric)), digits = 2)\n```\n\n:::","srcMarkdownNoYaml":"\n\n\n```{ojs}\n//| echo: false\n\nfunkyheatmap = (await require('d3@7').then(d3 => {\n\n window.d3 = d3;\n\n window._ = _;\n\n return import('https://unpkg.com/funkyheatmapjs@0.2.5');\n\n})).default;\n\n```\n\n\n```{r setup}\n#| label: load-packages\n#| include: false\n#| error: true\n#| echo: false\n\nlibrary(tidyverse)\nlibrary(funkyheatmap)\nlibrary(kableExtra)\nlibrary(readr)\nlibrary(DT)\nlibrary(plotly)\nlibrary(jsonlite)\n``` \n\n\n\n```{ojs}\n//| label: read data\n//| warning: false\n//| echo: false\n\n//color_by_rank = Inputs.toggle({label: \"Color by rank:\", value: true})\n//scale_column = Inputs.toggle({label: \"Minmax column:\", value: false})\n//show_con = Inputs.toggle({label: \"Show control methods:\", value: true})\n\nfinal_data = FileAttachment(\"./data/final_data2.csv\").csv()\ncolumn_info = await FileAttachment(\"./data/column_info.csv\").csv()\ncolumn_groups = await FileAttachment(\"./data/column_groups.JSON\").json()\n\npalettes = [\n {\n overall: \"Greys\",\n palette1: \"Blues\",\n palette2: \"Reds\",\n palette3: \"Greens\",\n palette4: \"YlOrBr\",\n NA: \"Greys\",\n white6black4: \"Greys\",\n error_reason: {\n colors: [\"#8DD3C7\", \"#FFFFB3\", \"#BEBADA\", \"#FFFFFF\"],\n names: [\"Memory limit exceeded\", \"Time limit exceeded\", \"Execution error\", \"No error\"]\n }\n }\n ][0] \n\n/* poss_method_ids = method_info\n .map(d => d.method)\n .filter(d => results.map(r => r.method).includes(d))\nposs_metric_ids = metric_info\n .map(d => d.metric)\n .filter(d => results.map(r => Object.keys(r.scaled_scores)).flat().includes(d)) */\n```\n\n```{ojs}\n//| echo: false\n\nfunction removeLastNColumns(data, n) {\n if (data.length === 0 || n <= 0) return data;\n\n // Extract the keys of the columns\n const keys = Object.keys(data[0]);\n\n // Determine the columns to keep\n const columnsToKeep = keys.slice(0, -n);\n\n // Filter columns for each row\n return data.map(row => {\n const newRow = {};\n columnsToKeep.forEach(key => {\n newRow[key] = row[key];\n });\n return newRow;\n });\n}\n\n// Remove the last 4 columns from the data\nfilteredData = removeLastNColumns(final_data, 6);\n\nfunction removeLastNItems(array, n) {\n return array.slice(0, -n);\n}\n\n\n// Remove the last 4 items\nfilteredColumnInfo = removeLastNItems(column_info, 12);\n\nfilteredColumnGroups = removeLastNItems(column_groups, 2);\n\n//console.log(filteredColumnGroups)\n\n\n```\n::: {.fullwidth}\n## Results - Heatmap\n\n\n```{ojs}\n//| echo: false\n\nfunction transpose_list_of_objects(list) {\n return Object.fromEntries(Object.keys(list[0]).map(key => [key, list.map(d => d[key])]))\n }\n\nfunkyheatmap(\n transpose_list_of_objects(final_data),\n transpose_list_of_objects(column_info),\n [],\n transpose_list_of_objects(column_groups),\n \n [],\n palettes,\n {\n fontSize: 14,\n rowHeight: 26,\n rootStyle: 'max-width: none',\n colorByRank: true\n }\n );\n\n\n```\n\nFilter methods\n\n\n\n## Results - Table\n```{r}\n#| echo: false\n#| warning: false\n\nlibrary(tibble)\nlibrary(dplyr)\n\nfinal_data_csv <- read_csv(\"./data/final_data.csv\", show_col_types = FALSE)\n\nfinal_data_csv$...1 <- NULL\n\ndatatable(\n final_data_csv,\n options = list(\n pageLength = 15,\n scrollX = TRUE,\n searching = TRUE,\n autoWidth = TRUE\n \n ),\n filter = \"top\",\n class = 'stripe compact',\n style = 'bootstrap'\n) %>%\n formatRound(columns = which(sapply(final_data_csv, is.numeric)), digits = 2)\n```\n\n:::"},"formats":{"html":{"identifier":{"display-name":"HTML","target-format":"html","base-format":"html"},"execute":{"fig-width":7,"fig-height":5,"fig-format":"retina","fig-dpi":96,"df-print":"default","error":false,"eval":true,"cache":null,"freeze":false,"echo":true,"output":true,"warning":true,"include":true,"keep-md":false,"keep-ipynb":false,"ipynb":null,"enabled":null,"daemon":null,"daemon-restart":false,"debug":false,"ipynb-filters":[],"ipynb-shell-interactivity":null,"plotly-connected":true,"center":"#© Sydney Precision Data Science Center","engine":"knitr"},"render":{"keep-tex":false,"keep-typ":false,"keep-source":false,"keep-hidden":false,"prefer-html":false,"output-divs":true,"output-ext":"html","fig-align":"default","fig-pos":null,"fig-env":null,"code-fold":"none","code-overflow":"scroll","code-link":true,"code-line-numbers":false,"code-tools":false,"tbl-colwidths":"auto","merge-includes":true,"inline-includes":false,"preserve-yaml":false,"latex-auto-mk":true,"latex-auto-install":true,"latex-clean":true,"latex-min-runs":1,"latex-max-runs":10,"latex-makeindex":"makeindex","latex-makeindex-opts":[],"latex-tlmgr-opts":[],"latex-input-paths":[],"latex-output-dir":null,"link-external-icon":false,"link-external-newwindow":false,"self-contained-math":false,"format-resources":[],"notebook-links":true},"pandoc":{"standalone":true,"wrap":"none","default-image-extension":"png","to":"html","css":["../styles.css"],"toc":false,"output-file":"index.html"},"language":{"toc-title-document":"Table of contents","toc-title-website":"On this page","related-formats-title":"Other Formats","related-notebooks-title":"Notebooks","source-notebooks-prefix":"Source","other-links-title":"Other Links","code-links-title":"Code Links","launch-dev-container-title":"Launch Dev Container","launch-binder-title":"Launch Binder","article-notebook-label":"Article Notebook","notebook-preview-download":"Download Notebook","notebook-preview-download-src":"Download Source","notebook-preview-back":"Back to Article","manuscript-meca-bundle":"MECA Bundle","section-title-abstract":"Abstract","section-title-appendices":"Appendices","section-title-footnotes":"Footnotes","section-title-references":"References","section-title-reuse":"Reuse","section-title-copyright":"Copyright","section-title-citation":"Citation","appendix-attribution-cite-as":"For attribution, please cite this work as:","appendix-attribution-bibtex":"BibTeX citation:","appendix-view-license":"View License","title-block-author-single":"Author","title-block-author-plural":"Authors","title-block-affiliation-single":"Affiliation","title-block-affiliation-plural":"Affiliations","title-block-published":"Published","title-block-modified":"Modified","title-block-keywords":"Keywords","callout-tip-title":"Tip","callout-note-title":"Note","callout-warning-title":"Warning","callout-important-title":"Important","callout-caution-title":"Caution","code-summary":"Code","code-tools-menu-caption":"Code","code-tools-show-all-code":"Show All Code","code-tools-hide-all-code":"Hide All Code","code-tools-view-source":"View Source","code-tools-source-code":"Source Code","tools-share":"Share","tools-download":"Download","code-line":"Line","code-lines":"Lines","copy-button-tooltip":"Copy to Clipboard","copy-button-tooltip-success":"Copied!","repo-action-links-edit":"Edit this page","repo-action-links-source":"View source","repo-action-links-issue":"Report an issue","back-to-top":"Back to top","search-no-results-text":"No results","search-matching-documents-text":"matching documents","search-copy-link-title":"Copy link to search","search-hide-matches-text":"Hide additional matches","search-more-match-text":"more match in this document","search-more-matches-text":"more matches in this document","search-clear-button-title":"Clear","search-text-placeholder":"","search-detached-cancel-button-title":"Cancel","search-submit-button-title":"Submit","search-label":"Search","toggle-section":"Toggle section","toggle-sidebar":"Toggle sidebar navigation","toggle-dark-mode":"Toggle dark mode","toggle-reader-mode":"Toggle reader mode","toggle-navigation":"Toggle navigation","crossref-fig-title":"Figure","crossref-tbl-title":"Table","crossref-lst-title":"Listing","crossref-thm-title":"Theorem","crossref-lem-title":"Lemma","crossref-cor-title":"Corollary","crossref-prp-title":"Proposition","crossref-cnj-title":"Conjecture","crossref-def-title":"Definition","crossref-exm-title":"Example","crossref-exr-title":"Exercise","crossref-ch-prefix":"Chapter","crossref-apx-prefix":"Appendix","crossref-sec-prefix":"Section","crossref-eq-prefix":"Equation","crossref-lof-title":"List of Figures","crossref-lot-title":"List of Tables","crossref-lol-title":"List of Listings","environment-proof-title":"Proof","environment-remark-title":"Remark","environment-solution-title":"Solution","listing-page-order-by":"Order By","listing-page-order-by-default":"Default","listing-page-order-by-date-asc":"Oldest","listing-page-order-by-date-desc":"Newest","listing-page-order-by-number-desc":"High to Low","listing-page-order-by-number-asc":"Low to High","listing-page-field-date":"Date","listing-page-field-title":"Title","listing-page-field-description":"Description","listing-page-field-author":"Author","listing-page-field-filename":"File Name","listing-page-field-filemodified":"Modified","listing-page-field-subtitle":"Subtitle","listing-page-field-readingtime":"Reading Time","listing-page-field-wordcount":"Word Count","listing-page-field-categories":"Categories","listing-page-minutes-compact":"{0} min","listing-page-category-all":"All","listing-page-no-matches":"No matching items","listing-page-words":"{0} words","listing-page-filter":"Filter","draft":"Draft"},"metadata":{"lang":"en","fig-responsive":true,"quarto-version":"1.5.55","editor":"visual","page-footer":null,"page-layout":"full","title":"Results"},"extensions":{"book":{"multiFile":true}}}},"projectFormats":["html"]}
\ No newline at end of file
diff --git a/.quarto/preview/lock b/.quarto/preview/lock
index 7f81807..75c3882 100644
--- a/.quarto/preview/lock
+++ b/.quarto/preview/lock
@@ -1 +1 @@
-43932
\ No newline at end of file
+49056
\ No newline at end of file
diff --git a/docs/results/data/final_data2.csv b/docs/results/data/final_data2.csv
index 223db08..3109268 100644
--- a/docs/results/data/final_data2.csv
+++ b/docs/results/data/final_data2.csv
@@ -1,4 +1,4 @@
-id,adaptor,overall_summary,data_pro_summary,spatial_task_summary,scalability_summary,spfracZero,spLibSize,spEffLibSize,spTMM,spScaledVar,spScaledMean,splibsizeFracezero,spCorPearson,ftFracZero,ftScaledVar,ftScaledMean,ftPearson,ftScaleMeanVal,ftMeanFraczero,TM,NWE,CSM,celltype_interaction,L_stats,nn_correlation,morans_I,ARI,NMI,recall_svg,precision_svg,rmse_ctprob,jsd_ctprob,mantel_cor,cosine_cor,pred_time_cells200_features200,pred_time_cells3000_features500,pred_time_cells5000_features1000,pred_memory_cells200_features200,pred_memory_cells3000_features500,pred_memory_cells5000_features1000
+method,adaptor,overall_summary,data_pro_summary,spatial_task_summary,scalability_summary,spfracZero,spLibSize,spEffLibSize,spTMM,spScaledVar,spScaledMean,splibsizeFracezero,spCorPearson,ftFracZero,ftScaledVar,ftScaledMean,ftPearson,ftScaleMeanVal,ftMeanFraczero,TM,NWE,CSM,celltype_interaction,L_stats,nn_correlation,morans_I,ARI,NMI,recall_svg,precision_svg,rmse_ctprob,jsd_ctprob,mantel_cor,cosine_cor,pred_time_cells200_features200,pred_time_cells3000_features500,pred_time_cells5000_features1000,pred_memory_cells200_features200,pred_memory_cells3000_features500,pred_memory_cells5000_features1000
SRTsim_rf,Yes,12.50,10.43,10.12,11.83,0.87,0.81,-3.53,-0.50,-22.09,-0.34,-0.77,0.10,-0.05,-8.13,0.06,-0.01,-10.74,-11.15,-0.26,-0.84,-0.31,0.08,1.29,-0.77,-2.25,0.58,0.60,0.78,0.81,-0.03,-0.08,-0.91,0.91,-1.00,-11.00,-32.00,-1941204.00,-2059443.00,-2128216.00
SRTsim,No,12.17,10.48,10.12,9.67,3.32,-0.02,-1.58,-0.98,-42.51,-2.21,-4.54,-2.80,0.24,-21.80,0.14,0.15,-21.37,-0.51,-0.30,-0.76,-0.26,1.29,1.22,0.95,-0.19,0.58,0.58,0.80,0.84,-0.03,-0.09,-0.95,0.95,-4.00,-19.00,-50.00,-2212423.00,-2232741.00,-2503995.00
SPARsim,Yes,9.50,8.71,6.88,9.08,-3.88,1.29,-3.96,-3.66,-26.28,0.37,-11.08,-21.39,-0.73,-40.62,-20.28,-2.26,-148.98,-0.48,-0.18,-0.52,-0.24,2.64,0.74,-14.06,-5.18,0.93,0.92,0.52,0.63,-0.09,-0.24,-0.68,0.68,-21.00,-43.00,-66.00,-1696115.00,-3635721.00,-4001645.00
diff --git a/docs/results/index.html b/docs/results/index.html
index 5b54e47..21281a4 100644
--- a/docs/results/index.html
+++ b/docs/results/index.html
@@ -344,6 +344,12 @@ Results
+
+
+
+
+
+
:::::{.cell}
```{.js .cell-code .hidden startFrom="159" source-offset="0"}
@@ -367,6 +373,12 @@ Results
+
+
+
+
+
+
@@ -378,6 +390,12 @@ Results
+
+
+
+
+
+
:::::{.cell}
```{.js .cell-code .hidden startFrom="178" source-offset="0"}
@@ -400,12 +418,18 @@ Results
+
+
+
+
+
+
::: -->
diff --git a/results/data/final_data2.csv b/results/data/final_data2.csv
index 223db08..3109268 100644
--- a/results/data/final_data2.csv
+++ b/results/data/final_data2.csv
@@ -1,4 +1,4 @@
-id,adaptor,overall_summary,data_pro_summary,spatial_task_summary,scalability_summary,spfracZero,spLibSize,spEffLibSize,spTMM,spScaledVar,spScaledMean,splibsizeFracezero,spCorPearson,ftFracZero,ftScaledVar,ftScaledMean,ftPearson,ftScaleMeanVal,ftMeanFraczero,TM,NWE,CSM,celltype_interaction,L_stats,nn_correlation,morans_I,ARI,NMI,recall_svg,precision_svg,rmse_ctprob,jsd_ctprob,mantel_cor,cosine_cor,pred_time_cells200_features200,pred_time_cells3000_features500,pred_time_cells5000_features1000,pred_memory_cells200_features200,pred_memory_cells3000_features500,pred_memory_cells5000_features1000
+method,adaptor,overall_summary,data_pro_summary,spatial_task_summary,scalability_summary,spfracZero,spLibSize,spEffLibSize,spTMM,spScaledVar,spScaledMean,splibsizeFracezero,spCorPearson,ftFracZero,ftScaledVar,ftScaledMean,ftPearson,ftScaleMeanVal,ftMeanFraczero,TM,NWE,CSM,celltype_interaction,L_stats,nn_correlation,morans_I,ARI,NMI,recall_svg,precision_svg,rmse_ctprob,jsd_ctprob,mantel_cor,cosine_cor,pred_time_cells200_features200,pred_time_cells3000_features500,pred_time_cells5000_features1000,pred_memory_cells200_features200,pred_memory_cells3000_features500,pred_memory_cells5000_features1000
SRTsim_rf,Yes,12.50,10.43,10.12,11.83,0.87,0.81,-3.53,-0.50,-22.09,-0.34,-0.77,0.10,-0.05,-8.13,0.06,-0.01,-10.74,-11.15,-0.26,-0.84,-0.31,0.08,1.29,-0.77,-2.25,0.58,0.60,0.78,0.81,-0.03,-0.08,-0.91,0.91,-1.00,-11.00,-32.00,-1941204.00,-2059443.00,-2128216.00
SRTsim,No,12.17,10.48,10.12,9.67,3.32,-0.02,-1.58,-0.98,-42.51,-2.21,-4.54,-2.80,0.24,-21.80,0.14,0.15,-21.37,-0.51,-0.30,-0.76,-0.26,1.29,1.22,0.95,-0.19,0.58,0.58,0.80,0.84,-0.03,-0.09,-0.95,0.95,-4.00,-19.00,-50.00,-2212423.00,-2232741.00,-2503995.00
SPARsim,Yes,9.50,8.71,6.88,9.08,-3.88,1.29,-3.96,-3.66,-26.28,0.37,-11.08,-21.39,-0.73,-40.62,-20.28,-2.26,-148.98,-0.48,-0.18,-0.52,-0.24,2.64,0.74,-14.06,-5.18,0.93,0.92,0.52,0.63,-0.09,-0.24,-0.68,0.68,-21.00,-43.00,-66.00,-1696115.00,-3635721.00,-4001645.00
diff --git a/results/index.qmd b/results/index.qmd
index 7c8ca59..2531b87 100644
--- a/results/index.qmd
+++ b/results/index.qmd
@@ -113,7 +113,7 @@ filteredColumnInfo = removeLastNItems(column_info, 12);
filteredColumnGroups = removeLastNItems(column_groups, 2);
-console.log(filteredColumnGroups)
+//console.log(filteredColumnGroups)
```
diff --git a/results/index_files/figure-html/unnamed-chunk-2-1.png b/results/index_files/figure-html/unnamed-chunk-2-1.png
deleted file mode 100644
index cdacecd..0000000
Binary files a/results/index_files/figure-html/unnamed-chunk-2-1.png and /dev/null differ
diff --git a/results/index_files/figure-html/unnamed-chunk-3-1.png b/results/index_files/figure-html/unnamed-chunk-3-1.png
deleted file mode 100644
index a44fb9d..0000000
Binary files a/results/index_files/figure-html/unnamed-chunk-3-1.png and /dev/null differ