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) [email protected]:~/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 ^^^^

    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
The 2nd place solution of 2021 google landmark retrieval on kaggle.

Leaderboard, taxonomy, and curated list of few-shot object detection papers.

229 Dec 13, 2022
Algorithm to texture 3D reconstructions from multi-view stereo images

MVS-Texturing Welcome to our project that textures 3D reconstructions from images. This project focuses on 3D reconstructions generated using structur

Nils Moehrle 766 Jan 04, 2023
Semantic Segmentation Suite in TensorFlow

Semantic Segmentation Suite in TensorFlow. Implement, train, and test new Semantic Segmentation models easily!

George Seif 2.5k Jan 06, 2023
Transformer part of 12th place solution in Riiid! Answer Correctness Prediction

kaggle_riiid Transformer part of 12th place solution in Riiid! Answer Correctness Prediction. Please see here for more information. Execution You need

Sakami Kosuke 2 Apr 23, 2022
통일된 DataScience 폴더 구조 제공 및 가상환경 작업의 부담감 해소

Lucas coded by linux shell 목차 Mac버전 CookieCutter (autoenv) 1.How to Install autoenv 2.폴더 진입 시, activate 구현하기 3.폴더 탈출 시, deactivate 구현하기 4.Alias 설정하기 5

ello 3 Feb 21, 2022
This folder contains the python code of UR5E's advanced forward kinematics model.

This folder contains the python code of UR5E's advanced forward kinematics model. By entering the angle of the joint of UR5e, the detailed coordinates of up to 48 points around the robot arm can be c

Qiang Wang 4 Sep 17, 2022
[ICCV2021] Official code for "Channel-wise Topology Refinement Graph Convolution for Skeleton-Based Action Recognition"

CTR-GCN This repo is the official implementation for Channel-wise Topology Refinement Graph Convolution for Skeleton-Based Action Recognition. The pap

Yuxin Chen 148 Dec 16, 2022
DrQ-v2: Improved Data-Augmented Reinforcement Learning

DrQ-v2: Improved Data-Augmented RL Agent Method DrQ-v2 is a model-free off-policy algorithm for image-based continuous control. DrQ-v2 builds on DrQ,

Facebook Research 234 Jan 01, 2023
SCU OlympicsRunning Baseline

Competition 1v1 running Environment check details in Jidi Competition RLChina2021智能体竞赛 做出的修改: 奖励重塑:修改了环境,重新设置了奖励的分配,使得奖励组成不只有零和博弈,还有探索环境的奖励。 算法微调:修改了官

ZiSeoi Wong 2 Nov 23, 2021
Beta Shapley: a Unified and Noise-reduced Data Valuation Framework for Machine Learning

Beta Shapley: a Unified and Noise-reduced Data Valuation Framework for Machine Learning This repository provides an implementation of the paper Beta S

Yongchan Kwon 28 Nov 10, 2022
VL-LTR: Learning Class-wise Visual-Linguistic Representation for Long-Tailed Visual Recognition

VL-LTR: Learning Class-wise Visual-Linguistic Representation for Long-Tailed Visual Recognition Usage First, install PyTorch 1.7.1+, torchvision 0.8.2

40 Dec 12, 2022
Implementation of paper "DeepTag: A General Framework for Fiducial Marker Design and Detection"

Implementation of paper DeepTag: A General Framework for Fiducial Marker Design and Detection. Project page: https://herohuyongtao.github.io/research/

Yongtao Hu 46 Dec 12, 2022
An implementation of RetinaNet in PyTorch.

RetinaNet An implementation of RetinaNet in PyTorch. Installation Training COCO 2017 Pascal VOC Custom Dataset Evaluation Todo Credits Installation In

Conner Vercellino 297 Jan 04, 2023
Fedlearn支持前沿算法研发的Python工具库 | Fedlearn algorithm toolkit for researchers

FedLearn-algo Installation Development Environment Checklist python3 (3.6 or 3.7) is required. To configure and check the development environment is c

89 Nov 14, 2022
CR-Fill: Generative Image Inpainting with Auxiliary Contextual Reconstruction. ICCV 2021

crfill Usage | Web App | | Paper | Supplementary Material | More results | code for paper ``CR-Fill: Generative Image Inpainting with Auxiliary Contex

182 Dec 20, 2022
Code for Environment Inference for Invariant Learning (ICML 2020 UDL Workshop Paper)

Environment Inference for Invariant Learning This code accompanies the paper Environment Inference for Invariant Learning, which appears at ICML 2021.

Elliot Creager 40 Dec 09, 2022
A PyTorch Implementation of Gated Graph Sequence Neural Networks (GGNN)

A PyTorch Implementation of GGNN This is a PyTorch implementation of the Gated Graph Sequence Neural Networks (GGNN) as described in the paper Gated G

Ching-Yao Chuang 427 Dec 13, 2022
In this work, we will implement some basic but important algorithm of machine learning step by step.

WoRkS continued English 中文 Français Probability Density Estimation-Non-Parametric Methods(概率密度估计-非参数方法) 1. Kernel / k-Nearest Neighborhood Density Est

liziyu0104 1 Dec 30, 2021
Run PowerShell command without invoking powershell.exe

PowerLessShell PowerLessShell rely on MSBuild.exe to remotely execute PowerShell scripts and commands without spawning powershell.exe. You can also ex

Mr.Un1k0d3r 1.2k Jan 03, 2023
The `rtdl` library + The official implementation of the paper

The `rtdl` library + The official implementation of the paper "Revisiting Deep Learning Models for Tabular Data"

Yandex Research 510 Dec 30, 2022