# Dataframe input recommendations

**URL:** <https://swi-prolog.discourse.group/t/dataframe-input-recommendations/8559>\
**Category:** Discussion\
**Created:** [October 25, 2024, 9:58pm UTC](https://swi-prolog.discourse.group/t/dataframe-input-recommendations/8559 "2024-10-25T21:58:29Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rscho314](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/rscho314/32/2881_2.png) [@Rscho314](https://swi-prolog.discourse.group/u/Rscho314)\
**Post date:** [October 25, 2024, 9:58pm UTC](https://swi-prolog.discourse.group/t/dataframe-input-recommendations/8559/1 "2024-10-25T21:58:29Z")

</div>

Hi, I’m writing a constraint solver over tabular data. Ultimately, I’d like this to be a website where users upload their own datasets. What’s a good way of doing that, expecting most uploaded data to originate from R, Python or STATA?

There’s of course the CSV solution for non-nested datasets. I thought about accepting JSON to allow nested data. R and Python libs use the Arrow file format, but I wasn’t able to find a pack for it, and I’m clearly not up to writing a parser.

Any pointers? Thanks!

---

<div class="post-metadata">

**Author:** ![peter.ludemann](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/peter.ludemann/32/48_2.png) [@peter.ludemann](https://swi-prolog.discourse.group/u/peter.ludemann)\
**Post date:** [October 25, 2024, 10:20pm UTC](https://swi-prolog.discourse.group/t/dataframe-input-recommendations/8559/2 "2024-10-25T22:20:23Z")

</div>

For the Arrow format, if the C/C++ libraries have a reasonable API, it should be possible to write a foreign function interface (probably it’s easier to use SWI-Prolog’s C++ interface, even if you’re wrapping the C library).

---

<div class="post-metadata">

**Author:** ![Rscho314](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/rscho314/32/2881_2.png) [@Rscho314](https://swi-prolog.discourse.group/u/Rscho314)\
**Post date:** [October 26, 2024, 4:48pm UTC](https://swi-prolog.discourse.group/t/dataframe-input-recommendations/8559/3 "2024-10-26T16:48:09Z")

</div>

I just stumbled on [SWISH -- SWI-Prolog for SHaring](https://swish.swi-prolog.org/example/chat80.swinb) showing a full-screen app, and other examples showing interaction with R with file upload allowed.

SWISH is a bit nebulous to me and I’m a total newbie website builder, so forgive me for asking: how complex of a custom user interface does SWISH support ? Is the set of widgets limited to what’s shown in the tutorials ?

I’m now wondering whether a SWISH instance on my university server might actually be the easiest path.

---

<div class="post-metadata">

**Author:** ![jan](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/jan/32/4_2.png) [@jan](https://swi-prolog.discourse.group/u/jan)\
**Post date:** [October 27, 2024, 7:42pm UTC](https://swi-prolog.discourse.group/t/dataframe-input-recommendations/8559/4 "2024-10-27T19:42:26Z")

</div>

> [@Rscho314](#):
>
> how complex of a custom user interface does SWISH support?

If you have control over the server you can anything that your browser can support. Without, you can still do a lot. As some of the demos illustrates you can write JavaScript that interacts with server side Prolog code.

> [@Rscho314](#):
>
> I’m now wondering whether a [SWISH](https://swish.swi-prolog.org/) instance on my university server might actually be the easiest path.

Possibly. It depends what you want. You can do a lot on the public instance and you can quite easily run a version locally. You can also deploy that on a server. [swish.swi-prolog.org](http://swish.swi-prolog.org) exploits that horizontal scaling of SWISH, which makes setting it up quite a bit harder. You probably do not need that.
