From 6c098b6e5ec3a56cf03c38637c855fde03f68138 Mon Sep 17 00:00:00 2001 From: The Open Journals editorial robot <89919391+editorialbot@users.noreply.github.com> Date: Fri, 22 Nov 2024 17:15:51 +0000 Subject: [PATCH] Creating 10.21105.joss.07417.jats --- .../paper.jats/10.21105.joss.07417.jats | 496 ++++++++++++++++++ 1 file changed, 496 insertions(+) create mode 100644 joss.07417/paper.jats/10.21105.joss.07417.jats 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 + + + + +