/ concept-collection / benchcompress
Sign in
concept-collection / benchcompress
paper
Jeremy Magland <jmagland@flatironinstitute.org> committed commit 380af3238fe3 parent 9450f68 Browse files
9 changed files+95−361
.github/workflows/deploy.ymladded+62−0View file
@@ -0,0 +1,62 @@
1+name: Deploy to GitHub Pages
2+
3+on:
4+ push:
5+ branches: [ "main" ]
6+ workflow_dispatch:
7+
8+permissions:
9+ contents: read
10+ pages: write
11+ id-token: write
12+
13+concurrency:
14+ group: "pages"
15+ cancel-in-progress: false
16+
17+jobs:
18+ deploy:
19+ environment:
20+ name: github-pages
21+ url: ${{ steps.deployment.outputs.page_url }}
22+ runs-on: ubuntu-latest
23+ steps:
24+ - name: Checkout
25+ uses: actions/checkout@v4
26+
27+ - name: Install pandoc and pandoc-citeproc
28+ run: |
29+ sudo apt-get update
30+ sudo apt-get install -y pandoc pandoc-citeproc
31+
32+ - name: Setup Node.js
33+ uses: actions/setup-node@v3
34+ with:
35+ node-version: '20'
36+ cache: 'npm'
37+ cache-dependency-path: web-ui/package-lock.json
38+
39+ - name: Build paper
40+ run: |
41+ chmod +x devel/copy_paper_to_web.sh
42+ ./devel/copy_paper_to_web.sh
43+
44+ - name: Install dependencies
45+ working-directory: web-ui
46+ run: npm ci
47+
48+ - name: Build website
49+ working-directory: web-ui
50+ run: npm run build
51+
52+ - name: Setup Pages
53+ uses: actions/configure-pages@v4
54+
55+ - name: Upload artifact
56+ uses: actions/upload-pages-artifact@v3
57+ with:
58+ path: web-ui/dist
59+
60+ - name: Deploy to GitHub Pages
61+ id: deployment
62+ uses: actions/deploy-pages@v4
devel/compile_paper.shmodified+0−2View file
@@ -4,9 +4,7 @@ cd "$(dirname "$0")/.."
44 cd paper
55
66 pandoc paper.md \
7- --metadata-file=paper.yml \
87 --bibliography=references.bib \
9- --csl=ieee.csl \
108 -o paper.pdf
119
1210 echo "Paper compiled successfully to paper.pdf"
devel/copy_paper_to_web.shadded+15−0View file
@@ -0,0 +1,15 @@
1+#!/bin/bash
2+
3+# Exit on error
4+set -e
5+
6+# Get the directory containing this script
7+cd "$(dirname "$0")/.."
8+
9+# First compile the paper
10+./devel/compile_paper.sh
11+
12+# Then copy it to web-ui/public/
13+cp paper/paper.pdf web-ui/public/
14+
15+echo "Paper copied to web-ui/public/paper.pdf"
paper/README.mdmodified+1−3View file
@@ -2,6 +2,4 @@
22
33 Contains the main paper content (paper.md) for the Benchcompress project.
44
5-The paper is imported directly in the web UI via relative path:
6-```typescript
7-import paperContent from "../../../paper/paper.md?raw";
5+For compiling and copying to the public directory, see the scripts in devel/
paper/ieee.csldeleted+0−334View file
@@ -1,334 +0,0 @@
1-<?xml version="1.0" encoding="utf-8"?>
2-<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="sort-only">
3- <info>
4- <title>IEEE</title>
5- <id>http://www.zotero.org/styles/ieee</id>
6- <link href="http://www.zotero.org/styles/ieee" rel="self"/>
7- <link href="https://ieeeauthorcenter.ieee.org/wp-content/uploads/IEEE-Reference-Guide.pdf" rel="documentation"/>
8- <author>
9- <name>Michael Berkowitz</name>
10- <email>mberkowi@gmu.edu</email>
11- </author>
12- <contributor>
13- <name>Julian Onions</name>
14- <email>julian.onions@gmail.com</email>
15- </contributor>
16- <contributor>
17- <name>Rintze Zelle</name>
18- <uri>http://twitter.com/rintzezelle</uri>
19- </contributor>
20- <contributor>
21- <name>Stephen Frank</name>
22- <uri>http://www.zotero.org/sfrank</uri>
23- </contributor>
24- <contributor>
25- <name>Sebastian Karcher</name>
26- </contributor>
27- <category citation-format="numeric"/>
28- <category field="engineering"/>
29- <category field="generic-base"/>
30- <summary>IEEE style as per the 2021 guidelines, V 01.29.2021.</summary>
31- <updated>2021-01-29T00:00:00+00:00</updated>
32- <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
33- </info>
34- <locale xml:lang="en">
35- <terms>
36- <term name="chapter" form="short">ch.</term>
37- <term name="presented at">presented at the</term>
38- <term name="available at">available</term>
39- </terms>
40- </locale>
41- <!-- Macros -->
42- <macro name="edition">
43- <choose>
44- <if type="bill book chapter graphic legal_case legislation motion_picture paper-conference report song" match="any">
45- <choose>
46- <if is-numeric="edition">
47- <group delimiter=" ">
48- <number variable="edition" form="ordinal"/>
49- <text term="edition" form="short"/>
50- </group>
51- </if>
52- <else>
53- <text variable="edition" text-case="capitalize-first" suffix="."/>
54- </else>
55- </choose>
56- </if>
57- </choose>
58- </macro>
59- <macro name="issued">
60- <choose>
61- <if type="article-journal report" match="any">
62- <date variable="issued">
63- <date-part name="month" form="short" suffix=" "/>
64- <date-part name="year" form="long"/>
65- </date>
66- </if>
67- <else-if type=" bill book chapter graphic legal_case legislation motion_picture paper-conference song thesis" match="any">
68- <date variable="issued">
69- <date-part name="year" form="long"/>
70- </date>
71- </else-if>
72- <else>
73- <date variable="issued">
74- <date-part name="day" form="numeric-leading-zeros" suffix="-"/>
75- <date-part name="month" form="short" suffix="-" strip-periods="true"/>
76- <date-part name="year" form="long"/>
77- </date>
78- </else>
79- </choose>
80- </macro>
81- <macro name="author">
82- <names variable="author">
83- <name initialize-with="." delimiter=", " and="text"/>
84- <label form="short" prefix=", " text-case="capitalize-first"/>
85- <substitute>
86- <names variable="editor"/>
87- <names variable="translator"/>
88- </substitute>
89- </names>
90- </macro>
91- <macro name="editor">
92- <names variable="editor">
93- <name initialize-with="." delimiter=", " and="text"/>
94- <label form="short" prefix=", " text-case="capitalize-first"/>
95- </names>
96- </macro>
97- <macro name="locators">
98- <group delimiter=", ">
99- <text macro="edition"/>
100- <group delimiter=" ">
101- <text term="volume" form="short"/>
102- <number variable="volume" form="numeric"/>
103- </group>
104- <group delimiter=" ">
105- <number variable="number-of-volumes" form="numeric"/>
106- <text term="volume" form="short" plural="true"/>
107- </group>
108- <group delimiter=" ">
109- <text term="issue" form="short"/>
110- <number variable="issue" form="numeric"/>
111- </group>
112- </group>
113- </macro>
114- <macro name="title">
115- <choose>
116- <if type="bill book graphic legal_case legislation motion_picture song" match="any">
117- <text variable="title" font-style="italic"/>
118- </if>
119- <else>
120- <text variable="title" quotes="true"/>
121- </else>
122- </choose>
123- </macro>
124- <macro name="publisher">
125- <choose>
126- <if type=" bill book chapter graphic legal_case legislation motion_picture paper-conference song" match="any">
127- <group delimiter=": ">
128- <text variable="publisher-place"/>
129- <text variable="publisher"/>
130- </group>
131- </if>
132- <else>
133- <group delimiter=", ">
134- <text variable="publisher"/>
135- <text variable="publisher-place"/>
136- </group>
137- </else>
138- </choose>
139- </macro>
140- <macro name="event">
141- <choose>
142- <if type="paper-conference speech" match="any">
143- <choose>
144- <!-- Published Conference Paper -->
145- <if variable="container-title">
146- <group delimiter=", ">
147- <group delimiter=" ">
148- <text term="in"/>
149- <text variable="container-title" font-style="italic"/>
150- </group>
151- <text variable="event-place"/>
152- </group>
153- </if>
154- <!-- Unpublished Conference Paper -->
155- <else>
156- <group delimiter=", ">
157- <group delimiter=" ">
158- <text term="presented at"/>
159- <text variable="event"/>
160- </group>
161- <text variable="event-place"/>
162- </group>
163- </else>
164- </choose>
165- </if>
166- </choose>
167- </macro>
168- <macro name="access">
169- <choose>
170- <if variable="URL">
171- <group delimiter=". ">
172- <group delimiter=": ">
173- <text term="available at" text-case="capitalize-first"/>
174- <text variable="URL"/>
175- </group>
176- <group prefix="[" suffix="]" delimiter=": ">
177- <text term="accessed" text-case="capitalize-first"/>
178- <date variable="accessed">
179- <date-part name="day" form="numeric-leading-zeros" suffix="-"/>
180- <date-part name="month" form="short" suffix="-" strip-periods="true"/>
181- <date-part name="year" form="long"/>
182- </date>
183- </group>
184- </group>
185- </if>
186- </choose>
187- </macro>
188- <macro name="page">
189- <group>
190- <label variable="page" form="short" suffix=" "/>
191- <text variable="page"/>
192- </group>
193- </macro>
194- <macro name="citation-locator">
195- <group delimiter=" ">
196- <choose>
197- <if locator="page">
198- <label variable="locator" form="short"/>
199- </if>
200- <else>
201- <label variable="locator" form="short" text-case="capitalize-first"/>
202- </else>
203- </choose>
204- <text variable="locator"/>
205- </group>
206- </macro>
207- <!-- Citation -->
208- <citation collapse="citation-number">
209- <sort>
210- <key variable="citation-number"/>
211- </sort>
212- <layout delimiter=", ">
213- <group prefix="[" suffix="]" delimiter=", ">
214- <text variable="citation-number"/>
215- <text macro="citation-locator"/>
216- </group>
217- </layout>
218- </citation>
219- <!-- Bibliography -->
220- <bibliography entry-spacing="0" second-field-align="flush">
221- <layout suffix=".">
222- <!-- Citation Number -->
223- <text variable="citation-number" prefix="[" suffix="]"/>
224- <!-- Author(s) -->
225- <text macro="author" suffix=", "/>
226- <!-- Rest of Citation -->
227- <group suffix=". ">
228- <choose>
229- <!-- Specific Formats -->
230- <if type="article-journal">
231- <group delimiter=", ">
232- <text macro="title"/>
233- <text variable="container-title" font-style="italic" form="short"/>
234- <text macro="locators"/>
235- <text macro="page"/>
236- <text macro="issued"/>
237- </group>
238- </if>
239- <else-if type="paper-conference">
240- <group delimiter=", ">
241- <text macro="title"/>
242- <text macro="event"/>
243- <text macro="issued"/>
244- <text macro="locators"/>
245- <text macro="page"/>
246- </group>
247- </else-if>
248- <else-if type="report">
249- <group delimiter=", ">
250- <text macro="title"/>
251- <text macro="publisher"/>
252- <group delimiter=" ">
253- <text variable="genre"/>
254- <text variable="number"/>
255- </group>
256- <text macro="issued"/>
257- </group>
258- </else-if>
259- <else-if type="thesis">
260- <group delimiter=", ">
261- <text macro="title"/>
262- <text variable="genre"/>
263- <text macro="publisher"/>
264- <text macro="issued"/>
265- </group>
266- </else-if>
267- <else-if type="webpage post-weblog post" match="any">
268- <group delimiter=", " suffix=". ">
269- <text macro="title"/>
270- <text variable="container-title" font-style="italic"/>
271- <text macro="issued"/>
272- </group>
273- </else-if>
274- <else-if type="patent">
275- <text macro="title" suffix=", "/>
276- <text variable="number" prefix="U.S. Patent "/>
277- <text macro="issued"/>
278- </else-if>
279- <!-- Generic/Fallback Formats -->
280- <else-if type="bill book graphic legal_case legislation motion_picture report song" match="any">
281- <group delimiter=", " suffix=". ">
282- <text macro="title"/>
283- <text macro="locators"/>
284- </group>
285- <group delimiter=", ">
286- <text macro="publisher"/>
287- <text macro="issued"/>
288- <text macro="page"/>
289- </group>
290- </else-if>
291- <else-if type="article-magazine article-newspaper broadcast interview manuscript map patent personal_communication song speech thesis webpage" match="any">
292- <group delimiter=", ">
293- <text macro="title"/>
294- <text variable="container-title" font-style="italic"/>
295- <text macro="locators"/>
296- <text macro="publisher"/>
297- <text macro="page"/>
298- <text macro="issued"/>
299- </group>
300- </else-if>
301- <else-if type="chapter paper-conference" match="any">
302- <group delimiter=", " suffix=", ">
303- <text macro="title"/>
304- <group delimiter=" ">
305- <text term="in"/>
306- <text variable="container-title" font-style="italic"/>
307- </group>
308- <text macro="locators"/>
309- </group>
310- <text macro="editor" suffix=" "/>
311- <group delimiter=", ">
312- <text macro="publisher"/>
313- <text macro="issued"/>
314- <text macro="page"/>
315- </group>
316- </else-if>
317- <else>
318- <group delimiter=", " suffix=". ">
319- <text macro="title"/>
320- <text variable="container-title" font-style="italic"/>
321- <text macro="locators"/>
322- </group>
323- <group delimiter=", ">
324- <text macro="publisher"/>
325- <text macro="page"/>
326- <text macro="issued"/>
327- </group>
328- </else>
329- </choose>
330- </group>
331- <text macro="access"/>
332- </layout>
333- </bibliography>
334-</style>
paper/paper.mdmodified+10−5View file
@@ -1,14 +1,19 @@
1-# Benchmarking Compression Algorithms for Scientific Data Arrays
2-
3-*Jeremy Magland, Center for Computational Mathematics, Flatiron Institute*
4-
5-*Last updated: January 2025*
1+---
2+title: "Benchmarking Compression Algorithms for Scientific Data Arrays"
3+author: Jeremy Magland, Center for Computational Mathematics, Flatiron Institute
4+date: "January 2025"
5+bibliography: references.bib
6+geometry:
7+ - margin=1in
8+---
69
710 **Early draft, work in progress.**
811
912 ## Abstract
1013
14+:::abstract
1115 *Benchcompress* is a benchmarking framework designed to evaluate the performance of various compression algorithms on scientific data arrays, with a special focus on electrophysiology traces. The framework automates the benchmarking process, measuring compression ratio, encoding throughput, and decoding throughput for each algorithm-dataset pair. Results are verified through decompression and comparison with the original data, ensuring accuracy. The benchmark results are stored and visualized through an interactive web interface, allowing users to filter, sort, and explore the data. This paper presents the design, implementation, and preliminary results of Benchcompress, highlighting its utility in identifying optimal compression techniques for scientific datasets.
16+:::
1217
1318 ## Introduction
1419
paper/paper.ymldeleted+0−5View file
@@ -1,7 +0,0 @@
1-title: "Benchmarking Compression Algorithms for Scientific Data Arrays"
2-author: "Jeremy Magland"
3-date: "January 2025"
4-bibliography: references.bib
5-csl: ieee.csl
web-ui/public/.gitignoreadded+1−0View file
@@ -0,0 +1 @@
1+*.pdf
\ No newline at end of file
web-ui/src/pages/Paper.tsxmodified+6−12View file
@@ -1,22 +1,16 @@
11 import React from "react";
2-import ReactMarkdown from "react-markdown";
3-import remarkMath from "remark-math";
4-import rehypeKatex from "rehype-katex";
5-// Import paper.md from project root paper/ directory
6-import paperContent from "../../../paper/paper.md?raw";
7-import "katex/dist/katex.min.css";
82 import "./Paper.css";
93
104 const Paper: React.FC = () => {
115 return (
126 <div className="paper-container">
137 <div className="paper-content">
14- <ReactMarkdown
15- remarkPlugins={[remarkMath]}
16- rehypePlugins={[rehypeKatex]}
17- >
18- {paperContent}
19- </ReactMarkdown>
8+ <iframe
9+ src="/benchcompress/paper.pdf#toolbar=0&navpanes=0"
10+ width="100%"
11+ height="100%"
12+ style={{ minHeight: "100vh", border: "none" }}
13+ />
2014 </div>
2115 </div>
2216 );
moveopenescclose