Giter Site home page Giter Site logo

gispocoding / eis_qgis_plugin Goto Github PK

View Code? Open in Web Editor NEW
8.0 8.0 1.0 10 MB

A QGIS plugin for mineral prospectivity mapping

Home Page: https://eis-he.eu/

License: GNU General Public License v2.0

Python 6.22% HTML 93.78%
gis mineral-exploration modeling python qgis-plugin

eis_qgis_plugin's People

Contributors

lehtonenp avatar msorvoja avatar mtk112 avatar nmaarnio avatar storch22 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

storch22

eis_qgis_plugin's Issues

Implement a density scatterplot with pyqtrgraph

This density scatterplot should be interactive and allow the user to select some data area, and the selection should be reflected on the map. 3D would be preferable, but 2D prototype will do too. The desired functionality is close to an old QGIS plugin Raster Data Plotting. This feature relates to issue #8 .

Screenshot from 2023-06-27 10-53-18
Screenshot from 2023-06-27 10-53-33

Update README

Tasks

Extend configuration file for processing algorithms

Each processing algorithm needs information from configuration file to be initialized.

It is still unclear if TOML files can be used, as it is not default Python package. However, it seems to be present in QGIS Python in OS and Windows, and could be installed via script for Linux users.

If TOML files cannot be used, INI will likely be used instead.

Check licensing

It should be checked if EIS QGIS Plugin (and QGIS plugins overall) can be licensed under the EUPL-1.2.

Design model data preparation view

A need for model data preparation was identified. This data preparation was seen to be different from producing proxies, and was not wanted (at least for now) to combined in the same view with modeling, and therefore a new view needs to be designed. This view could facilitate at least the following processes:

  • Normalize data
  • Replace nodata
  • Encode data
  • Transform data
  • Split data
  • Generate data
  • Balance data

Improve and develop CLI for plugin - toolkit communication

The actual communication works at the moment using subprocess.Popen to call an external script (Python with EIS Toolkit). What remains to be done is to decide whether information is delivered:

  • Using a configuration file, such as JSON. The subprocess would only deliver path to the configuration file the plugin has just written
  • Using a CLI library, such as Click or Typer, to define the ways of argument passing
  • Delivering arguments via the command line "raw" and with custom parsing at the Toolkit end

Design and implement prototype model view

The model view could be a wizard or one dialog (if everything fits into one view). In model view, the following features need to be available:

  • Select model
  • Select data (and description of needed data)
  • Select model parameters (with some presets available)
  • Model report / validation
  • (Optimization methods for model parameter selection)
  • (Guidance)

Add processing algorithms for MLP

Tasks

Design how the EIS Wizard will communicate with the Toolkit

At the moment, a likely alternative is that the Wizard will call EIS processing algorithms, which are the only QGIS entities communicating with the Toolkit. This simplifies the relation of Toolkit - Wizard - Processing, but could restrict computation efficiency and forming of complex workflows in some cases.

Design and implement prototype one proxy creation view

This first proxy creation interface could allow the user the execute the following common workflow:

  • Select a vector file and relevant attribute(s) from the file/layer
  • Select which values are relevant (QgsExpression?)
  • Calculate (euclidean) distance, in other words rasterize the vector in a specific way

This proxy creation opens when "Process" button is clicked in the proxy/preprocessing table view.

Include Seaborn in the plugin

If Seaborn could be baked into the plugin as an external library, users would not have to manually install it. It should be investigated if this is possibly and what are the potential drawbacks.

Add processing algorithms

Add tools from EIS Toolkit that are already implemented as processing algorithms.

The following algorithms should be added:

  • Distance computation

  • Vector density

  • Reproject vector

  • DBSCAN

  • Kmeans cluster

  • Extract values from raster

  • Windowing

  • Calculate AUC

  • Calculate base validation metrics

  • Plot prediction area curve (modifications to the plotting might be done in the future)

  • Plot rate curve (modifications to the plotting might be done in the future)

  • Rename statistics report

If there are problems or skeletons with wrong input and output in some existing implementations, they should be changed too.

Add proxies

Add proxies and all related information to the proxy setup file. The needed information is at least:

  • Proxy name
  • Related mineral system type
  • Importances per scale
  • Workflow steps needed for calculation / UI name that allows for the production of the proxy
  • Keywords / categories

Customize icons for menu items

Some of the icons currently used for menu items (Mineral system proxies, EDA, Modelling, Settings and About should be modified.

Design and implement prototype explore view

The explore view is part of the wizard that facilitates EDA (exploratory data analysis). It should enable producing plots and to use some data analysis methods such as clustering and PCA. At the least the following plots are required:

  • Scatterplot (vector data)
  • Histogram (vector data and raster data)
  • Line plot (vector data)
  • Box plot (vector data)
  • Parallel coordinates (vector data)
  • PCA visualization (2D / 3D ROI (region of interest) type plot, scatterplot matrix etc.)

Plots that are needed only for validation do not need to be available here.

Implement alpha version of the Wizard

Alpha version of the Wizard should be able to communicate with the Toolkit and how some working interface with realistic elements for MPM. It does not need to be useful for actual work or have a carefully designed UI.

Redesign plotting interfaces in Wizard

I'll try if one common dialog for all plots would make sense. The first parameter would be plot type and that would dictate which parameters are displayed. The produced plot could be put in another page of a stacked widget, since on the side of parameters it gets easily squished or doesn't have enough space.

Add clipping / area selection parameter to modeling wizard

A requested feature for the modeling wizard is a vector/extent input that allows selecting an area to use for training a machine learning model. If this feature was implemented, the user would not need to clip each of their datasets individually to produce training and testing tests, but instead could specify the areas on the fly.

Implementing this needs some thought how the clipping/masking is best handled. Some options are:

  • When the user presses "Start training", clip_raster and clip_vector processing algorithms are executed for each input dataset and these will be used to train the model
  • The CLI function receives the (optional) extent/polygon for clipping as a parameter and clipping/masking is done in the CLI function
  • The clip/mask parameter goes all the way to the EIS Toolkit training function (which needs a new corresponding parameter) which will mask irrelevant data out

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.