is jmmmp/cellblock a model of what you could use? but adapted to lists and maybe not so complex?
I tried opening your first example in [text]. As I thought, the issue is that commas are already reserved in pd for line changes. The output is this (I added a line number at the start of each line) when using carriage returns:
print: 0 { print: 1 "cols" : 3 print: 2 print: 3 "data" : { print: 4 "entry-0" : [ -0.06755 print: 5 0.44185 print: 6 -0.33835 ] print: 7 print: 8 "entry-1" : [ -0.12305 print: 9 -0.24085 print: 10 0.31295 ] print: 11 print: 12 "entry-2" : [ -0.0595 print: 13 -0.2881 print: 14 0.0597 ] print: 15 } print: 16 print: 17 } print: 18
Or this without them:
print: 0 { "cols" : 3 print: 1 "data" : { "entry-0" : [ -0.06755 print: 2 0.44185 print: 3 -0.33835 ] print: 4 "entry-1" : [ -0.12305 print: 5 -0.24085 print: 6 0.31295 ] print: 7 "entry-2" : [ -0.0595 print: 8 -0.2881 print: 9 0.0597 ] } } print: 10
which makes it a bit hard to read json files without some hacking, as all those commas create a new line. Unless there is another method, is it better to code your own json interpreter?
One advantage of [text] is that it can be used to declare data structures directly - examples might be in my tutorial, I'm not sure anymore how far I got with it.
Files are attached.
Joao
Thanks for the quick reply!
2 use-cases.
1- we can generate or retrieve a dataset's content to use natively in the creative coding environment (Max Pd Sc) so that it integrates in other workflows of data mangling and drawing. We already have in our dataset object file support and single point entry and query but this allow batch dump and load. The structure is:
{ "cols" : 3, "data" : { "entry-0" : [ -0.06755, 0.44185, -0.33835 ], "entry-1" : [ -0.12305, -0.24085, 0.31295 ], "entry-2" : [ -0.0595, -0.2881, 0.0597 ] }
}
2- we can retrieve or set the state of a complex objects. Our object will spit out its internal status ( for instance, a neural net) and we can use the values of its parameters, like below. More interestingly, we can also query its structure and use that information too.
{ "layers" : [ { "activation" : 3, "biases" : [ -3.076234734727154, 0.772760846709679 ], "cols" : 2, "rows" : 1, "weights" : [ [ 6.015551733036155, -1.826803841455323 ] ] } , { "activation" : 3, "biases" : [ -0.490600074475542 ], "cols" : 1, "rows" : 2, "weights" : [ [ -3.115116035462417 ], [ -3.969281643687132 ] ] } ] }
The key-value nesting is quite powerful for this type of open structure...
On 7 Sep 2021, at 15:51, Christof Ressi info@christofressi.com wrote:
Can you give an example of how the data is structured?
In which ways are users supposed to interact with the data?
Christof
On 07.09.2021 16:37, Pierre Alexandre Tremblay wrote:
Dear all
I am trying to find the most Pd-vanilla-way to interface with our Dataset object in the FluCoMa project. In Max and SuperCollider we use Dictionaries, which are nestable and queryable in powerful programmatic ways, working essentially like interfaces to JSON-like data structures.
I’ve looked at [struct] but the [set] object does not allow to do symbols and (list of) floats, and [appends] seem to have the same limitations. In all cases, I’m not certain it is the best approach in any cases to create such a list in Pd...
I wonder how people do it and if I am missing an obvious workflow, especially with nested structures.
Any pointer (pun intended) welcome
p