Поместите мультимодельный многопроходный ансамбль в набор данных xarray - PullRequest
0 голосов
/ 16 мая 2019

У меня есть многомодельные данные многопроходного ансамбля, т. Е. Ансамбль модели, в котором каждая модель также имеет отдельные прогоны.Я хотел бы иметь возможность обращаться к прогонам как по модели (т.е. получать все члены ансамбля, которые принадлежат конкретной модели), так и по элементам (т.е. получать среднее значение по конкретным / всем прогонам, независимо от того, какая модель).Следовательно, model должно быть названием модели, а member - просто произвольным номером или идентификатором.

Мой черновик выглядит так:

ds = xr.Dataset(
        {'some_var': (['time', 'model'], some_data)},
        coords={'time': pd.date_range(from_date, to_date),
                'model': (['model', ], some_data.shape[1] * [model_name])})

однако мне не удается сделатьmember переменная / координата, чтобы я мог сделать и:

ds.sel(dict(model='model_a', member=0))  # select member 0 from model a

и

ds.sel(time=0).some_var.mean()  # calulate mean of whole ensemble at time 0

Я пытался создать member переменную, которая зависит от model координата, но тогда я не могу выбрать ее.

Я воздержался от использования групп для отдельных моделей, потому что тогда создание статистики по всему ансамблю становится затруднительным.Как это будет организовано в файле?

1 Ответ

0 голосов
/ 17 мая 2019

Хорошо, я думаю, что это было проще, чем я думал. Это должно быть что-то вроде:

ds = xr.Dataset({'some_var': (['time', 'member', 'model'], some_3D_var)},
                       coords={'member': (['member', ], np.arange(some_3D_var.shape[1])),
                               'model': (['model', ], ['model_name']),
                               'time': (['time', ], pd.date_range(from_date, to_date)),
                               })

Таким образом, должно быть возможно применить оба выбора к набору данных.

...