> For the complete documentation index, see [llms.txt](https://particle-analytics-1.gitbook.io/iota-python-api/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://particle-analytics-1.gitbook.io/iota-python-api/iota/scenario.md).

# Scenario

`iota.session.Scenario()`

**Description** Iota scenario object.

**Methods**

* [`get_dataset`](/iota-python-api/iota/scenario.md#get_dataset)
* [`get_datasets`](/iota-python-api/iota/scenario.md#get_datasets)
* [`add_dataset`](/iota-python-api/iota/scenario.md#add_dataset)
* [`import_dataset`](/iota-python-api/iota/scenario.md#import_dataset)
* [`exists_dem_dataset`](/iota-python-api/iota/scenario.md#exists_dem_dataset)
* [`get_dem_dataset`](/iota-python-api/iota/scenario.md#get_dem_dataset)
* [`get_cg_dataset`](/iota-python-api/iota/scenario.md#get_cg_dataset)
* [`exists_graph`](/iota-python-api/iota/scenario.md#exists_graph)
* [`get_graph`](/iota-python-api/iota/scenario.md#get_graph)
* [`get_graphs`](/iota-python-api/iota/scenario.md#get_graphs)
* [`add_graph`](/iota-python-api/iota/scenario.md#add_graph)
* [`add_file`](/iota-python-api/iota/scenario.md#add_file)
* [`get_file`](/iota-python-api/iota/scenario.md#get_file)
* [`get_files`](/iota-python-api/iota/scenario.md#get_files)
* [`get_mesh`](/iota-python-api/iota/scenario.md#get_mesh)
* [`get_meshes`](/iota-python-api/iota/scenario.md#get_meshes)
* [`add_mesh`](/iota-python-api/iota/scenario.md#add_mesh)
* [`get_script`](/iota-python-api/iota/scenario.md#get_script)
* [`get_scripts`](/iota-python-api/iota/scenario.md#get_scripts)
* [`add_script`](/iota-python-api/iota/scenario.md#add_script)
* [`add_video`](/iota-python-api/iota/scenario.md#add_video)
* [`add_screenshot`](/iota-python-api/iota/scenario.md#add_screenshot)
* [`delete`](/iota-python-api/iota/scenario.md#delete)
* [`get_coarse_graining_settings`](/iota-python-api/iota/scenario.md#get_coarse_graining_settings)
* [`run_coarse_graining`](/iota-python-api/iota/scenario.md#run_coarse_graining)

&#x20;**Variables**

* `name` (str) scenario name
* `description` (str) scenario description
* `id` (int) scenario Id
* `project` (iota.session.Project) the project containing this scenario

## Methods

### [get\_dataset(name,\[data\_format\])](/iota-python-api/iota/scenario.md#get_dataset) <a href="#get_dataset" id="get_dataset"></a>

*Return a dataset record specified by name*

**Arguments**

* `name`: (str) dataset name
* `data_format`: (str) data format of the dataset to be loaded. The scenario can have more than one dataset with the same name if data\_format is different. (default: **None**)

**Example**

```python
dataset = my_scenario.get_dataset(
  name = 'mixing_rpm_30',
  data_format = 'PADEM'
  )
```

### [get\_datasets()](/iota-python-api/iota/scenario.md#get_datasets) <a href="#get_datasets" id="get_datasets"></a>

*Return the list of dataset records in the scenario*

**Example**

```python
print('List of datasets in the scenario')
for dataset in my_scenario.get_datasets():
  print('dataset: {} (format: {})'.format(dataset.name,dataset.data_format))
```

### [add\_dataset(name, data\_format, file, \[description\])](/iota-python-api/iota/scenario.md#add_dataset) <a href="#add_dataset" id="add_dataset"></a>

*Add a Iota Dataset file to a scenario* *data\_format must be one of **PADEM** or **PACG***

**Arguments**

* `name`: (str) dataset name
* `data_format`: (str) format of the dataset
* `file`: (str) dataset filepath
* `description`: (str) dataset description (default: **None**)

**Example**

```python
my_scenario.add_dataset(
  name = 'mixing_rpm_32',
  data_format = 'PADEM',
  file = '/path/to/my/dataset/mixing_rpm_32.meta',
  description = 'mixing analysis with drum speed of 32 RPM'
  )
```

### [import\_dataset(file,\[name\],\[data\_format\],\[include\_graphs\],\[description\])](/iota-python-api/iota/scenario.md#import_dataset) <a href="#import_dataset" id="import_dataset"></a>

*Import external Dataset to a scenario* *data\_format must be one of the accepted formats: \[**EDEM 2017**]*

**Arguments**

* `file`: (str) dataset filepath
* `name`: (str) dataset name. If not defined, used the basename of the filepath (Default: **None**)
* `data_format`: (str) format of the dataset
* `include_graphs`: (bool) import any graph available in the dataset to the scenario
* `description`: (str) dataset description (Default: **None**)

**Example**

```python
my_scenario.import_dataset(
  file = '/path/to/my/edem/dataset/simulation.dem',
  name = 'mixing_rpm_34',
  data_format = 'EDEM 2017',
  include_graphs = True,
  description = 'mixing analysis with drum speed of 34 RPM'
  )
```

### [exists\_dem\_dataset()](/iota-python-api/iota/scenario.md#exists_dem_dataset) <a href="#exists_dem_dataset" id="exists_dem_dataset"></a>

*Check if exists a DEM dataset in the scenario*

**Example**

```python
if my_scenario.exists_dem_dataset():
  print('Scenario have a DEM dataset')
```

### [get\_dem\_dataset()](/iota-python-api/iota/scenario.md#get_dem_dataset) <a href="#get_dem_dataset" id="get_dem_dataset"></a>

*Return the scenario DEM Dataset if one exists in the scenario*

**Example**

```python
dataset = my_scenario.get_dem_dataset()
print('Dataset format: {}'.format(dataset.data_format))
```

### [get\_cg\_dataset()](/iota-python-api/iota/scenario.md#get_cg_dataset) <a href="#get_cg_dataset" id="get_cg_dataset"></a>

*Return the scenario CG Dataset if one exists in the scenario*

**Example**

```python
dataset = my_scenario.get_cg_dataset()
print('Dataset format: {}'.format(dataset.data_format))
```

### [exists\_graph(name,\[tags\])](/iota-python-api/iota/scenario.md#exists_graph) <a href="#exists_graph" id="exists_graph"></a>

*Return True if graph exists, specified by name (and tags)*

**Arguments**

* `name`: (str) graph name
* `tags`: (dict) tags dictionary

**Example**

```python
exists_graph = my_scenario.exists_graph(
  name = 'Reaction Force',
  tags = {
    'dataset': 'mixing_rpm_34'
    }
  )
if exists_graph: 
  print('graph exist!')
```

### [get\_graph(name,\[tags\])](/iota-python-api/iota/scenario.md#get_graph) <a href="#get_graph" id="get_graph"></a>

*Return a graph, specified by name (and tags)*

**Arguments**

* `name`: (str) graph name
* `tags`: (dict) tags dictionary

**Example**

```python
graph = my_scenario.get_graph(
  name = 'Reaction Force',
  tags = {
    'dataset': 'mixing_rpm_34'
    }
  )
```

### [get\_graphs()](/iota-python-api/iota/scenario.md#get_graphs) <a href="#get_graphs" id="get_graphs"></a>

*Return the list of graphs in the scenario*

**Example**

```python
print('List of graphs:')
for graph in my_scenario.get_graphs():
  print('Graph: {}'.format(graph.name))
```

### [add\_graph(name,\[title\],\[xdata\],\[ydata\],\[legend\],\[xtitle\],\[ytitle\],\[csvfile\],\[overwrite\],\[description\],\[tags\])](/iota-python-api/iota/scenario.md#add_graph) <a href="#add_graph" id="add_graph"></a>

*Add a new graph to a scenario.* *The graph can be defined in a **csv file** or by defining all the components (data, titles, etc)*

**Arguments**

* `name`: (str) graph name
* `title`: (str) graph title
* `filepath`: (str) optional file path for new graph file (Default: **None**)
* `xdata`: (iota.ArrayFloat) array of data representing the values of axis X
* `ydata`: (list\[iota.ArrayFloat]) list of arrays representing the data series
* `legend`: (list\[str]) list of names for the data series
* `xtitle`: (str) title of the axis X
* `ytitle`: (str) title of the axis Y
* `csvfile`: (str) csv file containing the graph data. If this is defined, none of the previous variables are considered
* `description`: (str) graph description
* `tags`: (dict) tags dictionary
* `overwrite`: (bool) overwrite graph file if already exists

**Example**

```python
x_values = iota.ArrayFloat([0,1,2,3,4,5,6])
average_force = iota.ArrayFloat(len(x_values),10.0)
graph = my_scenario.add_graph(
  name = 'Average Force',
  title = 'Average Force',
  xtitle = 'Step',
  xdata = x_values,
  ytitle = 'Force',
  legend = ['Force'],
  ydata = [average_force],
  tags = {
    'dataset': 'mixing_rpm_34'
    },
  overwrite = True
  )

graph2 = my_scenario.add_graph(
  name = 'Average Torque',
  csvfile = '/path/to/my/graph/torque.csv',
  tags = {
    'dataset': 'mixing_rpm_34'
    }
  )
```

### [get\_mesh()](/iota-python-api/iota/scenario.md#get_mesh) <a href="#get_mesh" id="get_mesh"></a>

*Return a mesh specified by a name*

**Arguments**

* `name`: (str) mesh name

**Example**

```python
mesh_record = my_scenario.get_mesh(
  name = 'mixing_drum_v02'
  )
```

### [get\_meshes()](/iota-python-api/iota/scenario.md#get_meshes) <a href="#get_meshes" id="get_meshes"></a>

*Return th elist of meshes in a scenario*

**Example**

```python
print('List of meshes:')
for mesh in my_scenario.get_meshes():
  print(' mesh: {}'.format(mesh.name))
```

### [add\_mesh(file, \[description\])](/iota-python-api/iota/scenario.md#add_mesh) <a href="#add_mesh" id="add_mesh"></a>

*Add a mesh by filepath to a scenario*

**Arguments**

* `file`: (str) mesh filepath
* `description`: (str) mesh description

**Example**

```python
my_scenario.add_mesh(
  file = '/path/to/my/mesh/mixing_drum_v2.stl',
  description = 'Mixing drum with inclinantion of 30 degrees'
  )
```

### [get\_file(name)](/iota-python-api/iota/scenario.md#get_file) <a href="#get_file" id="get_file"></a>

*Return a file, specified by name*

**Arguments**

* `name`: (str) file name

**Example**

```python
file = my_scenario.get_file(
  name = 'list of values test 2'
  )
```

### [get\_files()](/iota-python-api/iota/scenario.md#get_files) <a href="#get_files" id="get_files"></a>

*Return the list of files in a scenario*

**Example**

```python
print('List of files:')
for file in my_scenario.get_files():
  print(' file: {}'.format(file.name))
```

### [add\_file(name, filepath, \[description\])](/iota-python-api/iota/scenario.md#add_file) <a href="#add_file" id="add_file"></a>

*Create and return a file, describe by name, filepath and optional description*

**Arguments**

* `name`: (str) scenario name
* `filepath`: (str) file path
* `description`: (str) file description (Default: **None**)

**Example**

```python
my_scenario.add_file(
  name = 'my text file',
  filepath= '/path/to/my/file/text.txt',
  description='this file contains the summary of parameters used for the simulations'
  )
```

### [get\_script(name)](/iota-python-api/iota/scenario.md#get_script) <a href="#get_script" id="get_script"></a>

*Return a script spcified by a name*

**Arguments**

* `name`: (str) script name

**Example**

```python
script_file = my_scenario.get_script(
  name = 'calculate mixing index'
  )
```

### [get\_scripts()](/iota-python-api/iota/scenario.md#get_scripts) <a href="#get_scripts" id="get_scripts"></a>

*Return the list of scripts in a scenario*

**Example**

```python
print('List of scripts:')
for script in my_scenario.get_scripts():
  print(' script: {}'.format(script.name))
```

### [add\_script()](/iota-python-api/iota/scenario.md#add_script) <a href="#add_script" id="add_script"></a>

*Add a script (python file) to a scenario*

**Arguments**

* `name`: (str) script name
* `filepath`: (str) script file path
* `description`: (str) script description (Default: **None**)

**Example**

```python
my_scenario.add_script(
  name = 'calculate mixing index',
  filepath = '/path/to/my/scripts/calculate_mixing_index.py',
  description = 'This script calculate the Lacey mixing index using binning'
  )
```

### [add\_video(file,name,\[description\],\[tags\],\[thumbnail\])](/iota-python-api/iota/scenario.md#add_video) <a href="#add_video" id="add_video"></a>

*Add a video file to a scenario*

**Arguments**

* `file`: (str) video file path
* `name`: (str) video name
* `description`: (str) video description (Default: **None**)
* `tags`: (dict) tags dictionary (Default: **None**)
* `thumbnail`: (str) image file to be used as a thumbnail (Default: **None**)

**Example**

```python
my_scenario.add_video(
  file = '/path/to/my/videos/mixer_rpm_32_velocity_X.mp4',
  name = 'Mixer at 32 RPM',
  description = 'This video shows the velocity profile in X direction for the case with drum speed at 32 RPM',
  tags = {
    'dataset': 'mixer_rpm_32',
    'result': 'Velocity (X)'
    }
  )
```

### [add\_screenshot(file,name,\[description\],\[tags\])](/iota-python-api/iota/scenario.md#add_screenshot) <a href="#add_screenshot" id="add_screenshot"></a>

*Add image file to a scenario*

**Arguments**

* `file`: (str) screenshot file path
* `name`: (str) screenshot name
* `description`: (str) screenshot description (Default: **None**)
* `tags`: (dict) tags dictionary (Default: **None**)

**Example**

```python
my_scenario.add_video(
  file = '/path/to/my/images/mixer_rpm_32_velocity-Y_time3.42.png',
  name = 'Mixer at 32 RPM',
  description = 'Velocity profile in Y direction for the case with drum speed at 32 RPM. Time = 3.42s',
  tags = {
    'dataset': 'mixer_rpm_32',
    'result': 'Velocity (Y)',
    'timestep': '3.42'
    }
  )
```

### [delete()](/iota-python-api/iota/scenario.md#delete) <a href="#delete" id="delete"></a>

*Delete scenario from the database (and disk if applicable)*

**Example**

```python
name = my_scenario.name
my_scenario.delete()
if not my_project.exist_scenario(name):
  print('scenario removed')
```

### [get\_coarse\_graining\_settings()](/iota-python-api/iota/scenario.md#get_coarse_graining_settings) <a href="#get_coarse_graining_settings" id="get_coarse_graining_settings"></a>

*Retun the a CG Settings object of defined in the current scenario (see* [*CG\_Settings*](https://github.com/particle-analytics/iota-python-api/tree/79ae110f50c92abf90b9e5d280ab032d313fe62c/cg_settings.md) *for more info)*

**Example**

```python
config = my_scenario.get_coarse_graining_settings()
print('CG Output name: {}'.format(config['output']['name']))
```

### [run\_coarse\_graining(\[with\_settings\], \[print\_messages\])](/iota-python-api/iota/scenario.md#run_coarse_graining) <a href="#run_coarse_graining" id="run_coarse_graining"></a>

*Run coarse graining on a scenario with optional custom settings.* *If custom settings are provided, a copy of the provided settings with with modified output directory and scenario fields will be used.*

**Arguments**

* `with_settings`: (iota.session.CG\_Settings) Alternative settings to replace local one used for the analysis (Default: **None**)
* `print_messages`: (bool) activate/deactivate full verbosity during execution (Default: **False**)

**Example**

```python
cg_settings = my_scenario.get_coarse_graining_settings()
cg_settings['output']['name'] = 'My dataset name'
cg_settings['output']['padem'] = True
cg_settings.set()

results = my_scenario.run_coarse_graining(
  print_messages = True)
print(results.datasets)
```
