# This file contains metadata for your plugin. Beginning
# with version 1.8 this is the preferred way to supply information about a
# plugin. The current method of embedding metadata in __init__.py will
# be supported until version 2.0

# This file should be included when you package your plugin.

# Mandatory items:


[general]
name=OpenQuake Integrated Risk Modelling Toolkit
qgisMinimumVersion=3.0
description=Tools to drive the OpenQuake Engine, running calculations and visualizing their parameters and outputs
about=This plugin allows users to drive OpenQuake Engine calculations (https://github.com/gem/oq-engine) of physical hazard and risk, and to load the corresponding outputs as QGIS layers. For those outputs, data visualization tools are provided.
version=3.24.1
author=GEM Foundation
email=staff.it@globalquakemodel.org

# end of mandatory metadata

# Optional items:

# Uncomment the following line and add your changelog entries:
changelog=
    3.24.1
    * When loading oq-engine outputs from CSV, fields containing only zero or one values are treated as integers instead of booleans
    * When aggregating damage, consequences or losses by zone, the layer containing points to be aggregated is created and styled, but it is not made visible in the map, in order to avoid overlapping with the styled zonal layer
    * Loaders for damages-rlzs and damages-stats were improved, giving the possibility to choose between damage and consequences
    * A loader for the oq-engine output damages-stats (Asset Risk Statistics) similar to the existing one for damages-rlzs (Asset Risk Distributions) was added
    3.24.0
    * Reading multi-peril data is consistent with the recent engine-side renaming of 'multi_peril_csv' to 'multi_peril_file'
    3.23.2
    * The 'Remove' calculation button is not shown if the current user is not the owner of the calculation
    3.23.1
    * Fixed zonal aggregation for the damages_rlzs oq-engine output
    * When any layer is created from a oq-engine output, a spatial index is also created for that layer
    3.23.0
    * Aligned with oq-engine 3.23
    3.22.1
    * It is possible to visualize OQ Engine 'shared' calculations and the corresponding outputs and logs
    3.22.0
    * The loader for ground motion fields was modified, so the user selects the realization first, then the event id, then the IMT used for styling the layer
    * Support for social vulnerability and recovery modeling was removed
    * Added the possibility to display total aggregated loss curves
    3.21.1
    * In the dialog driving the oq-engine, when the user resizes the columns of the calculations list table, the new widths are kept when the table is refreshed
    * In the dialog driving the oq-engine, it is possible to trigger the selection/unselection of a calculation by clicking on the corresponding row
    3.21.0
    * When loading ground motion fields from an OpenQuake calculation, secondary perils (if available) are added to the selectable IMTs
    3.20.0
    * Aligned with oq-engine 3.20
    3.19.2
    * Removed all references to the OQ Platform
    * Fixed testing infrastructure using recent QGIS docker images and addressing some deprecation warnings
    3.19.1
    * Fixed the loader for ruptures
    * Different way to select the event and the GMPE in oq-engine scenario calculations
    * Fixed the header of aggregated average losses realizations in case of oq-engine parameter collect_rlzs=True
    3.19.0
    * Improved integration tests, checking compatibility with python 3.9, 3.10 and 3.11 and with test cases used in risk workshops
    3.18.0
    * Added visualization of aggcurves and aggcurves-stats for event_based_damage oq-engine calculations
    * When only one realization is extracted from the engine, it is considered as the mean
    * Increased numpy.load parameter max_header_size to 100000 in order to prevent errors extracting some hazard curves
    * Added visualization of OEP and AEP for event-based risk and damage calculations
    3.17.8
    * The extent of layers having at least one feature but empty extent is increased by a small delta in order to allow zooming to layer
    3.17.7
    * A clear error message is displayed if recovery modeling runs with an incompatible number of damage states with respect to what's specified in the recovery modeling settings
    * Measurement units for oq-engine loss data types 'residents' and 'occupants' were fixed
    3.17.6
    * oqparam['collect_rlzs'] is taken into account while retrieveing the list of realizations of an oq-engine calculation
    3.17.5
    * Handling measurement units for loss data types 'area' and 'number' recently added to the oq-engine
    3.17.4
    * Also OQ-Engine outputs 'mean_rates_by_src' and 'mean_disagg_by_src' are loadable automatically as layers
    * The dialog displaying OQ-Engine calculation reports or logs does not wrap text and contains Courier monospace font for better compatibility across operating systems
    * Layer groups for hazard maps are created only when they will contain at least one layer
    * The title of the IRMT Settings dialog now displays also the plugin version
    3.17.3
    * The button to retrieve the OQ Engine calculation parameters is properly reset similarly to what was already correctly done for the button to download the datastore
    * Numpy integer and unsigned integer types are mapped to QT LongLong and ULongLong types, to be able to represent e.g. big rupture ids
    3.17.2
    * The loader for OQ-Engine Asset Risk Distributions is compliant with a change in the NPZ output produced by OQ 3.17
    3.17.1
    * The loader of OQ-Engine disaggregation realizations was fixed, following the renaming of the 'disagg' output into 'disagg-rlzs' in OQ 3.17
    3.17.0
    * Aligned with OQ-Engine 3.17
    3.16.0
    * Aligned with OQ-Engine 3.16
    3.15.3
    * When exporting data from the Data Viewer, selected tags (if present) are correctly reported in the output csv
    * When loading a csv as layer, the user is asked to confirm in case the csv is bigger than 10 MB
    * For 'Asset Risk Distributions', also a table of consequences is shown if available
    * The visualization of 'aggcurves' and 'aggcurves-stats' was updated according to changes in the OQ-Engine extract API
    * The 'Load table' button was added also for OQ-Engine outputs 'damages-stats' and 'aggrisk-stats'
    * The 'Load layer' and 'Aggregate' buttons for avg_losses-rlzs are not available in case 'avg_losses-stats' is present (because in that case the OQ-Engine only extract statistics and not all the separate realizations)
    3.15.2
    * The user manual is built via docker and the makefile was improved to retrieve plugin version and experimental tag from metadata and update the online documentation accordingly
    3.15.1
    * Accepting also taxonomies that include the character '='
    3.15.0
    * Aligned with oq-engine 3.15
    3.14.2
    * Ground motion fields are read identifying site coordinates through field names instead of positionally, making it robust to the addition of fields such as 'custom_site_id'
    * A clearer error message is given if Pillow is missing when loading the plugin
    * If any hazard curve is flat with all zeros values, a warning is displayed and the curve is excluded from the plot. If no hazard curve can be plotted, the plot is reset.
    3.14.1
    * Fix styling maps, following an undocumented recent change in QGIS API renaming 'PrettyBreaks' -> 'Pretty'
    3.14.0
    * Installation instructions in the README were updated to be consistent with the user manual
    3.13.1
    * Improved plugin packaging procedure
    3.13.0
    * Minor changes to obtain compatibility with OQ-Engine 3.13
    3.12.0
    * Minor changes to obtain compatibility with OQ-Engine 3.12
    3.11.4
    * Fixed a bug that was preventing the possibility to download oq-engine outputs in all available formats
    * Improved some plot labels in loss curves
    * Fixed zonal aggregation
    * Fixed an encoding issue in the retrieval of loss curves
    * Classification methods are properly retrieved using QgsApplication.classificationMethodRegistry()
    3.11.3
    * Integration tests for recovery modeling were unskipped
    * The loader for earthquake ruptures was fixed
    * Disaggregation outputs are extracted in separate QgsTask instances, avoiding QGIS to be blocked meanwhile
    * Completely restructured integration tests (IRMT <-> OQ-Engine) and running CI versus qgis dockers 3_8_3, 3_16 and latest
    3.11.2
    * Fixed a bug in the assignment of field types while loading the OQ-Engine Asset Damage Distribution output as layer
    3.11.1
    * Like 3.11.0, but without the "experimental" flag
    3.11.0
    * The OQ-Engine output 'losses_by_event' was renamed into 'agg_loss_table'
    * Fixed displaying full vertical headers in Data Viewer
    * The settings dialog was made scrollable
    * Hazard maps are grouped by POE
    * Following a change in the OQ-Engine, agglosses are now loaded as aggrisk
    * A parameter was added to switch between default hmaps styling and the styling used for SGC projects
    * Cross symbols rendered for OQ-Engine disaggregation outputs are opaque, wider and thicker than those used for other outputs (e.g. hcurves)
    * Following a change in the OQ Engine outputs, avg_damages-rlzs and avg_damages-stats were renamed into damages-rlzs and damages-stats
    * Fixed management of MultiPoint when selecting a point and redrawing charts accordingly
    3.10.0
    * When loading ground motion fields, download and preselect relevant event ids
    * Added possibility to load all hmaps into a single layer, with a style per field created automatically
    * When hmaps are loaded from OQ-Engine outputs and the option to create one layer per statistic is checked, a style per field is created
    * Added loader for disaggregation OQ-Engine outputs
    * The visualization of dmg_by_event and losses_by_event is enabled also for event-based calculations
    * OQ Engine outputs dmg_by_asset and losses_by_asset were renamed (following the change in the engine) to avg_damages-rlzs and avg_losses-rlzs.
    3.9.1
    * For scenario OQ-Engine calculations, when loading GMFs, ranges of event ids per GMPE are displayed while the user chooses an event
    * For GMF loaded layers, the correct GMPE is loaded and the layer name contains the calculation mode and the name of the right GMPE
    * Fixed conversion of numpy data loaded from OQ Engine outputs into native python data types used in QGIS layers
    * Fixed the wrong creation of additional empty fields while loading ground motion fields
    * When pressing the button to run an OQ-Engine calculation or to continue from a previous one, the user can choose if selecting files from a zip file or from
      a directory. In the latter case, also data available in nested directories will be sent to the OQ-Engine
    3.9.0
    * The plugin uses `numpy.load(allow_pickle=False)` while extracting data from the OQ-Engine
    3.8.0
    * Ruptures are loaded from OQ-Engine outputs as separate layers, one for each geometry type (polygon, line or point), instead of representing lines as degenerate flat polygons.
    * Ground motion fields are loaded from the OQ-Engine after pre-filtering them by event id, thus dramatically reducing data transfer and visualization time. This improvement made
      it possible to enable the visualization of ground motion fields also for event-based calculations.
    * Field data types of layers created from OQ-Engine outputs were fixed (they were wrongly all numeric before)
    * The list of calculation can be filtered by job id. This also makes possible to visualize old calculations that would not be listed among the most recent 100 calculations.
    * Ruptures are loaded through the OQ-Engine extract api, instead of exporting and loading the corresponding csv file.
    * Ruptures can be filtered by minimum magnitude, and a clear error message is displayed if no ruptures of such a high magnitude are found.
    * Whenever the plugin consolidates a memory layer into a file or copies a csv-based layer into an editable one, it produces a geopackage instead of a shapefile.
    * A section about the visualization of multi_risk OQ-Engine inputs and outputs has been added to the user manual.
    3.7.2
    * The management of profiles for the connection to the OpenQuake Platform was fixed.
    * The output type selector in the Data Viewer was disabled, so it still shows the output type but it can not be modified by the user.
    * OQ-Engine outputs to be loaded as tables from csv are loaded directly with a single click, instead of prior displaying a dialog showing the file size.
    * OQ-Engine outputs aggcurves for event_based_risk calculations can be visualized in the Data Viewer if experimental features of the plugin are enabled.
    * OQ-Engine input files can be downloaded as zip.
    * Added loader for OQ-Engine outputs 'agglosses'
    * The plugin is also a Processing Toolbox algorithm provider, offering an extensible set of field transformation functions
      (normalization/standardization, ranking, and others) and a modified version of the "Join attributes by location (summary)"
      algorithm, that automatically styles the output joined layer
    * Re-added and updated the user manual chapter about aggregating points by zone
    * Scripts running tests and building the user manual have been fixed
    * Layers loaded from OQ-Engine outputs store metadata (title and keywords) read from calculation parameters and user choices
    * The color for selected features is red for layers that use a cross symbol in the map (e.g. hazard curves and uniform hazard spectra)
    * Moving the mouse over recovery curves, a dynamic annotation is displayed, showing the coordinates of the pointed element
    * Widgets to select multiple items have been replaced by more compact selectors that also allow text searching
    * Selectors for tag values are added to the GUI, each containing a multiselector for values of a different tag
    * When a new OQ-Engine calculation is successfully launched, the corresponding row is highlighted in the list of calculations, and the list of its outputs is loaded
    * Moving the cursor through the list of available OQ-Engine calculations (using mouse or keystrokes), the calculation corresponding to the highlighted cell
      is automatically selected and its list of outputs is displayed
    3.7.1
    * Instead of the 'sourcegroups' output (that was removed from the OQ-Engine), the plugin can now load the new output 'events'
    * The user can choose if selecting the '.ini' file to run a OQ-Engine calculation, or letting the OQ-Engine automatically pick one from the list of input files.
    * A note about updating the SSL certificate bundle on MacOS was added to the manual
    * Buttons to load OQ-Engine outputs have been rearranged in order to keep the most significant ones to the left
    * Some additional information is available in exported csv files with recovery curves (recovery time approach, number of simulations, selected asset ids)
    * Fixed an error in managing integer values in QSettings using parameter type=int, that returned negative values (casting to int instead)
    3.7.0
    * Loading the OQ-Engine output 'dmg_by_asset', it is possible to aggregate assets by site (as in the previous implementation) or to load the raw data
      as it is compatible with the recovery modeling tool
    * The y-axis of recovery curves is displayed as a percentage instead of a number in the range 0-1
    * The recovery modeling tool calculates the probabilities of being in each damage state as the number of buildings per damage state divided by the total number of buildings (per asset)
    * While selecting assets for recovery modeling, a new checkbox enables/disables recalculating recovery curves on-the-fly
    * Another checkbox enables/disables the selection of all the assets that share the same coordinates, when the user clicks on a feature in the map
    3.6.1
    * Calls to QgsVectorLayer.getFeatures() are optimized, reading only the necessary fields and ignoring geometries if unneeded
    * Multi-peril input files containing geometries as WKT can be loaded as layers
    * Improvements to the integration tests: an instance of Irmt is used instead of instantiating Irmt sub-dialogs, and no mocked object is used anymore;
      OQ-Engine outputs that are loaded as QGIS layers are checked to contain at least one feature; an additional integration test runs a OQ-Engine hazard calculation,
      displays its progress log, then runs a risk calculation based on its outputs, showing again the progress, then deletes both calculations;
      instead of running one single big integration test, a single test is run for each OQ-Engine output type that the IRMT is able to load.
    * When the mouse points to the name of a OQ-Engine output, a tooltip displays the output type code and its approximate size (if available)
    * Fixed a useless downloading of unneeded files while loading OQ-Engine outputs using the "extract" API
    * Fixed the possibility to load data corresponding to specific taxonomies, for dmg_by_asset and losses_by_asset OQ-Engine output types
    3.6.0
    * Changed the realizations output for OQ-Engine scenario calculations, displaying the GSIM names instead of the branch path
    * All possibly running timers are stopped before the plugin is unloaded
    * Fixed a bug occurring while loading ground motion fields, that caused only one realization to be visualized
    3.5.3
    * The GUI elements for loading OQ-Engine outputs are in a scrollable area, usable also on low resolution screens
    * Some GUI sections can be expanded/collapsed
    3.5.2
    * Fixed a bug in the loader for asset_risk outputs, that was downloading a not used csv output
    3.5.1
    * Higher map values can optionally be rendered on top of lower values
    * The utility to import_layer_from_csv accepts two additional parameters: 'add_to_legend' and 'add_on_top'
    3.5.0
    * Layers imported from the OQ-Engine are inserted on top of the QGIS layer tree
    * Added loaders for OQ-Engine outputs 'asset_risk' and 'agg_risk'
    * The option to aggregate points by polygons is automatically enabled whenever at least one layer containing polygons becomes available
    * Geopackages containing polygons for the aggregation of points by zone can be pre-loaded, selecting the desired layers from the package
    * An additional checkbox gives the possibility to automatically discard zones that contain no points
    * Improved legends and classification criteria, depending on the unique values present in the field used for styling
    * The menu action to aggregate loss by zone was re-added, pointing to the Processing Toolkit algorithm that we use now to perform the
      same kind of analysis (i.e. "Join attributes by location (summary)"). The section of the user manual that was previously removed is
      partially restored, and there is an explanation on how to use the Processing algorithm to obtain the same results that were obtained
      by the plugin tool before.
    * Fixed removal of plugin menu while the plugin is unloaded/uninstalled/disabled
    * Map units are not set by default anymore
    * Field names are quoted in order to avoid issues with special characters
    * Buttons to load layers that have no geometries are renamed from "Load layer" to "Load table"
    * Upgraded compatibility to the OQ Platform 2019
    * Better management of failing connection with the OQ Engine server
    * Fixed newline separators in csv files exported by the Data Viewer
    3.4.0
    * Whenever an error message is shown to the user, a button in the QGIS message bar allows to display the traceback in a separate window
    * Fixed loader for Aggregate Loss Curves in event based risk OQ-Engine output
    * Tests have been split into: unit tests (using the qgis.testing module); functional tests (running on the official QGIS docker
      without external services); integration tests (running on the official QGIS docker and interacting with a running OQ-Engine
    * When an OQ-Engine output can't be extracted, the error is handled and the full response message is logged
    3.3.0
    * Fixed loader for aggregated Average Asset Losses Statistics OQ-Engine output
    * All calls to the OQ-Engine "extract" API are logged
    * Fixed a bug that caused the log verbosity to be always set to "warning", instead of reading it correctly from user settings
    3.2.12
    * More stable connection with the OQ-Engine server, preventing issues while reading the console log of a calculation
    3.2.11
    * Added instructions about how to workaround a bug that occurs on macOS while importing matplotlib.pyplot on matplotlib v3.0.0
    * Fixed updating the status of the toolbar button that shows/hides the IRTM Data Viewer
    3.2.10
    * Added the possibility to 'Abort' an OQ-Engine calculation
    3.2.9
    * When saving plugin settings, any dialog driving the oq-engine is reset
    * When the connection with the oq-engine server is lost, the plugin attempts to reconnect 3 times before displaying an error
    * For uniform hazard spectra layers, poe and return_period are saved as customProperties, and they are displayed in UHS plots
    3.2.8
    * Ported to qgis3 the conversion of layer style to the format accepted by Geoserver
    * Fixed a bug loading hazard maps loading one layer per realization or statistic
    3.2.7
    * Updated installation instructions
    3.2.6
    * The loader for hazard maps was updated, fixing compatibility with the OQ-Engine after a change in the output format
    3.2.5
    * Hazard maps can be loaded as one layer per realization/statistic or as multiple layers, per each combination of realization/statistic-imt-poe
    * It is possible to load hazard curves for a selected combination of realization/statistic and intensity measure type
    * Intensity measure levels are casted to float when possible, fixing a plotting issue in hazard curves with IMT=PGV
    * The cursor does not switch to "waiting" while refreshing the OQ-Engine calculation list
    * When feedback is shown outside the dialog that drives the OQ-Engine, a message suggests the user where to look
    3.2.4
    * Added loaders for dmg_by_event and losses_by_event, from csv (disabled for event-based calculations)
    * Outputs of a selected oq-engine calculation are sorted by name in alphabetical order
    3.2.3
    * The button to download a calculation datastore remains disabled until the calculation is complete (and its size is known)
    3.2.2
    * The button to download the datastore of a oq-engine calculation displays the corresponding size
    3.2.1
    * Added the possibility to plot loss curves aggregated by tag in event based risk
    3.2.0
    * Plugin migrated to QGIS3 (with PyQt5, Python3)
    * Removed dialog to aggregate losses by zone (replaced by "Join attributes by location (summary)" algorithm in the processing toolbox)
    * All the aggregations of losses/damages by zone leverage algorithms of the processing toolbox, running as tasks in separate threads
    * When loading OQ-Engine outputs that can be aggregated by zone, if the option to run the aggregation is checked, the ok button is
      disabled until a valid zonal layer is loaded
    * Files produced by the OQ-Engine are downloaded in separate threads, displaying a progress bar while streaming
    3.1.1
    * When loading Ground Motion Fields for scenario calculations, the names of the GMPEs are displayed instead of the realization names
    * When loading a OQ-Engine output as layer, the engine version is saved as a custom property of the layer
    * When exporting data with the Data Viewer, the versions of the OQ-Engine and of the plugin are saved on top of the output file
    * While driving the OQ-Engine, the engine version and the url of the connected engine server are displayed on top of the window
    * Layers loaded from OQ-Engine outputs store as custom properties the versions of the OQ-Engine and of the IRMT plugin
    * The dependency from SAGA was removed (aggregation of points by zone is performed by the plugin, internally)
    3.1.0
    * Ruptures imported from the OQ-Engine can be styled automatically by tectonic region type or by magnitude
    * Improved visualization of aggregate outputs in the Data Viewer
    3.0.2
    * Fixed styling of scenario damage after aggregating damage by zone
    * Fixed selection/deselection of tag values in aggregate losses/damages visualization in the Data Viewer
    3.0.1
    * After aggregating loss/damage by zone, the layer containing points is made invisible
    3.0.0
    * Added loaders for realizations and sourcegroups, from csv
    * Added the loader for Average Asset Losses Statistics and the visualization of aggregated values in the Data Viewer
    * Default styles for layers imported from OQ-Engine outputs depend on the output type
    * When importing damages or losses from the OQ-Engine and aggregating them by zone, only sums are added to the zonal layer,
      and the zonal layer is automatically styled, classifying with respect to the sum of losses/damage
    * Fixed a bug that prevented from loading existing projects from the OpenQuake Platform
    * It is possible to check the connection with the OQ-Platform or with the OQ-Engine from within the plugin settings dialog
    * The visualization of OQ-Engine risk outputs is now described in the user manual

# tags are comma separated with spaces allowed
tags=GEM, OQ, OpenQuake, Resilience, Risk, Hazard, Earthquake, Multi-peril

homepage=https://plugins.qgis.org/plugins/svir/
tracker=https://github.com/gem/oq-irmt-qgis/issues
repository=https://github.com/gem/oq-irmt-qgis
icon=resources/icon.svg
# experimental flag
experimental=True

# deprecated flag (applies to the whole plugin, not just a single version
deprecated=False

hasProcessingProvider=yes

# if empty, it will be automatically set to major version + .99
# qgisMaximumVersion=3.99

# Since QGIS 3.8, a comma separated list of plugins to be installed (or upgraded) can be specified.
# The example below will try to install (or upgrade) "MyOtherPlugin" version 1.12
# and any version of "YetAnotherPlugin".
# Both "MyOtherPlugin" and "YetAnotherPlugin" names come from their own metadata's name field
# plugin_dependencies==MyOtherPlugin==1.12,YetAnotherPlugin
