If the spectra are represented as tables/recordets, like in my last posts on the topic, the question arises how to use a table as an argument to a function in PostgreSQL without creating a custom datatype or using temporary tables.
1. As one dimensional array of m/z values followed by the corresponding peak values. The array can then be cut in half and unnested inside the function into a set of records:
select unnest(sdarr[1:1]) as "m/z", unnest(sdarr[2:2]) as intensity from ...;
2. As two dimensional array of m/z values and their corresponding peak values. The partial arrays can then be unnested inside the
function into a set of records:
select unnest(tdarray[1:3]) as "m/z", unnest(tdarray[4:6]) as intensity from ...;
3. As JSON of m/z values and their corresponding peak values. The JSON can then be converted inside the
function into a set of records:
select * from json_to_recordset( '[{"m/z":1.0,"intensity":2.2},{"m/z":3.3,"intensity":4.8}]') as x("m/z" double precision, intensity double precision);
All statements above generate a recordset like:
m/z intensity
1.0 2.2
3.3 4.8
... ...
In an application, I'd go with JSON, since it has the most understandable structure for a developer against this API and it does not require fiddling around with array support functions of the driver, e.g. like createArrayOf() in JDBC.
No comments:
Post a Comment