Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Table file I/O #49

Open
6 tasks
apjanke opened this issue May 5, 2019 · 7 comments
Open
6 tasks

Table file I/O #49

apjanke opened this issue May 5, 2019 · 7 comments
Assignees
Labels
enhancement New feature or request tables The table stuff
Milestone

Comments

@apjanke
Copy link
Owner

apjanke commented May 5, 2019

Matlab's table support includes I/O functions for reading and writing tables to and from various file types:

I/O Functionality

It supports CSV, TSV/delimited, fixed-width fields, and Excel files. (And Open Office .ods files?)

Excel files are going to be the big issue here. They're a complex file format that's hard to parse, so we'll probably need to pull in a library to do this. Apache FOP would be the obvious choice for me. But that's Java, and Java is not available in all Octave builds, so Octave prefers not to have anything in core that depends on Java. And I'd like to see Tablicious make it in to core Octave some day.

This is going to be a big task.

References

TODO

  • Research C/C++ Excel I/O libraries.
  • Research the Octave Forge io package to see if I can build on top of that.
    • For both Excel and regular csv/dlm reading.
@apjanke apjanke mentioned this issue May 5, 2019
58 tasks
@apjanke apjanke added the enhancement New feature or request label May 5, 2019
@apjanke apjanke added this to the The Future milestone May 5, 2019
@apjanke apjanke changed the title table file I/O Table file I/O May 5, 2019
@apjanke apjanke self-assigned this Oct 18, 2019
@apjanke
Copy link
Owner Author

apjanke commented Oct 18, 2019

There was some discussion of this on the Octave Maintainers mailing list: https://lists.gnu.org/archive/html/octave-maintainers/2019-10/msg00071.html. Looks like there's an appetite for readtable/writetable. I'm bumping up the priority on this to High.

@eebrown
Copy link

eebrown commented Aug 13, 2020

Would the io package (https://octave.sourceforge.io/io/index.html) help provide some intermediate functions for readtable? E.g. to load a csv file, using csv2cell() from io and your cell2table() ?

@apjanke
Copy link
Owner Author

apjanke commented Aug 14, 2020

Would the io package (https://octave.sourceforge.io/io/index.html) help provide some intermediate functions for readtable?

Yes and no. ;) In theory and in a broad sense, yes, the io package should provide lower-level things that Tablicious can build off of. But in practice, Tablicious has specific I/O needs, I generally like to write my own low-level shizz, and depending on the io package introduces the problem of synchronizing versions between the two packages (especially because the stuff Tablicious would need only appears in recent versions of io). So who knows?

I'm open to either approach: build on top of io and take it as a dependency, or just build our own I/O stuff from scratch.

@eebrown
Copy link

eebrown commented Aug 14, 2020

Thanks for considering. I am not too familiar with the Octave package system (I mostly work in R), but another option would be to borrow the needed (GPL) code within your package to avoid a dependency issue, and then you could also adapt it to your needs. I think ultimately all of this belongs in base Octave, since they are core Matlab features and in high demand (e.g. bug https://savannah.gnu.org/bugs/?44571). In any event thank you for all your work on this package.

@apjanke
Copy link
Owner Author

apjanke commented Aug 14, 2020

I think ultimately all of this belongs in base Octave, since they are core Matlab features

I agree. My ultimate goal is to contribute the entirety of Tablicious up into the core Octave code base and have it just be part of core Octave. Though I'm going to maintain it, at least in parallel, as a package for a while, because I am stuck on Octave 4.4.x due to the Octave 5.x GUI being broken on macOS, so if it makes it in to an upcoming Octave release I still won't be able to use it there.

and in high demand

Is it? I've been working on this library for like a year and gotten almost no users or bug reports/feature requests. ;)

In any event thank you for all your work on this package.

You're very welcome! Happy to have someone who finds it useful.

@XVilka
Copy link

XVilka commented Mar 12, 2021

I am stuck on Octave 4.4.x due to the Octave 5.x GUI being broken on macOS

It probably worth to retry Octave 6.2.0 nowadays:

@apjanke
Copy link
Owner Author

apjanke commented Mar 12, 2021

It probably worth to retry Octave 6.2.0 nowadays

You are correct! The Octave 6.x release fixed the GUI problems we were having on macOS, so this is no longer a blocker here, and the importance of having a back-compatible Tablicious package is lower IMHO. (Though still useful, because there are some people out there, especially Linux users running the distribution-supplied Octave, who are still on older Octave versions.)

We're actually having a discussion on the Octave Maintainers mailing list right now about getting all this Tablicious stuff into core Octave eventually.

@apjanke apjanke moved this to High priority in Octave-Tablicious Jan 4, 2024
@apjanke apjanke added the tables The table stuff label Feb 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request tables The table stuff
Projects
Status: High priority
Development

No branches or pull requests

3 participants