diff --git a/joss.07417/10.21105.joss.07417.crossref.xml b/joss.07417/10.21105.joss.07417.crossref.xml new file mode 100644 index 0000000000..e638a63896 --- /dev/null +++ b/joss.07417/10.21105.joss.07417.crossref.xml @@ -0,0 +1,235 @@ + + + + 20241122171524-c74338eb10788a08e60ecf3c22eb8c38c8e999ea + 20241122171524 + + JOSS Admin + admin@theoj.org + + The Open Journal + + + + + Journal of Open Source Software + JOSS + 2475-9066 + + 10.21105/joss + https://joss.theoj.org + + + + + 11 + 2024 + + + 9 + + 103 + + + + itrm: Interactive Terminal Utilities + + + + David + Woodburn + + Air Force Institute of Technology, Dayton, Ohio, United States of America + + https://orcid.org/0009-0000-5935-2850 + + + + 11 + 22 + 2024 + + + 7417 + + + 10.21105/joss.07417 + + + http://creativecommons.org/licenses/by/4.0/ + http://creativecommons.org/licenses/by/4.0/ + http://creativecommons.org/licenses/by/4.0/ + + + + Software archive + 10.6084/m9.figshare.27637752 + + + GitHub review issue + https://github.com/openjournals/joss-reviews/issues/7417 + + + + 10.21105/joss.07417 + https://joss.theoj.org/papers/10.21105/joss.07417 + + + https://joss.theoj.org/papers/10.21105/joss.07417.pdf + + + + + + Terminalplot + Kressibucher + GitHub repository + 2023 + Kressibucher, M. (2023). +Terminalplot. In GitHub repository. GitHub. +https://github.com/kressi/terminalplot/ + + + Bashplotlib + Lamp + GitHub repository + 2019 + Lamp, G. (2019). Bashplotlib. In +GitHub repository. GitHub. +https://github.com/glamp/bashplotlib/tree/master + + + Pysparklines + Whaley + GitHub repository + 2021 + Whaley, B. (2021). Pysparklines. In +GitHub repository. GitHub. +https://github.com/RedKrieg/pysparklines + + + Termgraph + Kazmierczak + GitHub repository + 2021 + Kazmierczak, M. (2021). Termgraph. In +GitHub repository. GitHub. +https://github.com/mkaz/termgraph + + + Termplot + Powell + GitHub repository + 2018 + Powell, W. (2018). Termplot. In +GitHub repository. GitHub. +https://github.com/iswdp/termplot + + + Termplotlib + Schlömer + GitHub repository + 2021 + Schlömer, N. (2021). Termplotlib. In +GitHub repository. GitHub. +https://github.com/nschloe/termplotlib + + + Plotille + Ippen + GitHub repository + 2022 + Ippen, T. (2022). Plotille. In GitHub +repository. GitHub. +https://github.com/tammoippen/plotille + + + Drawille + Tauber + GitHub repository + 2020 + Tauber, A. (2020). Drawille. In +GitHub repository. GitHub. +https://github.com/asciimoo/drawille + + + Asciichartpy + Kroitor + GitHub repository + 2020 + Kroitor, I. (2020). Asciichartpy. In +GitHub repository. GitHub. +https://github.com/kroitor/asciichart + + + Uniplot + Stetter + GitHub repository + 2024 + Stetter, O. (2024). Uniplot. In +GitHub repository. GitHub. +https://github.com/olavolav/uniplot + + + Plotext + Piccolomo + GitHub repository + 2022 + Piccolomo, S. (2022). Plotext. In +GitHub repository. GitHub. +https://github.com/piccolomo/plotext + + + Pipeplot + Chistyakov + GitHub repository + 2020 + Chistyakov, I. (2020). Pipeplot. In +GitHub repository. GitHub. +https://github.com/MyGodIsHe/pipeplot + + + Gnuplot + Williams + 2024 + Williams, T., Kelley, C., Lang, R., +Kotz, D., Campbell, J., Elber, G., Woo, A., & others. (2024). +Gnuplot. http://www.gnuplot.info/ + + + Ttyplot + Sawicki + GitHub repository + 2024 + Sawicki, A. (2024). Ttyplot. In +GitHub repository. GitHub. +https://github.com/tenox7/ttyplot + + + YouPlot + Tools + GitHub repository + 2024 + Tools, R. D. (2024). YouPlot. In +GitHub repository. GitHub. +https://github.com/red-data-tools/YouPlot + + + Termeter + Sasaki + GitHub repository + 2015 + Sasaki, A. (2015). Termeter. In +GitHub repository. GitHub. +https://github.com/atsaki/termeter + + + + + + diff --git a/joss.07417/10.21105.joss.07417.pdf b/joss.07417/10.21105.joss.07417.pdf new file mode 100644 index 0000000000..d84b2c26d4 Binary files /dev/null and b/joss.07417/10.21105.joss.07417.pdf differ diff --git a/joss.07417/paper.jats/10.21105.joss.07417.jats b/joss.07417/paper.jats/10.21105.joss.07417.jats new file mode 100644 index 0000000000..b619d4b68c --- /dev/null +++ b/joss.07417/paper.jats/10.21105.joss.07417.jats @@ -0,0 +1,496 @@ + + +
+ + + + +Journal of Open Source Software +JOSS + +2475-9066 + +Open Journals + + + +7417 +10.21105/joss.07417 + +itrm: Interactive Terminal Utilities + + + +https://orcid.org/0009-0000-5935-2850 + +Woodburn +David + + + + + +Air Force Institute of Technology, Dayton, Ohio, United +States of America + + + + +2 +10 +2024 + +9 +103 +7417 + +Authors of papers retain copyright and release the +work under a Creative Commons Attribution 4.0 International License (CC +BY 4.0) +2024 +The article authors + +Authors of papers retain copyright and release the work under +a Creative Commons Attribution 4.0 International License (CC BY +4.0) + + + +Python +plotting +analysis +interactive + + + + + + Summary +

The itrm library provides a terminal-based + solution for interactively analyzing data. While it does have + facilities for progress bars, heat maps, bar charts, and tables, its + primary feature is interactive data plots. It will render as a dot + matrix of Unicode Braille characters (or ASCII text if needed) your + (x,y) data. Using a + vertical cursor, you can inspect data points, zoom in on a region, or + scrub through the data. With simple 2 to 3-character keybindings, you + can run a variety of transforms on the data: absolute value, + autocorrelation, Allan variance, differentiation, integration, Fourier + transform, smoothing, detrending, trimming, etc. You can leave behind + a ghost of the cursor and then analyze the data between the ghost + position and current position of the cursor. It can plot multiple data + sets simultaneously with automatic color differentiation, and it + allows the user to focus on just one data set at a time, even hiding + all others if desired.

+

This library is written in pure Python, and aside from some builtin + modules has only NumPy as a dependency. It is optimized to run + smoothly on data sets of up to at least a million points. And, it has + been built to run on all platforms (Linux, macOS, Windows) and any + fully-implemented terminal (i.e., not Jupyter notebooks). It will even + run on Windows’ Console and VS Code’s builtin terminal.

+

This library can be installed with + pip install itrm + and apart from builtin libraries has only Numpy as a dependency. + Examples using this library can be found + here.

+
+ + Statement of need +

Many developers, engineers, and scientists spend significant time + working within terminal environments, where switching contexts to + generate visual plots can be both time-consuming and annoying. + Traditional plotting tools, while effective for producing polished + final figures, are often insufficient for quickly inspecting and + understanding data. Curious to see what the frequency content of the + data is? Want to filter out the high-frequency noise so you can see a + pattern more clearly? Interested in the derivative of the data? All + these will typically require you go back to your source and write + several lines of code before you can see the results. This challenge + is amplified when working remotely with a server, where visualizing + data often requires saving it to a file, transferring it to a local + machine, and writing scripts to generate plots—a tedious and + repetitive process. A more efficient solution is needed to streamline + data visualization and interaction directly within the terminal.

+

There are already several terminal-based plotting tools available, + several of them written for Python. The following table summarizes a + non-exhaustive list of these tools. The + Line plots column refers to whether the library + provides for plots of (x,y) data. The Y-axis + column refers to whether the y value can be + read off by the user. The Resolution column + refers to the character set used to print to the terminal: Braille (4 + by 2 matrix of dots) would be high, half blocks + (2 by 1 Unicode drawing characters) would be half, and asterisks + (*) would be low.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAuthorLanguageLine plotsY-axisResolution
asciichartpyKroitor + (2020)Pythonyesyeslow
bashplotlibLamp + (2019)Pythonyesnolow
drawilleTauber + (2020)Pythonnonohigh
pipeplotChistyakov + (2020)Pythonnonolow
plotextPiccolomo + (2022)Pythonyeslimitedhigh
plotilleIppen + (2022)Pythonyeslimitedhigh
pysparklinesWhaley + (2021)Pythonnonohigh
termgraphKazmierczak + (2021)Pythonnoyeshigh
terminalplotKressibucher + (2023)Pythonyesnolow
termplotPowell + (2018)Pythonnonolow
termplotlibSchlömer + (2021)Pythonyeslimitedlow
uniplotStetter + (2024)Pythonyeslimitedhalf
gnuplotWilliams et al. + (2024)Cyeslimitedlow
termeterSasaki + (2015)Goyeslimitedhigh
ttyplotSawicki + (2024)Cnolimitedlow
youplotTools + (2024)Rubyyeslimitedhigh
+
+

None of these tools is interactive in the sense of providing data + point inspection, view zooming and panning, point-to-point + comparisons, etc. And, certainly none of them provide the ability to + process the data with common transforms on the fly. Only a few of them + provide sub-character resolution through the use of Braille + characters.

+
+ + + + + + + + KressibucherMichael + + Terminalplot + GitHub repository + GitHub + 2023 + https://github.com/kressi/terminalplot/ + + + + + + LampGreg + + Bashplotlib + GitHub repository + GitHub + 2019 + https://github.com/glamp/bashplotlib/tree/master + + + + + + WhaleyBrandon + + Pysparklines + GitHub repository + GitHub + 2021 + https://github.com/RedKrieg/pysparklines + + + + + + KazmierczakMarcus + + Termgraph + GitHub repository + GitHub + 2021 + https://github.com/mkaz/termgraph + + + + + + PowellWilliam + + Termplot + GitHub repository + GitHub + 2018 + https://github.com/iswdp/termplot + + + + + + SchlömerNico + + Termplotlib + GitHub repository + GitHub + 2021 + https://github.com/nschloe/termplotlib + + + + + + IppenTammo + + Plotille + GitHub repository + GitHub + 2022 + https://github.com/tammoippen/plotille + + + + + + TauberAdam + + Drawille + GitHub repository + GitHub + 2020 + https://github.com/asciimoo/drawille + + + + + + KroitorIgor + + Asciichartpy + GitHub repository + GitHub + 2020 + https://github.com/kroitor/asciichart + + + + + + StetterOlav + + Uniplot + GitHub repository + GitHub + 2024 + https://github.com/olavolav/uniplot + + + + + + PiccolomoSavino + + Plotext + GitHub repository + GitHub + 2022 + https://github.com/piccolomo/plotext + + + + + + ChistyakovIlya + + Pipeplot + GitHub repository + GitHub + 2020 + https://github.com/MyGodIsHe/pipeplot + + + + + + WilliamsThomas + KelleyColin + LangRussell + KotzDave + CampbellJohn + ElberGershon + WooAlexander + others + + Gnuplot + 2024 + http://www.gnuplot.info/ + + + + + + SawickiAntoni + + Ttyplot + GitHub repository + GitHub + 2024 + https://github.com/tenox7/ttyplot + + + + + + ToolsRed Data + + YouPlot + GitHub repository + GitHub + 2024 + https://github.com/red-data-tools/YouPlot + + + + + + SasakiAtsushi + + Termeter + GitHub repository + GitHub + 2015 + https://github.com/atsaki/termeter + + + + +