Setting meta-data
Meta-data are simply series of name/values attached to a dataset. It can be numbers, dates or just text. Some of these are automatically detected from certain type of data files (but that is the topic for another day). The simplest way to set meta-data is to use theset-meta
command:
QSoas> set-meta pH 7.5This command sets the meta-data
pH
to the value 7.5
. Keep in mind that QSoas does not know anything about the meaning of the meta-data[1]. It can keep track of the meta-data you give, and manipulate them, but it will not interpret them for you. You can set several meta-data by repeating calls to set-meta
, and you can display the meta-data attached to a dataset using the command show
. Here is an example:
QSoas> generate-buffer 0 10 QSoas> set-meta pH 7.5 QSoas> set-meta sample "My sample" QSoas> show 0 Dataset generated.dat: 2 cols, 1000 rows, 1 segments, #0 Flags: Meta-data: pH = 7.5 sample = My sampleNote here the use of quotes around
My sample
since there is a space inside the value.
Using meta-data
There are many ways to use meta-data in QSoas. In this post, we will discuss just one: using meta-data in the output file. The output file can collect data from several commands, like peak data, statistics and so on. For instance, each time the command1
is run, a line with the information about the largest peak of the current dataset is written to the output file. It is possible to automatically add meta-data to those lines by using the /meta=
option of the output
command. Just listing the names of the meta-data will add them to each line of the output file.
As a full example, we'll see how one can take advantage of meta-data to determine the position of the peak of the function \(x^2 \exp (-a\,x)\) depends on \(a\). For that, we first create a script that generates the function for a certain value of \(a\), sets the meta-data a
to the corresponding value, and find the peak. Let's call this file do-one.cmds
(all the script files can be found in the GitHub repository):
generate-buffer 0 20 x**2*exp(-x*${1}) set-meta a ${1} 1This script takes a single argument, the value of \(a\), generates the appropriate dataset, sets the meta-data
a
and writes the data about the largest (and only in this case) peak to the output file. Let's now run this script with 1
as an argument:
QSoas> @ do-one.cmds 1This command generates a file
out.dat
containing the following data:
## buffer what x y index width left_width right_width area generated.dat max 2.002002002 0.541340590883 100 3.4034034034 1.24124124124 2.162162162161.99999908761This gives various information about the peak found: the name of the dataset it was found in, whether it's a maximum or minimum, the x and y positions of the peak, the index in the file, the widths of the peak and its area. We are interested here mainly in the
x
position.
Then, we just run this script for several values of \(a\) using run-for-each
, and in particular the option /range-type=lin
that makes it interpret values like 0.5..5:80
as 80 values evenly spread between 0.5 and 5. The script is called
run-all.cmds
:
output peaks.dat /overwrite=true /meta=a run-for-each do-one.cmds /range-type=lin 0.5..5:80 V all /style=red-to-blueThe first line sets up the output to the output file
peaks.dat
. The option /meta=a
makes sure the meta a
is added to each line of the output file, and /overwrite=true
make sure the file is overwritten just before the first data is written to it, in order to avoid accumulating the results of different runs of the script. The last line just displays all the curves with a color gradient. It looks like this:
Running this script (with @ run-all.cmds
) creates a new file peaks.dat
, whose first line looks like this:
## buffer what x y index width left_width right_width area aThe column
x
(the 3rd) contains the position of the peaks, and the column a
(the 10th) contains the meta a
(this column wasn't present in the output we described above, because we had not used yet the output /meta=a
command). Therefore, to load the peak position as a function of a
, one has just to run:
QSoas> load peaks.dat /columns=10,3This looks like this: Et voilĂ ! To train further, you can:
- improve the resolution in x;
- improve the resolution in y;
- plot the magnitude of the peak;
- extend the range;
- derive the analytical formula for the position of the peak and verify it !
[1] this is not exactly true. For instance, some commands like unwrap
interpret the sr
meta-data as a voltammetric scan rate if it is present. But this is the exception.