Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
NearRealTimeCTDAS
CTDAS
Commits
30c6d24d
Commit
30c6d24d
authored
Jun 11, 2019
by
brunner
Browse files
working version 11. june
parent
e5716b9a
Changes
7
Expand all
Show whitespace changes
Inline
Side-by-side
da/cosmo/base_optimizer.py
View file @
30c6d24d
...
@@ -49,8 +49,8 @@ class Optimizer(object):
...
@@ -49,8 +49,8 @@ class Optimizer(object):
def
setup
(
self
,
dims
):
def
setup
(
self
,
dims
):
self
.
nlag
=
dims
[
0
]
self
.
nlag
=
dims
[
0
]
self
.
nmembers
=
dims
[
1
]
self
.
nmembers
=
dims
[
1
]
#
self.nparams = dims[2]
self
.
nparams
=
dims
[
2
]
self
.
nparams
=
181
#
self.nparams = 181
self
.
nobs
=
dims
[
3
]
self
.
nobs
=
dims
[
3
]
self
.
create_matrices
()
self
.
create_matrices
()
...
@@ -80,6 +80,7 @@ class Optimizer(object):
...
@@ -80,6 +80,7 @@ class Optimizer(object):
# localization of obs
# localization of obs
self
.
may_localize
=
np
.
zeros
(
self
.
nobs
,
bool
)
self
.
may_localize
=
np
.
zeros
(
self
.
nobs
,
bool
)
# rejection of obs
# rejection of obs
#self.may_reject = np.ones(self.nobs, bool)
self
.
may_reject
=
np
.
zeros
(
self
.
nobs
,
bool
)
self
.
may_reject
=
np
.
zeros
(
self
.
nobs
,
bool
)
# flags of obs
# flags of obs
self
.
flags
=
np
.
zeros
(
self
.
nobs
,
int
)
self
.
flags
=
np
.
zeros
(
self
.
nobs
,
int
)
...
@@ -314,7 +315,6 @@ class Optimizer(object):
...
@@ -314,7 +315,6 @@ class Optimizer(object):
for
n
in
range
(
self
.
nobs
):
for
n
in
range
(
self
.
nobs
):
# Screen for flagged observations (for instance site not found, or no sample written from model)
# Screen for flagged observations (for instance site not found, or no sample written from model)
if
self
.
flags
[
n
]
!=
0
:
if
self
.
flags
[
n
]
!=
0
:
logging
.
debug
(
'Skipping observation (%s,%i) because of flag value %d'
%
(
self
.
sitecode
[
n
],
self
.
obs_ids
[
n
],
self
.
flags
[
n
]))
logging
.
debug
(
'Skipping observation (%s,%i) because of flag value %d'
%
(
self
.
sitecode
[
n
],
self
.
obs_ids
[
n
],
self
.
flags
[
n
]))
continue
continue
...
@@ -324,13 +324,12 @@ class Optimizer(object):
...
@@ -324,13 +324,12 @@ class Optimizer(object):
res
=
self
.
obs
[
n
]
-
self
.
Hx
[
n
]
res
=
self
.
obs
[
n
]
-
self
.
Hx
[
n
]
if
self
.
may_reject
[
n
]:
if
self
.
may_reject
[
n
]:
print
(
'may reject'
)
threshold
=
self
.
rejection_threshold
*
np
.
sqrt
(
self
.
R
[
n
])
threshold
=
self
.
rejection_threshold
*
np
.
sqrt
(
self
.
R
[
n
])
if
np
.
abs
(
res
)
>
threshold
:
if
np
.
abs
(
res
)
>
threshold
:
logging
.
debug
(
'Rejecting observation (%s,%i) because residual (%f) exceeds threshold (%f)'
%
(
self
.
sitecode
[
n
],
self
.
obs_ids
[
n
],
res
,
threshold
))
logging
.
debug
(
'Rejecting observation (%s,%i) because residual (%f) exceeds threshold (%f)'
%
(
self
.
sitecode
[
n
],
self
.
obs_ids
[
n
],
res
,
threshold
))
self
.
flags
[
n
]
=
2
self
.
flags
[
n
]
=
2
continue
continue
else
:
logging
.
debug
(
'Taking observation (%s,%i) as residual (%f) doesnt exceed threshold (%f)'
%
(
self
.
sitecode
[
n
],
self
.
obs_ids
[
n
],
res
,
threshold
))
logging
.
debug
(
'Proceeding to assimilate observation %s, %i'
%
(
self
.
sitecode
[
n
],
self
.
obs_ids
[
n
]))
logging
.
debug
(
'Proceeding to assimilate observation %s, %i'
%
(
self
.
sitecode
[
n
],
self
.
obs_ids
[
n
]))
...
...
da/cosmo/covariances.py
View file @
30c6d24d
...
@@ -29,6 +29,7 @@ import logging
...
@@ -29,6 +29,7 @@ import logging
import
numpy
as
np
import
numpy
as
np
#from da.cosmo.statevector_uniform import StateVector, EnsembleMember
#from da.cosmo.statevector_uniform import StateVector, EnsembleMember
#from da.cosmo.statevector_read_from_output import StateVector, EnsembleMember
#from da.cosmo.statevector_read_from_output import StateVector, EnsembleMember
#from da.cosmo.statevector_mean import StateVector, EnsembleMember
from
da.cosmo.statevector
import
StateVector
,
EnsembleMember
from
da.cosmo.statevector
import
StateVector
,
EnsembleMember
import
da.tools.io4
as
io
import
da.tools.io4
as
io
...
...
da/cosmo/pipeline.py
View file @
30c6d24d
...
@@ -376,7 +376,8 @@ def invert(dacycle, statevector, optimizer):
...
@@ -376,7 +376,8 @@ def invert(dacycle, statevector, optimizer):
logging
.
info
(
header
+
"starting invert"
+
footer
)
logging
.
info
(
header
+
"starting invert"
+
footer
)
dims
=
(
int
(
dacycle
[
'time.nlag'
]),
dims
=
(
int
(
dacycle
[
'time.nlag'
]),
int
(
dacycle
[
'da.optimizer.nmembers'
]),
int
(
dacycle
[
'da.optimizer.nmembers'
]),
int
(
dacycle
.
dasystem
[
'nparameters'
]),
int
(
dacycle
[
'nparameters'
]),
#int(dacycle.dasystem['nparameters']),
statevector
.
nobs
)
statevector
.
nobs
)
if
'opt.algorithm'
not
in
dacycle
.
dasystem
:
if
'opt.algorithm'
not
in
dacycle
.
dasystem
:
...
...
da/cosmo/statevector.py
View file @
30c6d24d
...
@@ -292,7 +292,8 @@ class StateVector(object):
...
@@ -292,7 +292,8 @@ class StateVector(object):
# rands_bg = np.random.uniform(low=-0.05, high=0.05, size=1)
# rands_bg = np.random.uniform(low=-0.05, high=0.05, size=1)
# rands = np.random.randn(self.nparams-1)
# rands = np.random.randn(self.nparams-1)
# rands_bg = np.random.randn(1)*1E-4 # x variance(1E-4)
# rands_bg = np.random.randn(1)*1E-4 # x variance(1E-4)
rands
=
np
.
random
.
normal
(
loc
=
0.0
,
scale
=
1
,
size
=
self
.
nparams
-
1
)
# rands = np.random.normal(loc=0.0, scale=0.4, size=self.nparams-1)
rands
=
np
.
random
.
normal
(
loc
=
0.0
,
scale
=
1000
,
size
=
self
.
nparams
-
1
)
#rands = np.random.normal(loc=0.0, scale=0.7, size=self.nparams-1)
#rands = np.random.normal(loc=0.0, scale=0.7, size=self.nparams-1)
rands_bg
=
np
.
random
.
normal
(
loc
=
0.0
,
scale
=
0.05
,
size
=
1
)
#*1E-4 # x variance(1E-4)
rands_bg
=
np
.
random
.
normal
(
loc
=
0.0
,
scale
=
0.05
,
size
=
1
)
#*1E-4 # x variance(1E-4)
# rands_bg = np.random.normal(loc=0.0, scale=1E-4, size=1) #*1E-4 # x variance(1E-4)
# rands_bg = np.random.normal(loc=0.0, scale=1E-4, size=1) #*1E-4 # x variance(1E-4)
...
...
da/cosmo/statevector_mean.py
0 → 100644
View file @
30c6d24d
This diff is collapsed.
Click to expand it.
da/cosmo/statevector_read_from_output.py
View file @
30c6d24d
...
@@ -293,9 +293,10 @@ class StateVector(object):
...
@@ -293,9 +293,10 @@ class StateVector(object):
ifile
=
Dataset
(
'/scratch/snx3000/parsenov/octe/optimizer.20130401.nc'
,
mode
=
'r'
)
ifile
=
Dataset
(
'/scratch/snx3000/parsenov/octe/optimizer.20130401.nc'
,
mode
=
'r'
)
# par = ifile.variables['lambda'][:]
# par = ifile.variables['lambda'][:]
par
=
ifile
.
variables
[
'statevectordeviations_prior'
][:]
par
=
ifile
.
variables
[
'statevectordeviations_prior'
][:]
par
=
par
.
reshape
(
181
,
2
,
21
)
par
=
par
.
reshape
(
2
,
181
,
21
)
+
1
#par = par.reshape(181,2,21) + 1
# par = par + np.ones(shape=(181,2,21))
# par = par + np.ones(shape=(2,40,181))
# par = par + np.ones(shape=(2,40,181))
par
=
par
+
np
.
ones
(
shape
=
(
181
,
2
,
21
))
# Create members 1:nmembers and add to ensemble_members list
# Create members 1:nmembers and add to ensemble_members list
for
member
in
range
(
1
,
self
.
nmembers
):
for
member
in
range
(
1
,
self
.
nmembers
):
# rands = np.random.uniform(low=-1., high=1., size=self.nparams-1)
# rands = np.random.uniform(low=-1., high=1., size=self.nparams-1)
...
@@ -310,7 +311,7 @@ class StateVector(object):
...
@@ -310,7 +311,7 @@ class StateVector(object):
# newmember.param_values = (np.hstack((randsC.flatten(),rands_bg)) + newmean).ravel() #THIS ONE
# newmember.param_values = (np.hstack((randsC.flatten(),rands_bg)) + newmean).ravel() #THIS ONE
# newmember.param_values[newmember.param_values<0.] = 0.
# newmember.param_values[newmember.param_values<0.] = 0.
# newmember.param_values[newmember.param_values>2.] = 2.
# newmember.param_values[newmember.param_values>2.] = 2.
newmember
.
param_values
=
par
[
:,
lag
,
member
]
newmember
.
param_values
=
par
[
lag
,
:
,
member
]
# newmember.param_values = par[lag, member, :]
# newmember.param_values = par[lag, member, :]
# if member==1:
# if member==1:
# print(par[:, lag, member])
# print(par[:, lag, member])
...
...
template.py
View file @
30c6d24d
...
@@ -36,6 +36,7 @@ from da.cosmo.obspack_globalviewplus2 import ObsPackObservations
...
@@ -36,6 +36,7 @@ from da.cosmo.obspack_globalviewplus2 import ObsPackObservations
from
da.cosmo.optimizer
import
CO2Optimizer
from
da.cosmo.optimizer
import
CO2Optimizer
#from da.cosmo.observationoperator_parallel import ObservationOperator # does not fully work
#from da.cosmo.observationoperator_parallel import ObservationOperator # does not fully work
from
da.cosmo.observationoperator_octe
import
ObservationOperator
from
da.cosmo.observationoperator_octe
import
ObservationOperator
#from da.cosmo.observationoperator_read_from_files import ObservationOperator
#from da.cosmo.observationoperator import ObservationOperator
#from da.cosmo.observationoperator import ObservationOperator
#from da.cosmo.expand_fluxes import save_weekly_avg_1x1_data, save_weekly_avg_state_data, save_weekly_avg_tc_data, save_weekly_avg_ext_tc_data
#from da.cosmo.expand_fluxes import save_weekly_avg_1x1_data, save_weekly_avg_state_data, save_weekly_avg_tc_data, save_weekly_avg_ext_tc_data
#from da.analysis.expand_molefractions import write_mole_fractions
#from da.analysis.expand_molefractions import write_mole_fractions
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment