# AIFS ensemble model

**URL:** <https://forum.ecmwf.int/t/aifs-ensemble-model/13734>\
**Category:** AIFS\
**Tags:** aifs\
**Created:** [8 July 2025 08:18 UTC](https://forum.ecmwf.int/t/aifs-ensemble-model/13734 "2025-07-08T08:18:58Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Antonio\_Bruno](https://forum.ecmwf.int/letter_avatar_proxy/v4/letter/a/f17d59/32.png) [@Antonio\_Bruno](https://forum.ecmwf.int/u/Antonio_Bruno)\
**Post date:** [8 July 2025 08:18 UTC](https://forum.ecmwf.int/t/aifs-ensemble-model/13734/1 "2025-07-08T08:18:58Z")

</div>

Hi there,

on regarding the new released notebook to run AIFS\_ens on Huggingface, I want to use it to run an ensemble forecast but I understood that the notebook is made to run only an element of the ensamble with the original initial state and there is no option to adding the noise to produce the remaining 50 runs used in the original operational ensemble product.  
How the noise is added to the initial state? Is there a guide to produce an entire ensemble?

Regards

---

<div class="post-metadata">

**Author:** ![Matt\_Rydzik](https://forum.ecmwf.int/letter_avatar_proxy/v4/letter/m/9dc877/32.png) [@Matt\_Rydzik](https://forum.ecmwf.int/u/Matt_Rydzik)\
**Post date:** [8 July 2025 11:00 UTC](https://forum.ecmwf.int/t/aifs-ensemble-model/13734/2 "2025-07-08T11:00:55Z")

</div>

Individual member initial conditions come from the members of the IFS ensemble.

> **[Implementation of AIFS ENS v1 - Forecast User - ECMWF Confluence Wiki](https://confluence.ecmwf.int/display/FCST/Implementation+of+AIFS+ENS+v1)**

> ## Assimilation
> 
> - AIFS ENS uses the operational IFS ensemble initial conditions, regridded to an N320 grid. In other words, member _n_ of AIFS ENS uses the same initial condition as member _n_ of the IFS ensemble and the control of AIFS ENS uses the same initial condition as the control of the IFS ensemble.

---

<div class="post-metadata">

**Author:** ![Antonio\_Bruno](https://forum.ecmwf.int/letter_avatar_proxy/v4/letter/a/f17d59/32.png) [@Antonio\_Bruno](https://forum.ecmwf.int/u/Antonio_Bruno)\
**Post date:** [8 July 2025 12:07 UTC](https://forum.ecmwf.int/t/aifs-ensemble-model/13734/3 "2025-07-08T12:07:51Z")

</div>

Thanks Matt,  
this is true for the operational product, but to reproduce the ensemble using the notebook on Huggingface it is not specified the source of the perturbed initial condition or how these are determined from the initial state.  
I can see only that the initial state is retrieved from OpendataClient using the function get\_open\_data, I assume that these data contains the unperturbed conditions as specified in the notebook

“Here we make a single forecast, from the control initial condition of the ensemble. In operations, this model is run 51 times, once from the control and 50 more times from slightly different initial conditions.”

My question is, how I can recreate the 51 ensemble members perturbing the initial conditions in the same way?

---

<div class="post-metadata">

**Author:** ![Matt\_Rydzik](https://forum.ecmwf.int/letter_avatar_proxy/v4/letter/m/9dc877/32.png) [@Matt\_Rydzik](https://forum.ecmwf.int/u/Matt_Rydzik)\
**Post date:** [8 July 2025 12:15 UTC](https://forum.ecmwf.int/t/aifs-ensemble-model/13734/4 "2025-07-08T12:15:23Z")

</div>

It appears that the get\_open\_data function has a parameter of ‘number’, this number is the perturbation

fields.update(get\_open\_data(param=PARAM\_SFC, number=number))

Right above that is:  
“To get different ensemble initial conditions from the ifs pertubation, set `number` to an ensemble number, between 1-50.”

---

<div class="post-metadata">

**Author:** ![Antonio\_Bruno](https://forum.ecmwf.int/letter_avatar_proxy/v4/letter/a/f17d59/32.png) [@Antonio\_Bruno](https://forum.ecmwf.int/u/Antonio_Bruno)\
**Post date:** [8 July 2025 12:32 UTC](https://forum.ecmwf.int/t/aifs-ensemble-model/13734/5 "2025-07-08T12:32:39Z")

</div>

Hi Matt,

thanks, that option was just added, the original code did not include that possibility.
