.. _output: ********** Output CSV ********** Graph are automatically generated for all tested variables combinations. On top of :ref:`graph ` NPF has two output modules to extract the generated data. Recall NPF also uses an internal database to remember every values generated by the test script. Single CSV file =============== This is created with ``--single-output filename.csv`` The following is the output of ``npf-compare.py --test integration/math.npf --single-output test.csv``, a test script that prints the input vairable "N", its logarithm and square product for N=[1-32] : .. csv-table:: test.csv index,build,test_index,N,N,LOG,EXP,run_index 0,Local,0,1,1.0,0.0,2.0,0 1,Local,0,1,1.0,0.0,2.0,1 2,Local,0,1,1.0,0.0,2.0,2 [...] 93,Local,31,32,32.0,3.47,4294967296.0,0 94,Local,31,32,32.0,3.47,4294967296.0,1 95,Local,31,32,32.0,3.47,4294967296.0,2 The columns are: index: An index for the line build: The name of the build/repository, "Local" is the default name for no repository. If you used *npf-compare "local:Serie"* the name woult be Serie test_index: For each build, the index of the combination of variable. N: This is the input variable "N" N: This is the output result-type "N" LOG: This is the output result type "LOG" EXP: This is the output result type "EXP" run_index: For each test_index, the index of the run. Goes from 0 to ``--config n_runs=X`` Example to open the file in python and compute the mean for each variable: .. code-block:: python import pandas as pd df = pd.read_csv('test.csv') df.groupby('test_index').mean() index N N.1 LOG EXP run_index test_index 0 1.0 1.0 1.0 0.00 2.000000e+00 1.0 1 4.0 2.0 2.0 0.69 4.000000e+00 1.0 2 7.0 3.0 3.0 1.10 8.000000e+00 1.0 [...] 29 88.0 30.0 30.0 3.40 1.073742e+09 1.0 30 91.0 31.0 31.0 3.43 2.147484e+09 1.0 31 94.0 32.0 32.0 3.47 4.294967e+09 1.0 While this single output file contains all the data and allow complete manipulation, it forces the user to do aggregate by themselves. Multiple CSV files ================== The --output lines will create one CSV per output type, just before generating the graphs. Therefore series, graph transformations, ... all apply before the CSV is generated. With --output-columns the list of columns can be selected among: * mean/average: The mean value of all runs * min: The min value of all runs * max: The max values of all runs * perc[0-9]+: The configurable percentile for all runs * med/median/perc50: The median value for all runs * std: The standard deviation * nres/n: The number of runs * first: The first value of the runs * last: The last value of the runs * all: One column per value of the run The following is the output of ``npf-compare.py --test integration/math.npf --output test.csv --output-columns x mean median``, using the same test script as above : .. csv-table:: test/LOG.csv 1 0.0 0.0 2 0.69 0.69 3 1.1 1.1 [...] 30 3.4 3.4 31 3.43 3.43 32 3.47 3.47 There is no variance in this test, so the mean is equal to the median.