MRQy is a quality assurance and checking tool for quantitative assessment of magnetic resonance imaging (MRI) data.

Overview

Picture1

Front-end View

gbm_mrqy

Backend View

gbm_mrqy

Table of Contents

Description

This tool takes MRI datasets in the file formats (.dcm, .nii, .nii.gz or .mha) as the input.
Two Python scripts (QC.py and QCF.py) are used to generate several tags and noise/information measurements for quality assessment. These scripts save the calculated measures in a .tsv file as well as generate .png thumbnails for all images in a subject volume. These are then fed to .js scripts to create the user interface (index.html) output. A schematic illustrating the framework of the tool is as follows.

Picture1

Prerequisites

The current version of the tool has been tested on the Python 3.6+
You must have pipenv installed on your environment to run MRQy locally. It will pull all the dependencies listed in the diagram.

Picture7

You can also likely install the python requirements using something like:

pip3 install -r requirements.txt

Running

For local development, test that the code is functional

MRQy % pipenv shell
(mrqy) MRQy% pipenv install .
(mrqy) MRQy% python -m mrqy.QC --help

The output should be

usage: QC.py [-h] output_folder_name [inputdir [inputdir ...]]

positional arguments:
  output_folder_name  the subfolder name on the
                      '...\UserInterface\Data\output_folder_name' directory.
  inputdir            input foldername consists of *.mha (*.nii or *.dcm)
                      files. For example: 'E:\Data\Rectal\input_data_folder'

optional arguments:
  -h, --help          show this help message and exit
  

Standard usage is to run QC.py output_folder_name “input directory” i.e.

python QC.py output_folder_name "E:\Data\Rectal\RectalCancer_Multisite\input_data_folder"

There is no need to make a subfolder in the Data directory, just specify its name in the command as in the above code.
Every action will be printed in the output console.
The thumbnail images in the format of .png will be saved in "...\UserInterface\Data\output_folder_name" with its original filename as the subfolder name. Afterward, double click "index.html" (on e.g. "D:\Downloads\MRQy-master\UserInterface") to open front-end user interface, and select the respective results.tsv file from the correct location e.g. "D:\Downloads\MRQy-master\UserInterface\Data\output_folder_name" directory.

Contribution guidelines

Testing

MRQy % pipenv shell
(mrqy) MRQy% pipenv install .
(mrqy) MRQY% pipenv run -m pytest tests/

Building on Travis

The recommended path is to follow the Forking Workflow. Create a Travis CI build for your github fork to validate your fork before pushing a merge request to master.

Basic Information

Measurements

The measures of the MRQy tool are listed in the following table.

Picture1

User Interface

The following figures show the user interface of the tool (index.html).

C1 C2 C3

Feedback and usage

Please report and issues, bugfixes, ideas for enhancements via the "Issues" tab.

Detailed usage instructions and an example of using MRQy to analyze TCIA datasets are in the Wiki.

You can cite this in any associated publication as:
Sadri, AR, Janowczyk, A, Zou, R, Verma, R, Antunes, J, Madabhushi, A, Tiwari, P, Viswanath, SE, "MRQy: An Open-Source Tool for Quality Control of MR Imaging Data", https://arxiv.org/abs/2004.04871, 2020

If you do use the tool in your own work, please drop us a line to let us know.

Comments
  • ModuleNotFoundError: No module named 'QCF'

    ModuleNotFoundError: No module named 'QCF'

    Hello,

    I was getting the ModuleNotFoundError: No module named 'QCF' issue when running the test example python -m mrqy.QC --help.

    I solved this by going into the virtual environment site-packages and editing line 11 on the QC.py to import mrqy.QCF as QCF, which solved my issue. I don't know if you ever run into anything like this. The package mrqy included both files, but I had to point it to the package itself to import QCF it looks like. I'm on python 3.6.8.

    Cheers, Vasco

    opened by vascosa 9
  • Parallel

    Parallel

    In our study we have thousands of scan sessions and I would like to run these in parallel. It seems though that the results.tsv file gets newly remade with every parallel run of the program. Is there a way to append to it while running it simultaneously? it seems that in the participant folder only the png files are saved and not any participant data that can be extracted afterwards in one go. Thanks.

    opened by kJONN 5
  • Front-end View Problem Loading Images

    Front-end View Problem Loading Images

    Hello,

    It seems like the front-end view is only able to load images that are stored in the UserInterface subdirectory of the main MRQy directory. Is the front-end view supposed to be capable of loading images stored outside the UserInterface subdirectory, and if it is then how can those images be loaded?

    Thanks, Josh

    opened by jgilberstadt 4
  • DLL load failed while importing _remap - module not found

    DLL load failed while importing _remap - module not found

    Hi!

    While testing whether the code is functional (python -m mrqy.QC --help) I have run into a few problems.

    1. The first error was "ModuleNotFoundError: No module named 'skimage' - Subsequently I ran pipenv install scikit-image
    2. After installing the scikit-image package I received the error: ImportError: DLL load failed while importing _remap: the specified module could not be found. Based on this post: https://github.com/scikit-image/scikit-image/issues/4780 I ran pipenv install msvc-runtime, but am still getting the following error:
    PS C:\Users\Mattea\MDACC\MRQy> pipenv install .
    Installing ....
    Adding mrqy to Pipfile's [packages]...
    Installation Succeeded
    Installing dependencies from Pipfile.lock (fd82fb)...
     ================================ 1/1 - 00:00:00
    PS C:\Users\Mattea\MDACC\MRQy> python -m mrqy.QC --help
    Traceback (most recent call last):
     File "C:\Users\Mattea\anaconda3\lib\runpy.py", line 194, in _run_module_as_main
       return _run_code(code, main_globals, None,
     File "C:\Users\Mattea\anaconda3\lib\runpy.py", line 87, in _run_code
       exec(code, run_globals)
     File "C:\Users\Mattea\.virtualenvs\MRQy-0a-sfUiD\lib\site-packages\mrqy\QC.py", line 11, in <module>
       import mrqy.QCF as QCF ## import QCF
     File "C:\Users\Mattea\.virtualenvs\MRQy-0a-sfUiD\lib\site-packages\mrqy\QCF.py", line 17, in <module>
       from skimage.filters import threshold_otsu
     File "C:\Users\Mattea\.virtualenvs\MRQy-0a-sfUiD\lib\site-packages\skimage\__init__.py", line 127, in <module>
       from .util.dtype import (img_as_float32,
     File "C:\Users\Mattea\.virtualenvs\MRQy-0a-sfUiD\lib\site-packages\skimage\util\__init__.py", line 17, in <module>
       from ._map_array import map_array
     File "C:\Users\Mattea\.virtualenvs\MRQy-0a-sfUiD\lib\site-packages\skimage\util\_map_array.py", line 2, in <module>
       from ._remap import _map_array
    ImportError: DLL load failed while importing _remap: The specified module could not be found.
    
    

    Any tips or suggestions would be greatly appreciated! Thanks, Mattea

    opened by matteawelch 4
  • sample_size error

    sample_size error

    Hello everyone, I was trying to use your tool to analize some data but it seems I can't make it work. I have followed the steps in the wiki but theese are the outputs. I have also tried to manually insert the sample size value but the output is the same.

    Python version is 3.6.9

    image

    image

    Do you have any idea of what can it be? Thank you for your help.

    opened by RiccardoPederzolli 3
  • File exists error when saving the thumbnails

    File exists error when saving the thumbnails

    Hi, I'm testing this tool in a folder structure organized as follows:

    .
    ├── ID1
    │   ├── CT1.nii
    │   └── FLAIR.nii
    └── ID2
        ├── CT1.nii
        └── FLAIR.nii
    

    And I'm getting this error:

    Traceback (most recent call last):
      File "QC.py", line 359, in <module>
        saveThumbnails_nondicom(v,fname_outdir)
      File "QC.py", line 181, in saveThumbnails_nondicom
        os.makedirs(output + os.sep + v[1])
      File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/os.py", line 223, in makedirs
        mkdir(name, mode)
    FileExistsError: [Errno 17] File exists: '/Users/censored/mrqy/MRQy/src/mrqy/UserInterface/Data/Jun24test/CT1'
    

    I believe the issue is that when saving the thumbnails, these are stored in a single, flat folder that doesn't follow the original tree structure, so the program finds that the "CT1" folder already exists:

    .
    ├── CT1
    │   ├── CT1(1).png
    │   ├── CT1(10).png
    │   ├── CT1(11).png
    │   ├── CT1(12).png
    │   ├── CT1(13).png
    │   ├── CT1(14).png
    │   ├── CT1(15).png
    │   ├── CT1(16).png
    │   ├── CT1(17).png
    │   ├── CT1(18).png
    │   ├── CT1(19).png
    │   ├── CT1(2).png
    │   ├── CT1(20).png
    │   ├── CT1(21).png
    │   ├── CT1(22).png
    │   ├── CT1(23).png
    │   ├── CT1(24).png
    │   ├── CT1(25).png
    │   ├── CT1(26).png
    │   ├── CT1(27).png
    │   ├── CT1(28).png
    │   ├── CT1(29).png
    │   ├── CT1(3).png
    │   ├── CT1(4).png
    │   ├── CT1(5).png
    │   ├── CT1(6).png
    │   ├── CT1(7).png
    │   ├── CT1(8).png
    │   └── CT1(9).png
    ├── FLAIR
    │   ├── FLAIR(1).png
    │   ├── FLAIR(10).png
    │   ├── FLAIR(11).png
    │   ├── FLAIR(12).png
    │   ├── FLAIR(13).png
    │   ├── FLAIR(14).png
    │   ├── FLAIR(15).png
    │   ├── FLAIR(16).png
    │   ├── FLAIR(17).png
    │   ├── FLAIR(18).png
    │   ├── FLAIR(19).png
    │   ├── FLAIR(2).png
    │   ├── FLAIR(20).png
    │   ├── FLAIR(21).png
    │   ├── FLAIR(22).png
    │   ├── FLAIR(23).png
    │   ├── FLAIR(24).png
    │   ├── FLAIR(25).png
    │   ├── FLAIR(26).png
    │   ├── FLAIR(27).png
    │   ├── FLAIR(28).png
    │   ├── FLAIR(29).png
    │   ├── FLAIR(3).png
    │   ├── FLAIR(4).png
    │   ├── FLAIR(5).png
    │   ├── FLAIR(6).png
    │   ├── FLAIR(7).png
    │   ├── FLAIR(8).png
    │   └── FLAIR(9).png
    └── results.tsv
    

    Did you ever run into this issue? And, in general, what tree structure MRQy expects to work correctly? Is there an option to avoid saving the thumbnails?

    Also, as a minor comment, the first lines in the output in this case reads:

    MRQy is starting....
    The number of patients is 4
    

    But in reality, the number of patients is 2, while 4 is the number of series.

    Thanks!

    opened by giemmecci 2
  • Pipfile Typo

    Pipfile Typo

    Hello,

    I noticed that there is a single quote on line 17 of the pipfile that is supposed to be a double quote. I received an error message when running the original pipfile, but everything seems to work if the single quote is changed to a double quote.

    Thanks, Josh

    opened by jgilberstadt 2
  • Error running QC.py on brain scan.

    Error running QC.py on brain scan.

    Summary

    Getting a value error when running QC.py on a sample brain scan.

    Output

    (MRQy-irixV0Tq) lodge@DESKTOP-TBEVFI2:~/code/MRQy$ python src/mrqy/QC.py ~/code/MRQy/output ~/code/MRQy/input
    MRQy is starting....
    The number of patients is 1
    The number of 22 images are saved to /home/lodge/code/MRQy/UserInterface/Data//home/lodge/code/MRQy/output/Output_3D_File
    1-1. The VRX of the patient with the name of <Output_3D_File> is 0.47
    1-2. The VRY of the patient with the name of <Output_3D_File> is 0.47
    1-3. The VRZ of the patient with the name of <Output_3D_File> is 5.00
    1-4. The ROWS of the patient with the name of <Output_3D_File> is 512
    1-5. The COLS of the patient with the name of <Output_3D_File> is 512
    1-6. The NUM of the patient with the name of <Output_3D_File> is 22
    1-7. The MEAN of the patient with the name of <Output_3D_File> is 264.68047264391714
    1-8. The RNG of the patient with the name of <Output_3D_File> is 1217.0
    1-9. The VAR of the patient with the name of <Output_3D_File> is 26972.86366286672
    1-10. The CV of the patient with the name of <Output_3D_File> is 60.56001727509839
    1-11. The CPP of the patient with the name of <Output_3D_File> is 0.0
    1-12. The PSNR of the patient with the name of <Output_3D_File> is 16.035276287657798
    1-13. The SNR1 of the patient with the name of <Output_3D_File> is 21.97046333358044
    1-14. The SNR2 of the patient with the name of <Output_3D_File> is 115.58171760174017
    1-15. The SNR3 of the patient with the name of <Output_3D_File> is 4.875157085735123
    1-16. The SNR4 of the patient with the name of <Output_3D_File> is 16.6181236994002
    1-17. The CNR of the patient with the name of <Output_3D_File> is 15.726563711378503
    1-18. The CVP of the patient with the name of <Output_3D_File> is 0.2720244069104087
    1-19. The CJV of the patient with the name of <Output_3D_File> is 0.6383621489661986
    1-20. The EFC of the patient with the name of <Output_3D_File> is 2.1080743214048123
    1-21. The FBER of the patient with the name of <Output_3D_File> is 0.0
    The results are updated.
    Traceback (most recent call last):
      File "src/mrqy/QC.py", line 369, in <module>
        df = cleanup(address, 30)
      File "src/mrqy/QC.py", line 228, in cleanup
        tsne_umap(df, per)
      File "src/mrqy/QC.py", line 217, in tsne_umap
        tsne_obj = tsne.fit_transform(ds)
      File "/home/lodge/.local/share/virtualenvs/MRQy-irixV0Tq/lib/python3.8/site-packages/sklearn/manifold/_t_sne.py", line 932, in fit_transform
        embedding = self._fit(X)
      File "/home/lodge/.local/share/virtualenvs/MRQy-irixV0Tq/lib/python3.8/site-packages/sklearn/manifold/_t_sne.py", line 702, in _fit
        X = self._validate_data(X, accept_sparse=['csr'],
      File "/home/lodge/.local/share/virtualenvs/MRQy-irixV0Tq/lib/python3.8/site-packages/sklearn/base.py", line 421, in _validate_data
        X = check_array(X, **check_params)
      File "/home/lodge/.local/share/virtualenvs/MRQy-irixV0Tq/lib/python3.8/site-packages/sklearn/utils/validation.py", line 63, in inner_f
        return f(*args, **kwargs)
      File "/home/lodge/.local/share/virtualenvs/MRQy-irixV0Tq/lib/python3.8/site-packages/sklearn/utils/validation.py", line 726, in check_array
        raise ValueError("Found array with %d sample(s) (shape=%s) while a"
    ValueError: Found array with 1 sample(s) (shape=(1, 21)) while a minimum of 2 is required.
    

    Sample Data

    This is the image upon which it fails: Output_3D_File.nii.gz

    opened by nathanhillyer 2
  • Lung MRI project

    Lung MRI project

    Hello

    I am trying to apply your tool for the Lung MR imaging. I has been looking for a tool to get some quantitative values such as SNR, CNR from the before and after denoising to Lung MR images. And finally, your MRQy gives me what I've been looking for. Yes, it works very successfully. ( thank you again for your great work!!) But I think I'd better to check (because it's Lung MR , zero TE image) whether it selects lung correctly. I just want to see overlay mask to see what's selected for foreground iamges because...the Lung itself has lower signal compare to the other surrounding muscle and fat. Please check the Lung MR images if you want, "Comparison of lung imaging using three-dimensional ultrashort echo time and zero echo time sequences: preliminary study"

    At this point, I wonder if there is any way to extract the"selected foreground and background boundary, overlay mask" , Also, can I extract "MEAN of background" with MEAN of foreground , together ? Those two information will be important to check whether it successfully worked to the Lung MR or not.

    Any comment and advice would be very appreciated. best regards Moonjung

    opened by aranmaro 2
  • Bump numpy from 1.20.1 to 1.21.0

    Bump numpy from 1.20.1 to 1.21.0

    Bumps numpy from 1.20.1 to 1.21.0.

    Release notes

    Sourced from numpy's releases.

    v1.21.0

    NumPy 1.21.0 Release Notes

    The NumPy 1.21.0 release highlights are

    • continued SIMD work covering more functions and platforms,
    • initial work on the new dtype infrastructure and casting,
    • universal2 wheels for Python 3.8 and Python 3.9 on Mac,
    • improved documentation,
    • improved annotations,
    • new PCG64DXSM bitgenerator for random numbers.

    In addition there are the usual large number of bug fixes and other improvements.

    The Python versions supported for this release are 3.7-3.9. Official support for Python 3.10 will be added when it is released.

    :warning: Warning: there are unresolved problems compiling NumPy 1.21.0 with gcc-11.1 .

    • Optimization level -O3 results in many wrong warnings when running the tests.
    • On some hardware NumPy will hang in an infinite loop.

    New functions

    Add PCG64DXSM BitGenerator

    Uses of the PCG64 BitGenerator in a massively-parallel context have been shown to have statistical weaknesses that were not apparent at the first release in numpy 1.17. Most users will never observe this weakness and are safe to continue to use PCG64. We have introduced a new PCG64DXSM BitGenerator that will eventually become the new default BitGenerator implementation used by default_rng in future releases. PCG64DXSM solves the statistical weakness while preserving the performance and the features of PCG64.

    See upgrading-pcg64 for more details.

    (gh-18906)

    Expired deprecations

    • The shape argument numpy.unravel_index cannot be passed as dims keyword argument anymore. (Was deprecated in NumPy 1.16.)

    ... (truncated)

    Commits
    • b235f9e Merge pull request #19283 from charris/prepare-1.21.0-release
    • 34aebc2 MAINT: Update 1.21.0-notes.rst
    • 493b64b MAINT: Update 1.21.0-changelog.rst
    • 07d7e72 MAINT: Remove accidentally created directory.
    • 032fca5 Merge pull request #19280 from charris/backport-19277
    • 7d25b81 BUG: Fix refcount leak in ResultType
    • fa5754e BUG: Add missing DECREF in new path
    • 61127bb Merge pull request #19268 from charris/backport-19264
    • 143d45f Merge pull request #19269 from charris/backport-19228
    • d80e473 BUG: Removed typing for == and != in dtypes
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump pillow from 8.2.0 to 9.0.0

    Bump pillow from 8.2.0 to 9.0.0

    Bumps pillow from 8.2.0 to 9.0.0.

    Release notes

    Sourced from pillow's releases.

    9.0.0

    https://pillow.readthedocs.io/en/stable/releasenotes/9.0.0.html

    Changes

    ... (truncated)

    Changelog

    Sourced from pillow's changelog.

    9.0.0 (2022-01-02)

    • Restrict builtins for ImageMath.eval(). CVE-2022-22817 #5923 [radarhere]

    • Ensure JpegImagePlugin stops at the end of a truncated file #5921 [radarhere]

    • Fixed ImagePath.Path array handling. CVE-2022-22815, CVE-2022-22816 #5920 [radarhere]

    • Remove consecutive duplicate tiles that only differ by their offset #5919 [radarhere]

    • Improved I;16 operations on big endian #5901 [radarhere]

    • Limit quantized palette to number of colors #5879 [radarhere]

    • Fixed palette index for zeroed color in FASTOCTREE quantize #5869 [radarhere]

    • When saving RGBA to GIF, make use of first transparent palette entry #5859 [radarhere]

    • Pass SAMPLEFORMAT to libtiff #5848 [radarhere]

    • Added rounding when converting P and PA #5824 [radarhere]

    • Improved putdata() documentation and data handling #5910 [radarhere]

    • Exclude carriage return in PDF regex to help prevent ReDoS #5912 [hugovk]

    • Fixed freeing pointer in ImageDraw.Outline.transform #5909 [radarhere]

    • Added ImageShow support for xdg-open #5897 [m-shinder, radarhere]

    • Support 16-bit grayscale ImageQt conversion #5856 [cmbruns, radarhere]

    • Convert subsequent GIF frames to RGB or RGBA #5857 [radarhere]

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump setuptools from 60.9.3 to 65.5.1

    Bump setuptools from 60.9.3 to 65.5.1

    Bumps setuptools from 60.9.3 to 65.5.1.

    Release notes

    Sourced from setuptools's releases.

    v65.5.1

    No release notes provided.

    v65.5.0

    No release notes provided.

    v65.4.1

    No release notes provided.

    v65.4.0

    No release notes provided.

    v65.3.0

    No release notes provided.

    v65.2.0

    No release notes provided.

    v65.1.1

    No release notes provided.

    v65.1.0

    No release notes provided.

    v65.0.2

    No release notes provided.

    v65.0.1

    No release notes provided.

    v65.0.0

    No release notes provided.

    v64.0.3

    No release notes provided.

    v64.0.2

    No release notes provided.

    v64.0.1

    No release notes provided.

    v64.0.0

    No release notes provided.

    v63.4.3

    No release notes provided.

    v63.4.2

    No release notes provided.

    ... (truncated)

    Changelog

    Sourced from setuptools's changelog.

    v65.5.1

    Misc ^^^^

    • #3638: Drop a test dependency on the mock package, always use :external+python:py:mod:unittest.mock -- by :user:hroncok
    • #3659: Fixed REDoS vector in package_index.

    v65.5.0

    Changes ^^^^^^^

    • #3624: Fixed editable install for multi-module/no-package src-layout projects.
    • #3626: Minor refactorings to support distutils using stdlib logging module.

    Documentation changes ^^^^^^^^^^^^^^^^^^^^^

    • #3419: Updated the example version numbers to be compliant with PEP-440 on the "Specifying Your Project’s Version" page of the user guide.

    Misc ^^^^

    • #3569: Improved information about conflicting entries in the current working directory and editable install (in documentation and as an informational warning).
    • #3576: Updated version of validate_pyproject.

    v65.4.1

    Misc ^^^^

    • #3613: Fixed encoding errors in expand.StaticModule when system default encoding doesn't match expectations for source files.
    • #3617: Merge with pypa/distutils@6852b20 including fix for pypa/distutils#181.

    v65.4.0

    Changes ^^^^^^^

    v65.3.0

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump pillow from 9.0.1 to 9.3.0

    Bump pillow from 9.0.1 to 9.3.0

    Bumps pillow from 9.0.1 to 9.3.0.

    Release notes

    Sourced from pillow's releases.

    9.3.0

    https://pillow.readthedocs.io/en/stable/releasenotes/9.3.0.html

    Changes

    ... (truncated)

    Changelog

    Sourced from pillow's changelog.

    9.3.0 (2022-10-29)

    • Limit SAMPLESPERPIXEL to avoid runtime DOS #6700 [wiredfool]

    • Initialize libtiff buffer when saving #6699 [radarhere]

    • Inline fname2char to fix memory leak #6329 [nulano]

    • Fix memory leaks related to text features #6330 [nulano]

    • Use double quotes for version check on old CPython on Windows #6695 [hugovk]

    • Remove backup implementation of Round for Windows platforms #6693 [cgohlke]

    • Fixed set_variation_by_name offset #6445 [radarhere]

    • Fix malloc in _imagingft.c:font_setvaraxes #6690 [cgohlke]

    • Release Python GIL when converting images using matrix operations #6418 [hmaarrfk]

    • Added ExifTags enums #6630 [radarhere]

    • Do not modify previous frame when calculating delta in PNG #6683 [radarhere]

    • Added support for reading BMP images with RLE4 compression #6674 [npjg, radarhere]

    • Decode JPEG compressed BLP1 data in original mode #6678 [radarhere]

    • Added GPS TIFF tag info #6661 [radarhere]

    • Added conversion between RGB/RGBA/RGBX and LAB #6647 [radarhere]

    • Do not attempt normalization if mode is already normal #6644 [radarhere]

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • QC.py npt recognized

    QC.py npt recognized

    This looks great and exactly what I need, but can't get past the install. I'm using Ubuntu 20.04, python 3.8

    I followed the README instructions and I can launch the shell - setting up in my home .local directory .local/share/virtualenvs/MRQy-yxYQvYdT/bin/activate

    I can install mrqy pipenv install . Installing .... Adding mrqy to Pipfile's [packages]... ✔ Installation Succeeded Installing dependencies from Pipfile.lock (829554)...

    and I can get the help to output to the screen python -m mrqy.QC --help usage: QC.py [-h] [-r R] [-s S] [-b B] [-u U] [-t T] [-c C] output_folder_name [inputdir [inputdir ...]]

    But, when I try to run "pipenv run -m pytest tests/" I get "Error: the command -m could not be found within PATH or Pipfile's [scripts]."

    What PATH variable is it looking for? There seems to be a PATH that was created in the .local/share/virtualenvs directory

    Any help would be greatly appreciated. And, yes, I did pip install the requirements.txt without issue.

    opened by drkitty28 18
  • Bump joblib from 1.1.0 to 1.2.0

    Bump joblib from 1.1.0 to 1.2.0

    Bumps joblib from 1.1.0 to 1.2.0.

    Changelog

    Sourced from joblib's changelog.

    Release 1.2.0

    • Fix a security issue where eval(pre_dispatch) could potentially run arbitrary code. Now only basic numerics are supported. joblib/joblib#1327

    • Make sure that joblib works even when multiprocessing is not available, for instance with Pyodide joblib/joblib#1256

    • Avoid unnecessary warnings when workers and main process delete the temporary memmap folder contents concurrently. joblib/joblib#1263

    • Fix memory alignment bug for pickles containing numpy arrays. This is especially important when loading the pickle with mmap_mode != None as the resulting numpy.memmap object would not be able to correct the misalignment without performing a memory copy. This bug would cause invalid computation and segmentation faults with native code that would directly access the underlying data buffer of a numpy array, for instance C/C++/Cython code compiled with older GCC versions or some old OpenBLAS written in platform specific assembly. joblib/joblib#1254

    • Vendor cloudpickle 2.2.0 which adds support for PyPy 3.8+.

    • Vendor loky 3.3.0 which fixes several bugs including:

      • robustly forcibly terminating worker processes in case of a crash (joblib/joblib#1269);

      • avoiding leaking worker processes in case of nested loky parallel calls;

      • reliability spawn the correct number of reusable workers.

    Commits
    • 5991350 Release 1.2.0
    • 3fa2188 MAINT cleanup numpy warnings related to np.matrix in tests (#1340)
    • cea26ff CI test the future loky-3.3.0 branch (#1338)
    • 8aca6f4 MAINT: remove pytest.warns(None) warnings in pytest 7 (#1264)
    • 067ed4f XFAIL test_child_raises_parent_exits_cleanly with multiprocessing (#1339)
    • ac4ebd5 MAINT add back pytest warnings plugin (#1337)
    • a23427d Test child raises parent exits cleanly more reliable on macos (#1335)
    • ac09691 [MAINT] various test updates (#1334)
    • 4a314b1 Vendor loky 3.2.0 (#1333)
    • bdf47e9 Make test_parallel_with_interactively_defined_functions_default_backend timeo...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump numpy from 1.20.1 to 1.22.0

    Bump numpy from 1.20.1 to 1.22.0

    Bumps numpy from 1.20.1 to 1.22.0.

    Release notes

    Sourced from numpy's releases.

    v1.22.0

    NumPy 1.22.0 Release Notes

    NumPy 1.22.0 is a big release featuring the work of 153 contributors spread over 609 pull requests. There have been many improvements, highlights are:

    • Annotations of the main namespace are essentially complete. Upstream is a moving target, so there will likely be further improvements, but the major work is done. This is probably the most user visible enhancement in this release.
    • A preliminary version of the proposed Array-API is provided. This is a step in creating a standard collection of functions that can be used across application such as CuPy and JAX.
    • NumPy now has a DLPack backend. DLPack provides a common interchange format for array (tensor) data.
    • New methods for quantile, percentile, and related functions. The new methods provide a complete set of the methods commonly found in the literature.
    • A new configurable allocator for use by downstream projects.

    These are in addition to the ongoing work to provide SIMD support for commonly used functions, improvements to F2PY, and better documentation.

    The Python versions supported in this release are 3.8-3.10, Python 3.7 has been dropped. Note that 32 bit wheels are only provided for Python 3.8 and 3.9 on Windows, all other wheels are 64 bits on account of Ubuntu, Fedora, and other Linux distributions dropping 32 bit support. All 64 bit wheels are also linked with 64 bit integer OpenBLAS, which should fix the occasional problems encountered by folks using truly huge arrays.

    Expired deprecations

    Deprecated numeric style dtype strings have been removed

    Using the strings "Bytes0", "Datetime64", "Str0", "Uint32", and "Uint64" as a dtype will now raise a TypeError.

    (gh-19539)

    Expired deprecations for loads, ndfromtxt, and mafromtxt in npyio

    numpy.loads was deprecated in v1.15, with the recommendation that users use pickle.loads instead. ndfromtxt and mafromtxt were both deprecated in v1.17 - users should use numpy.genfromtxt instead with the appropriate value for the usemask parameter.

    (gh-19615)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • 4D datasets

    4D datasets

    Hi Amir,

    Can the tool also deal with 4D datasets (e.g. fMRI)? I find that matplotlib returns an error ('Third dimension must be 3 or 4') when the input is 4D.

    Am I missing something here?

    Thanks!

    opened by fotaras-github 6
Releases(v2022.04)
Owner
Center for Computational Imaging and Personalized Diagnostics
Center for Computational Imaging and Personalized Diagnostics
MagFace: A Universal Representation for Face Recognition and Quality Assessment

MagFace MagFace: A Universal Representation for Face Recognition and Quality Assessment in IEEE Conference on Computer Vision and Pattern Recognition

Qiang Meng 523 Jan 5, 2023
BisQue is a web-based platform designed to provide researchers with organizational and quantitative analysis tools for 5D image data. Users can extend BisQue by implementing containerized ML workflows.

Overview BisQue is a web-based platform specifically designed to provide researchers with organizational and quantitative analysis tools for up to 5D

Vision Research Lab @ UCSB 26 Nov 29, 2022
[CVPRW 2021] Code for Region-Adaptive Deformable Network for Image Quality Assessment

RADN [CVPRW 2021] Code for Region-Adaptive Deformable Network for Image Quality Assessment [Paper on arXiv] Overview Update [2021/5/7] add codes for W

IIGROUP 53 Dec 28, 2022
Official PyTorch implementation of the paper "Recycling Discriminator: Towards Opinion-Unaware Image Quality Assessment Using Wasserstein GAN", accepted to ACM MM 2021 BNI Track.

RecycleD Official PyTorch implementation of the paper "Recycling Discriminator: Towards Opinion-Unaware Image Quality Assessment Using Wasserstein GAN

Yunan Zhu 23 Nov 5, 2022
[ICCV 2021] Group-aware Contrastive Regression for Action Quality Assessment

CoRe Created by Xumin Yu*, Yongming Rao*, Wenliang Zhao, Jiwen Lu, Jie Zhou This is the PyTorch implementation for ICCV paper Group-aware Contrastive

Xumin Yu 31 Dec 24, 2022
Implementation of temporal pooling methods studied in [ICIP'20] A Comparative Evaluation Of Temporal Pooling Methods For Blind Video Quality Assessment

Implementation of temporal pooling methods studied in [ICIP'20] A Comparative Evaluation Of Temporal Pooling Methods For Blind Video Quality Assessment

Zhengzhong Tu 5 Sep 16, 2022
Source code for paper "Deep Superpixel-based Network for Blind Image Quality Assessment"

DSN-IQA Source code for paper "Deep Superpixel-based Network for Blind Image Quality Assessment" Requirements Python >=3.8.0 Pytorch >=1.7.1 Usage wit

null 7 Oct 13, 2022
Lightweight Face Image Quality Assessment

LightQNet This is a demo code of training and testing [LightQNet] using Tensorflow. Uncertainty Losses: IDQ loss PCNet loss Uncertainty Networks: Mobi

Kaen 5 Nov 18, 2022
No-reference Image Quality Assessment(NIQA) Algorithms (BRISQUE, NIQE, PIQE, RankIQA, MetaIQA)

No-Reference Image Quality Assessment Algorithms No-reference Image Quality Assessment(NIQA) is a task of evaluating an image without a reference imag

Dae-Young Song 26 Jan 4, 2023
[CVPRW 2022] Attentions Help CNNs See Better: Attention-based Hybrid Image Quality Assessment Network

Attention Helps CNN See Better: Hybrid Image Quality Assessment Network [CVPRW 2022] Code for Hybrid Image Quality Assessment Network [paper] [code] T

IIGROUP 49 Dec 11, 2022
Neural Nano-Optics for High-quality Thin Lens Imaging

Neural Nano-Optics for High-quality Thin Lens Imaging Project Page | Paper | Data Ethan Tseng, Shane Colburn, James Whitehead, Luocheng Huang, Seung-H

Ethan Tseng 39 Dec 5, 2022
Portfolio Optimization and Quantitative Strategic Asset Allocation in Python

Riskfolio-Lib Quantitative Strategic Asset Allocation, Easy for Everyone. Description Riskfolio-Lib is a library for making quantitative strategic ass

Riskfolio 1.7k Jan 7, 2023
U-Net implementation in PyTorch for FLAIR abnormality segmentation in brain MRI

U-Net for brain segmentation U-Net implementation in PyTorch for FLAIR abnormality segmentation in brain MRI based on a deep learning segmentation alg

null 562 Jan 2, 2023
A user-friendly research and development tool built to standardize RL competency assessment for custom agents and environments.

Built with ❤️ by Sam Showalter Contents Overview Installation Dependencies Usage Scripts Standard Execution Environment Development Environment Benchm

SRI-AIC 1 Nov 18, 2021
To propose and implement a multi-class classification approach to disaster assessment from the given data set of post-earthquake satellite imagery.

To propose and implement a multi-class classification approach to disaster assessment from the given data set of post-earthquake satellite imagery.

Kunal Wadhwa 2 Jan 5, 2022
Repository for the COLING 2020 paper "Explainable Automated Fact-Checking: A Survey."

Explainable Fact Checking: A Survey This repository and the accompanying webpage contain resources for the paper "Explainable Fact Checking: A Survey"

Neema Kotonya 42 Nov 17, 2022
✅ How Robust are Fact Checking Systems on Colloquial Claims?. In NAACL-HLT, 2021.

How Robust are Fact Checking Systems on Colloquial Claims? Official PyTorch implementation of our NAACL paper: Byeongchang Kim*, Hyunwoo Kim*, Seokhee

Byeongchang Kim 19 Mar 15, 2022
Beancount-mercury - Beancount importer for Mercury Startup Checking

beancount-mercury beancount-mercury provides an Importer for converting CSV expo

Michael Lynch 4 Oct 31, 2022