Observation vectors#
In pyCIF, the observation vector \(\mathbf{y}\) is stored as a folder, with a structure by type of observation and species. Therein, individual files follow a format similar to the one expected to provide observations.
obsvect folder
├── obs type #1
│ ├── species #1
│ │ └── monitor.nc
│ └── species #2f
│ └── monitor.nc
└── obs type #2
├── species #1
│ └── monitor.nc
└── species #2
└── monitor.nc
NetCDF format#
NetCDF monitor.nc
in the observation vector use the group features to separate
different types of observations.
By default there are two groups of information:
- maindata:
it includes the observations, observation errors, simulated equivalents, increments in the case of the tangent-linear and adjoint sensitivities
- metadata:
it includes all other information, including the date, longitude, latitude, etc. of the corresponding observation
Each output monitor.nc
file is then formatted as illustrated in the following example:
netcdf monitor {
// global attributes:
:_NCProperties = "version=2,netcdf=4.8.0,hdf5=1.10.6" ;
group: maindata {
dimensions:
index = 10912 ;
variables:
int64 index(index) ;
double obs(index) ;
obs:_FillValue = NaN ;
double obserror(index) ;
obserror:_FillValue = NaN ;
double sim(index) ;
sim:_FillValue = NaN ;
double sim_tl(index) ;
sim_tl:_FillValue = NaN ;
double adj_out(index) ;
adj_out:_FillValue = NaN ;
double spec(index) ;
spec:_FillValue = NaN ;
double incr(index) ;
incr:_FillValue = NaN ;
// group attributes:
:datei = "01-01-2008 00:00:00" ;
:datef = "01-01-2009 00:00:00" ;
:model\ name = "CHIMERE" ;
:model\ version = "std" ;
:domain\ nlon = "101" ;
:domain\ nlat = "85" ;
:history = "Created on 11-05-2022 20:42:13" ;
} // group maindata
group: metadata {
dimensions:
index = 10912 ;
station_id = 16 ;
network_id = 1 ;
parameter_id = 1 ;
variables:
int64 index(index) ;
double alt(index) ;
alt:_FillValue = NaN ;
int64 date(index) ;
date:units = "minutes since 2008-04-10 12:00:00" ;
date:calendar = "proleptic_gregorian" ;
double dtstep(index) ;
dtstep:_FillValue = NaN ;
double duration(index) ;
duration:_FillValue = NaN ;
double i(index) ;
i:_FillValue = NaN ;
byte is_obsvect(index) ;
is_obsvect:dtype = "bool" ;
double j(index) ;
j:_FillValue = NaN ;
double lat(index) ;
lat:_FillValue = NaN ;
double level(index) ;
level:_FillValue = NaN ;
double lon(index) ;
lon:_FillValue = NaN ;
int64 network(index) ;
int64 parameter(index) ;
int64 station(index) ;
double tstep(index) ;
tstep:_FillValue = NaN ;
double tstep_glo(index) ;
tstep_glo:_FillValue = NaN ;
string list_stations(station_id) ;
string list_networks(network_id) ;
string list_parameters(parameter_id) ;
// group attributes:
:datei = "01-01-2008 00:00:00" ;
:datef = "01-01-2009 00:00:00" ;
:model\ name = "CHIMERE" ;
:model\ version = "std" ;
:domain\ nlon = "101" ;
:domain\ nlat = "85" ;
:history = "Created on 11-05-2022 20:42:14" ;
} // group metadata
}