Skip to main content

A extend project of UQPyL, which provides develop and GUI versions.

Project description

SWAT-UQ: Uncertainty Quantification for SWAT

PyPI version PyPI - Downloads PyPI - License GitHub last commit Static Badge Static Badge

SWAT-UQ is an extend project of UQPyL - a comprehensive platform for uncertainty analysis and parameter optimization. This project aims to provide full integration of UQPyL and Soil and Water Assessment Tool (SWAT), enabling users to easily perform sensitivity analysis, single-objective optimization, and multi-objective optimization and so on.

👉中文简介

👉Documentation

There are two available versions of SWAT-UQ, tailored to meet different user needs:

  • SWAT-UQ-DEV (Develop Version) - Designed for advanced users who require high flexibility and customization in building and managing their modeling workflows.
  • SWAT-UQ-GUI (GUI Version) - Offers an intuitive graphical interface for streamlined operation, ideal for users seeking minimal coding involvement.

With SWAT-UQ, users can seamlessly incorporate powerful uncertainty quantification and optimization algorithms into their SWAT-based hydrological modeling projects.

Useful Links


Content

Develop Version of SWAT-UQ

SWAT-UQ-DEV is a Python package designed for script-based environments. It designs a Python class named SWAT_UQ, which inherits from Problem class of UQPyL. By instantiating SWAT_UQ class, users can directly access all methods and algorithms offered by UQPyL. In addition, SWAT_UQ contains a suite of built-in functions to streamline and accelerate the process of building and solving problems (e.g., model calibration, best management practices).

This version is particularly suited for users who wish to customize their workflows, integrate with UQPyL, or other Python tools.

✨ Key Features

  1. Parallel Execution: Both data I/O operations within project folder and SWAT model simulations support parallelization. ( 🎉 Benchmark tests on a 40-core server demonstrate that the current code version can stably run up to 80 SWAT instances concurrently.)

  2. File Control: For model calibration tasks — such as streamflow and water quality, users only need to prepare a set of .txt files to complete the entire setup process.

  3. Workflow Integration: With the support of UQPyL, users can efficiently carry out the complete modelling-based workflows: sensitivity analysis -> optimization -> back-substitution.

⚙️ Installation

Static Badge Static Badge

Recommended (PyPi or Conda):

pip install -U swatuq
conda install swatuq --upgrade

🍭 Quick Start

Here, we provide a step-by-step guide to solving SWAT-based problems with SWAT-UQ-DEV.

To get started, instantiate the SWAT-UQ class, which inherits from the Problem class in UQPyL. This will enable all accesses to methods and algorithms available in UQPyL (see the UQPyL Documentation).

Some preparatory works are required:

Step 1: Obtain a SWAT project folder (named SWAT Project Folder for convenience).

Step 2: Create separate folder as Work Folder to store control files for setting up your problems, as well as temporary files used when running the SWAT model in parallel.

Step 3: In the Work Folder, create a parameter file encoded in UTF-8. This file would show the details of the parameters you want to analyze or optimize, as shown below:

File name: paras.par

💡 Noted: The file name is not restricted, but it is recommended to use the .par extension for consistency with the GUI version. In this file, all elements must be separated by spaces or tabs.

Name Mode Min Max Scope
CN2 r -0.4 0.2 all
GW_DELAY v 30.0 450.0 all
ALPHA_BF v 0.0 1.0 all
GWQMN v 0.0 500.0 all
... 
SMFMN v 0.0 20.0 all
TIMP v 0.01 1.0 all
SURLAG v 0.05 24.0 all

The first line should be kept as a hint for users.

Following line of the parameter file should be structured by Name, Mode, Min, Max and Scope:

  • Name: Any parameter occurred in .gw, .hru, .mgt, .sol, .rte, .sub, .sep, .swq files can be wrote. The only requirement is that the parameter names used here must exactly match those in the SWAT project file. (Totally support 308 parameters)
  • Mode: The title 'Mode' means assigning mode of parameters, which is represented by a single character, e.g., r, v, a.
    • where val is the value in this parameter file, and originVal is the origin value of SWAT project files.
    • r denotes relative assignment. The true value would be calculated by $(1+val)*originVal$.
    • v denotes absolute assignment, directly use val.
    • a denotes for adding assignment, the true value is calculated by $originVal+val$.
  • Min: The title 'Min' is the lower bound of the parameter.
  • Max: The title 'Max' is the upper bound of the parameter.
  • Scope: The title 'Scope' means the target scope of the parameter. By default, it sets to all - the parameter would be modified globally. Alternatively, you can specify a particular BSN ID or a combination of SUB ID and HRU IDs to apply the parameter selectively. For example:
CN2 r -0.4 0.2 all # Default Scope
CN2 r -0.4 0.2 3(1,2,3,4,5,6,7,8,9) 4(1,2,3,4) 5 # Appoint Scope

The format follows either:

  • SUB ID - apply the parameter to all HRUs within the specified basin
  • SUB ID(HRU ID_1, HRU ID_2, ..., HRU ID_N) - apply the parameter to specific HRUs within the given basin

Different basin should be separated by spaces or tabs.

Step 4: In the Work Folder, create an evaluation file encoded UTF-8, used to construct objective or constraint functions using observed data.

File Name: eval.obj

💡 Noted: It is also recommended to use the .obj extension for consistency with the GUI version.

SER_1 : ID of series data
OBJ_1 : ID of objective function
WGT_1.0 : Weight of series combination
RCH_23 : ID of RCH, or SUB, or HRU
COL_6 : Extract Variable. The 'NUM' is differences with *.rch, *.sub, *.hru.
FUNC_1 : Func Type ( 1 - NSE, 2 - RMSE, 3 - PCC, 4 - Pbias, 5 - KGE, 6 - Mean, 7 - Sum, 8 - Max, 9 - Min )

1 2012 1 1 2.1
2 2012 1 2 3.2
3 2012 1 3 3.5
4 2012 1 4 6.7
5 2012 1 5 14.55
6 2012 1 6 21.54
...
12 2012 1 12 22.44

The evaluation file can consists of multiple data series, which may correspond to different locations, output variable, or time periods.

In this example, just one data series is shown.

Each series consists of two parts: a. Head Definition; b. Data Section.

Head Definition: (Following label ID or NUM should be replaced by a number)

  • SER_ID: The ID should be an unique label for different data series.
  • OBJ_ID or CON_ID: The OBJ or CON determine the type of the data series. And this ID denotes the unique label of objective or constraint functions. 💡 Noted: SWAT-UQ-DEV support the multiple series set the same OBJ ID or CON ID
  • WGT_NUM: The NUM denotes the linear weight for combing series obtaining the same OBJ ID or CON ID.
  • RCH_ID, SUB_ID or HRU_ID: The RCH, SUB or HRU determine the type of output file loaded. The ID should be consistent with the SWAT project (which RCH, SUB, HRU) and can be set according to your requirements.
  • VAR_NUM: The NUM specifies which data columns to extract from the output.rch, output.hru or output.sub file (Please see following table for checking valid values).
  • FUNC_NUM: The NUM defines the objective function type to compare observed and simulated data. (Valid values: 1 - NSE, 2 - RMSE, 3 - PCC, 4 - Pbias, 5 - KGE, 6 - Mean, 7 - Sum, 8 - Max, 9 - Min)

The valid values of VAR_NUM (extract variable) in output.rch, output.hru, output.sub can be:

File Name Valid Value
output.rch 1-FLOW_IN, 2-FLOW_OUT, 3-EVAP, 4-TLOSS, 5-SED_IN, 6-SED_OUT, 8-ORGN_IN, 9-OGRN_OUT, 10-ORGP_IN, 11-ORGP_OUT, 12-NO3_IN, 13-NO3_OUT, 14-NH4-IN, 15-NH4-OUT, 16-NO2_IN, 17-NO2_OUT, 18-MINP_IN, 19-MINP_OUT, 20-CHLA_IN, 21-CHLA_OUT, 22-CBOD_IN, 23-CBOD_OUT ... 38-BACTP_OUT, 39-BACTLP_OUT... 43-TOT_N, 44-TOT_P
output.sub 1-PRECIP, 2-SNOMELT, 3-PET, 4-ET, 5-SW, 6-PERC, 7-SURQ, 8-GW_Q, 9-WYLD, 10-SYLD, 11-ORGN, 12-ORGP, 13-NSURQ, 14-SOLP, 15-SEDP
output.hru 1-PRECIP, 2-SNOFALL, 3-SNOMELT, 4-IRR, 5-PET, 6-ET, 7-SW_INIT, 8-SW_END, 9-PERA, 10-GW_RCHG, 11-DA_RCHC, 12-REVAP ... 49-NUP, 50-PUP ...67-BACTP, 68-BACTLP

💡 Noted: The numbers above are taken from the SWAT Manual. However, you can actually determine the order of the target variable by checking the output file.

Data Section is structured by NUM, YEAR_INDEX, DATA. And there is no need for continuous:

  • NUM: Not used in SWAT-UQ-DEV, only for data integrity checking.
  • YEAR_INDEX: The value of YEAR means the year index for the data. The value of INDEX is the day number when SWAT outputs daily data, otherwise the month number, determined by IPRINT in file.cio of SWAT project.
  • DATA: The type of data can be int or float.

Step 5: Build your problem in Python script environment.

# First import SWAT_UQ class
from swatuq import SWAT_UQ

# Second define requirement variables:

projectPath = "E://swatProjectPath"  # your SWAT Project Path
workPath = "E://workPath" # your Work Path
exeName = "swat2012.exe" # the name of swat.exe you want to run
paraFileName = "paras.par" # the parameter file you prepared
evalFileName = "eval.obj" # the evaluation file you prepared

problem = SWAT_UQ(
   projectPath = projectPath, # set projectPath
   workPath = workPath, # set workPath
   swatExeName = exeName # set swatExeName
   paraFileName = paraFileName, # set paraFileName
   evalFileName = evalFileName, # set evalFileName
   verboseFlag = True, # enable verboseFlag to check if setup is configured properly.
   numParallel = 2 # set the number of parallels
)

# The SWAT-related Problem is completed. You can enjoy all methods and algorithms of UQPyL.

#For example:
from UQPyL.optimization.single_objective import GA

ga = GA()
ga.run(problem = problem)

Step 6: apply optimal parameters to project folder

# X should be a list or a NumPy 1D or 2D array
problem.apply_parameter(X, replace=False)  # Applies parameters X to workOriginPath without modifying the original project files
problem.apply_parameter(X, replace=True)   # Applies parameters X directly to the original project directory

GUI Version of SWAT-UQ

💡 Noted: SWAT-UQ-GUI is still in demo stage (Now, we advise to use SWAT-UQ-DEV). Feel free to give it a try — the full version is on the way!

SWAT-UQ-GUI is designed for parameter uncertainty quantification (UQ) of the SWAT model. Its core functionalities are built upon UQPyL, our public released Python package for UQ. A key advantage of this platform is that users do not need to worry about coding. It seamlessly automates complete workflow from sensitivity analysis to parameter optimization, result checking, finally data visualization.

Main GUI Table List

Figure 1. Get Start Card

SWAT-UQ-GUI consists of three modules corresponding to preparation, execution, and post-processing. As Figure 1 shows, preparation involves Parameter Setting, Objective Define; Execution includes Sensibility Analysis, Problem Optimization, Result Validation & Apply; Post-processing provide interface for histogram (Visualization A) and point-line figure (Visualization B).

✨ Key Features

End-to-end visualization: SWAT-UQ-GUI supports fully visualized operations across the entire workflow — from problem definition and sensitivity analysis to optimization and final result validation.

Modular & Extensible Architecture: SWAT-UQ-GUI adopts a modular structure that's easy to extend — new methods and tools can be integrated without disrupting existing workflows.

🍭 Quick Start

Here, we provide a Quick Start. In future plans, we will provide detailed documentation and videos.

Please choose the latest release version of SWAT-UQ.

Demo Version has been released: SWAT-UQ

Step1: On the Get Started interface, click the New Project card to create a project or the Open Project card to open an existing one. You can also select the Example card for reference cases or the Help card for assistance.

New Widget Open Widget

Figure 2. New Project Card and Open Project Card

For the New Project Card (left picture of Figure 2), users need to provide the following information: the UQ Project name, the UQ Project path, and the SWAT Project path. After these inputs are provided, the program will verify the validity of the SWAT project files. If the verification is successful, other modules will be activated. Once the UQ Project is created, a project file named *.prj (where * represents the UQ Project name set by the user) will be saved in the specified UQ Project path.

For the Open Project Card (right picture of Figure 2), users should select the folder that contains *.prj files. SWAT-UQ will then check the validity of the project file before proceeding.

Step2: On the Parameter Setting and Objective Definition, the parameter file (.par) and the objective file (.obj) should be created. These files are crucial as they specify which parameters will be modified and what objectives will be evaluated by the program.

Main GUI Table List

Figure 3. Parameter Setting Card and Figure 4. Objective Define Card

To be specific, as shown in Figure 3, the Parameter Setting Card enables users to define the parameters they wish to tune. There are two ways to add parameters to the information table: either by importing them from an existing file or by clicking the Add button to open the Parameter Selection widget. In this table, all selectable parameters are organized by the suffix of the SWAT project files. Additionally, the search bar provides a convenient way to locate specific parameters quickly.

Parameter Selection

Figure 4. Parameter Setting Table

After adding parameters, users can set the tuning mode, lower and upper bounds, and specify tuning files (default: all) for each parameter (Figure 3 shows). Finally, these settings should be saved to the UQ project folder by clicking "Saving Current Parameter" button.

There are also two ways to define the objective function: by importing from existing files or by user definition. For user definition, you should click "Add" button.

Objective Define

Figure 5. Objective Define Table

As shown in Figure 5, users need to accurately fill in the objective ID, series ID, objective type, variable type, weight, and other relevant information. It is important to note that both the series ID and objective ID can be repeated, allowing for combinations of multiple series or weighted combinations of series. For more details, please refer to the comprehensive documentation.

After defining objectives, you can save them to the objective file. It is also allowed to define multiple objective functions within a single file.

Step3: Perform sensitivity analysis or parameter optimization as needed.

Using Sensitivity Analysis as an example, as shown in the left image of Figure 6, users should first select the parameter file and objective file. Next, they choose the desired sensitivity analysis method and sampling technique. Users can then configure additional settings as required, fine-tuning the hyper-parameters to best meet project needs before proceeding. SWAT-UQ thoughtfully displays the number of parameters and the total sample size to assist users in making informed decisions.

Once all initial settings are all ready, click the "Next" button to proceed to the simulation and analysis process. The right image of Figure 6 displays the settings of simulation, including the selection of SWAT executable file, parallel numbers and problem name. Finally, click the "Initialize," "Sampling," and "Simulation" buttons in sequence, and wait for simulation completing. SWAT-UQ can display the simulation progress in real-time, and users can also pause it to reconfigure settings. It would save the analysis result into UQ project folder (./Result/data/). The result file would be used to check or draw visualization picture.

SA_Setup SA_Simulation

Figure 6. Sensibility Analysis Interface

For parameter optimization, users should still select parameter file and objective file at first. When users check more than two objectives, the multi-objective optimization would be activated; conversely, if only one objective is selected, single-objective optimization is used. After fine-tuning hyper-parameters, the optimization process would be started, like sensibility analysis. SWAT-UQ can display the optimization progress in real-time, along with the optimal parameter values for each iteration.

OP_Setup OP_Simulation

Figure 7. Parameter Optimization Interface

Here, we list the available sensibility analysis method and optimization method.

Sensibility Analysis:

  • Sobol'
  • Delta Test (DT) #TODO
  • Extended Fourier Amplitude Sensitivity Test (eFAST)
  • Random Balance Designs - Fourier Amplitude Sensitivity Test (RBD-FAST)
  • Multivariate Adaptive Regression Splines-Sensitivity Analysis (MARS-SA) #TODO
  • Morris
  • Regional Sensitivity Analysis (RSA)

Optimization Algorithm: (* indicates solving computational expensive optimization problem)

  • Single Objective Optimization: SCE-UA, ML-SCE-UA, GA, CSA, PSO, DE, ABC, ASMO* (#TODO), EGO* (#TODO)
  • Multi-Objective Optimization: MOEA/D, NSGA-II, RVEA, MOASMO* (#TODO)

Step 4: Result Validation and Apply. On Result Validation & Apply interface, SWAT-UQ allows users to simulate a specific set of parameters individually and extract the desired time series data, or apply the optimal parameters directly to the SWAT project files. This parameter set can be user-defined or sourced from completed optimization result files.

OP_Setup

Figure 8. Result Validation Interface

Step 5: Result Visualization. The current SWAT-UQ provides two types of plot pictures: a bar chart for sensitivity analysis (Visualization A Interface) and an iteration convergence plot for parameter optimization (Visualization B Interface). Of course, additional types of plots will be continuously added in future versions. Figures 9 and 10 shows the visualization pictures from two interfaces.

SA_Result

Figure 9. Sensibility Analysis Visualization

OP_Result

Figure 10. Optimization Visualization

Specifically, On the Visualization A and Visualization B, user can select the result file. SWAT-UQ would generates initial visualizations. Users can click the "Config" button to open the settings panel and tune various parameters of the plot based on the preset values, as Figure 11 indicates.

Visualization_A Visualization_B

Figure 11. Visualization Interface

This concludes the Quick Start section for SWAT-UQ. For more advanced operations, please refer to the documentation.

🔥 Call for Contributions

We welcome contributions to expand our library with more sophisticated UQ methods, optimization algorithms and engineering problems.


📧 Contact

For any inquiries or contributions, please contact:

wmtSky
Email: wmtsmasky@gmail.com(Priority), wmtsky@hhu.edu.cn


本项目遵循 MIT 许可协议 - 具体内容详见 LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

swatuq-1.0.5.tar.gz (91.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

swatuq-1.0.5-cp312-cp312-win_amd64.whl (225.9 kB view details)

Uploaded CPython 3.12Windows x86-64

swatuq-1.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

swatuq-1.0.5-cp311-cp311-win_amd64.whl (225.6 kB view details)

Uploaded CPython 3.11Windows x86-64

swatuq-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

swatuq-1.0.5-cp310-cp310-win_amd64.whl (224.9 kB view details)

Uploaded CPython 3.10Windows x86-64

swatuq-1.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

swatuq-1.0.5-cp39-cp39-win_amd64.whl (224.3 kB view details)

Uploaded CPython 3.9Windows x86-64

swatuq-1.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

swatuq-1.0.5-cp38-cp38-win_amd64.whl (224.9 kB view details)

Uploaded CPython 3.8Windows x86-64

swatuq-1.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

swatuq-1.0.5-cp37-cp37m-win_amd64.whl (225.0 kB view details)

Uploaded CPython 3.7mWindows x86-64

swatuq-1.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

swatuq-1.0.5-cp36-cp36m-win_amd64.whl (221.6 kB view details)

Uploaded CPython 3.6mWindows x86-64

swatuq-1.0.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ x86-64

File details

Details for the file swatuq-1.0.5.tar.gz.

File metadata

  • Download URL: swatuq-1.0.5.tar.gz
  • Upload date:
  • Size: 91.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for swatuq-1.0.5.tar.gz
Algorithm Hash digest
SHA256 0f9869b7d225d3079051cee5b4ba3ddfbd8bbf3953fdff14ec564fe236f15559
MD5 9ecfed44e602bc44383a2a74ae0aecf8
BLAKE2b-256 5298c0c29c965b7d3450d9ace62d44b7245e185689dd3e5742b4b92aa9d2f99d

See more details on using hashes here.

File details

Details for the file swatuq-1.0.5-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: swatuq-1.0.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 225.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for swatuq-1.0.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8dae355e171dff30ca563a5e16478943e68654a06ebe32abffb7cad4fe2bf1af
MD5 ee25a70715c5299fe8b2d482c75141e4
BLAKE2b-256 fd2b649978c2d920eb3722eee9bde37910ed490140cb3a517cd561a6143f7b00

See more details on using hashes here.

File details

Details for the file swatuq-1.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for swatuq-1.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 efd61b2e8d5ce8b3f808ab1b5a6574fbd29beac93b6364d2593ec67b760f2c5e
MD5 afb0b086893766a0668e5aedf7d376a9
BLAKE2b-256 b80554b5579b95bc622695e01a4f6ea2591f737e860545f88469d009c5012bc5

See more details on using hashes here.

File details

Details for the file swatuq-1.0.5-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: swatuq-1.0.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 225.6 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for swatuq-1.0.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 784866f4be632857aff5b819db283fb9103023408d27ecde6974eed64a83c9c9
MD5 4ce6d14b011c4d94b3198cbb289c69e7
BLAKE2b-256 df1a1532934278b1256868d994192fee7dba2b55ab0597eec1c65103ef9210a6

See more details on using hashes here.

File details

Details for the file swatuq-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for swatuq-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4581eb463cac275108d5924e504aa75e62a705aeec52ceef0ea606ab465bf795
MD5 6bac941582bd9a45b784fa8c3af70fbc
BLAKE2b-256 83936a5efcb11238a2d0a179c1832ef4e28115aaa45f8604ae42b5b5ab6ac9df

See more details on using hashes here.

File details

Details for the file swatuq-1.0.5-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: swatuq-1.0.5-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 224.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for swatuq-1.0.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f0dcead9e1c8982808bb9e672f6a6634f8ded4c1f25957fb87a7f52a407cc696
MD5 06a6e21e8ede31e97535ecc990839bcf
BLAKE2b-256 f7cc3e42b39e49bae22a9a393d1600cd03a378fa05e65769d5e9f6d48ec70e4d

See more details on using hashes here.

File details

Details for the file swatuq-1.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for swatuq-1.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 31332cd65ec43a15e704f68682f9cf57588872e24510bf972244cae20d72751b
MD5 2384e059e2097c16c7a7df49e784d498
BLAKE2b-256 848e09e7e255c4bda0995ebf41e225c1e0000b9318fcb53cbf2c8f202baf6571

See more details on using hashes here.

File details

Details for the file swatuq-1.0.5-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: swatuq-1.0.5-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 224.3 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for swatuq-1.0.5-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 026a75aca1d9b6769704c69cd976731e2f243024e0c73804b59b19e29cf6a6b5
MD5 625aec973c0c7b7712a03e0b52874393
BLAKE2b-256 5a77936279ee13c1d7a0c118bac26541abd0537f80a4879c7859dbd9db916d04

See more details on using hashes here.

File details

Details for the file swatuq-1.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for swatuq-1.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4cbf864653ffeb433152908fc4f2b3ee32eae5d8e400672a2036c5707419f4fc
MD5 3726e23f673c5682f8598c5fb69478a3
BLAKE2b-256 7b315a20d2b9b3dae26066a46a922d4910c94a7650f30ca85fcef211bb8b9025

See more details on using hashes here.

File details

Details for the file swatuq-1.0.5-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: swatuq-1.0.5-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 224.9 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for swatuq-1.0.5-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 3c6ca749e06e29c6a302143c0891dfa45fc12f945a1b9935bc5b68db70352576
MD5 a61027205c51317ed36a3e5eba8b64e4
BLAKE2b-256 0862b9817282794a7eb90f1f8a191bbdeed727b8acfc725336ff1b466a30db86

See more details on using hashes here.

File details

Details for the file swatuq-1.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for swatuq-1.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b29b453951c114d8453354685382ffd9e869a4a1cad9ee7114907068e1312b99
MD5 31d8971cc74fd70c35bdfc646db3f213
BLAKE2b-256 58e1f8d80992d5668a4fa2a5362ab24cf07387c729af71cf0f701bc742dd7575

See more details on using hashes here.

File details

Details for the file swatuq-1.0.5-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: swatuq-1.0.5-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 225.0 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for swatuq-1.0.5-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 8d1a6b4f723080c2ee18f7ec506658ddaaf0238bbec8f268eec2cea99be71394
MD5 7e80792aca02010cda505163ea80c00b
BLAKE2b-256 fa102efac8cdc972be4ede088879dd2413f864c088ee34e62fabf8cdd0726005

See more details on using hashes here.

File details

Details for the file swatuq-1.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for swatuq-1.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 55410974c363f7512fad6d77cd4bca9cb062761f0e81772b9d4ae55b376ac5ca
MD5 1882d67e8f0b8c57151022037ceadf0f
BLAKE2b-256 4188e76e8466653f1b935a4067146d708bc025a52bb364163816bb18093a9d76

See more details on using hashes here.

File details

Details for the file swatuq-1.0.5-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: swatuq-1.0.5-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 221.6 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for swatuq-1.0.5-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 af53831a8f69ccf9bdce9110024277cfcdcba46ffdbb5269b67667e7bb204c7b
MD5 6b521f4861ec708b2f87c03c827a91c2
BLAKE2b-256 7b9aa533816d8832ea7ac952a2fc745689b91a53b0e7ac9738ac28681f644184

See more details on using hashes here.

File details

Details for the file swatuq-1.0.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for swatuq-1.0.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 94ab196b776e630c48990daa1ca24fd4a9d41cdda26a85a386c4a9e17d83172c
MD5 c233b5256f2b181db315dbe4847b0b75
BLAKE2b-256 94daf299d3c5b141fd58865575e5f2392a4439d90af42f3a0f67ed4fad2212e6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page