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
AbelNN: Deep Learning Python module from scratch

AbelNN: Deep Learning Python module from scratch I have implemented several neural networks from scratch using only Numpy. I have designed the module

Abel 2 Apr 12, 2022
[ICCV 2021] Encoder-decoder with Multi-level Attention for 3D Human Shape and Pose Estimation

MAED: Encoder-decoder with Multi-level Attention for 3D Human Shape and Pose Estimation Getting Started Our codes are implemented and tested with pyth

ZiNiU WaN 176 Dec 15, 2022
TensorFlow CNN for fast style transfer

Fast Style Transfer in TensorFlow Add styles from famous paintings to any photo in a fraction of a second! It takes 100ms on a 2015 Titan X to style t

1 Dec 14, 2021
Draw like Bob Ross using the power of Neural Networks (With PyTorch)!

Draw like Bob Ross using the power of Neural Networks! (+ Pytorch) Learning Process Visualization Getting started Install dependecies Requires python3

Kendrick Tan 116 Mar 07, 2022
A package for music online and offline rhythmic information analysis including music Beat, downbeat, tempo and meter tracking.

BeatNet A package for music online and offline rhythmic information analysis including music Beat, downbeat, tempo and meter tracking. This repository

Mojtaba Heydari 157 Dec 27, 2022
Dataset VSD4K includes 6 popular categories: game, sport, dance, vlog, interview and city.

CaFM-pytorch ICCV ACCEPT Introduction of dataset VSD4K Our dataset VSD4K includes 6 popular categories: game, sport, dance, vlog, interview and city.

96 Jul 05, 2022
Embracing Single Stride 3D Object Detector with Sparse Transformer

SST: Single-stride Sparse Transformer This is the official implementation of paper: Embracing Single Stride 3D Object Detector with Sparse Transformer

TuSimple 385 Dec 28, 2022
This is an open source library implementing hyperbox-based machine learning algorithms

hyperbox-brain is a Python open source toolbox implementing hyperbox-based machine learning algorithms built on top of scikit-learn and is distributed

Complex Adaptive Systems (CAS) Lab - University of Technology Sydney 21 Dec 14, 2022
Reliable probability face embeddings

ProbFace, arxiv This is a demo code of training and testing [ProbFace] using Tensorflow. ProbFace is a reliable Probabilistic Face Embeddging (PFE) me

Kaen Chan 34 Dec 31, 2022
Akshat Surolia 2 May 11, 2022
"Structure-Augmented Text Representation Learning for Efficient Knowledge Graph Completion"(WWW 2021)

STAR_KGC This repo contains the source code of the paper accepted by WWW'2021. "Structure-Augmented Text Representation Learning for Efficient Knowled

Bo Wang 60 Dec 26, 2022
PyTorch implementation of CVPR'18 - Perturbative Neural Networks

This is an attempt to reproduce results in Perturbative Neural Networks paper. See original repo for details.

Michael Klachko 57 May 14, 2021
Evaluation toolkit of the informative tracking benchmark comprising 9 scenarios, 180 diverse videos, and new challenges.

Informative-tracking-benchmark Informative tracking benchmark (ITB) higher diversity. It contains 9 representative scenarios and 180 diverse videos. m

Xin Li 15 Nov 26, 2022
基于深度强化学习的原神自动钓鱼AI

原神自动钓鱼AI由YOLOX, DQN两部分模型组成。使用迁移学习,半监督学习进行训练。 模型也包含一些使用opencv等传统数字图像处理方法实现的不可学习部分。

4.2k Jan 01, 2023
[CVPR 2021] Scan2Cap: Context-aware Dense Captioning in RGB-D Scans

Scan2Cap: Context-aware Dense Captioning in RGB-D Scans Introduction We introduce the task of dense captioning in 3D scans from commodity RGB-D sensor

Dave Z. Chen 79 Nov 07, 2022
A generalist algorithm for cell and nucleus segmentation.

Cellpose | A generalist algorithm for cell and nucleus segmentation. Cellpose was written by Carsen Stringer and Marius Pachitariu. To learn about Cel

MouseLand 733 Dec 29, 2022
This repository contains the source code for the paper "DONeRF: Towards Real-Time Rendering of Compact Neural Radiance Fields using Depth Oracle Networks",

DONeRF: Towards Real-Time Rendering of Compact Neural Radiance Fields using Depth Oracle Networks Project Page | Video | Presentation | Paper | Data L

Facebook Research 281 Dec 22, 2022
This repository contains the code for using the H3DS dataset introduced in H3D-Net: Few-Shot High-Fidelity 3D Head Reconstruction

H3DS Dataset This repository contains the code for using the H3DS dataset introduced in H3D-Net: Few-Shot High-Fidelity 3D Head Reconstruction Access

Crisalix 72 Dec 10, 2022
E2e music remastering system - End-to-end Music Remastering System Using Self-supervised and Adversarial Training

End-to-end Music Remastering System This repository includes source code and pre

Junghyun (Tony) Koo 37 Dec 15, 2022
This is a Python wrapper for TA-LIB based on Cython instead of SWIG.

TA-Lib This is a Python wrapper for TA-LIB based on Cython instead of SWIG. From the homepage: TA-Lib is widely used by trading software developers re

John Benediktsson 7.3k Jan 03, 2023