Skip to content

Commit 684fb12

Browse files
authored
Update versioning system (#252)
* Draft for new versioning scheme * Update build system * Testing file * Fix build error * Use build * Python version * Importlib in Python 3.8 * Add back requirements_test.txt * Rename * Bad torch version * Delete version file * Ignore version * No need to build * Delete test requirements * Apply isort * Fix Python version
1 parent 265c565 commit 684fb12

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+211
-178
lines changed

Diff for: .flake8

-5
This file was deleted.

Diff for: .github/workflows/build-and-test.yml

+8-9
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
max-parallel: 4
1616
matrix:
1717
platform: [ubuntu-latest]
18-
python-version: [3.7, 3.8]
18+
python-version: [3.8]
1919

2020
runs-on: ${{ matrix.platform }}
2121

@@ -28,8 +28,9 @@ jobs:
2828
- name: Install
2929
run: |
3030
python -m pip install --upgrade pip
31-
pip install --upgrade wheel
32-
pip install -e .
31+
pip install --upgrade wheel build setuptools
32+
python -m build .
33+
pip install dist/*.whl
3334
- name: Test Import
3435
run: |
3536
python -c 'import fastmri'
@@ -40,7 +41,7 @@ jobs:
4041
max-parallel: 4
4142
matrix:
4243
platform: [ubuntu-latest]
43-
python-version: [3.7, 3.8]
44+
python-version: [3.8]
4445

4546
runs-on: ${{ matrix.platform }}
4647

@@ -65,7 +66,7 @@ jobs:
6566
run: |
6667
python -m pip install --upgrade pip
6768
pip install --upgrade wheel
68-
pip install -r dev-requirements.txt
69+
pip install --editable ".[tests]"
6970
- name: Check Formatting and Lint
7071
run: |
7172
python --version
@@ -75,10 +76,8 @@ jobs:
7576
mypy fastmri
7677
flake8 --version
7778
flake8 fastmri_examples fastmri tests
78-
- name: Install fastMRI
79-
run: |
80-
python setup.py bdist_wheel
81-
pip install dist/*.whl
79+
isort --version
80+
isort --check-only fastmri tests fastmri_examples
8281
- name: Run pytest
8382
run: |
8483
echo -e "PyTorch \c" && pip show torch | grep Version

Diff for: .gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@ lightning_logs/
2020
*.pt
2121
build/
2222
dist/
23+
fastmri/_version.py

Diff for: README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ help(SliceDataset)
5454

5555
**Note:** Contributions to the code are continuously tested via GitHub actions.
5656
If you encounter an issue, the best first thing to do is to try to match the
57-
test environments in `requirements.txt` and `dev-requirements.txt`.
57+
`tests` environment in `setup.cfg`, e.g., `pip install --editable ".[tests]"`
58+
when installing from source.
5859

5960
**Note:** As documented in [Issue 215](https://github.com/facebookresearch/fastMRI/issues/215),
6061
there is currently a memory leak when using `h5py` installed from `pip` and

Diff for: dev-requirements.txt

-10
This file was deleted.

Diff for: fastmri/__init__.py

+9-7
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,16 @@
55
LICENSE file in the root directory of this source tree.
66
"""
77

8-
__version__ = "0.1.2a20220121"
9-
__author__ = "Facebook/NYU fastMRI Team"
10-
__author_email__ = "[email protected]"
11-
__license__ = "MIT"
12-
__homepage__ = "https://fastmri.org/"
8+
from importlib.metadata import PackageNotFoundError, version
9+
10+
try:
11+
__version__ = version("fastmri")
12+
except PackageNotFoundError:
13+
# package is not installed
14+
import warnings
15+
16+
warnings.warn("Could not retrieve fastmri version!")
1317

14-
import torch
15-
from packaging import version
1618

1719
from .coil_combine import rss, rss_complex
1820
from .fftc import fft2c_new as fft2c

Diff for: fastmri/coil_combine.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def rss(data: torch.Tensor, dim: int = 0) -> torch.Tensor:
2323
Returns:
2424
The RSS value.
2525
"""
26-
return torch.sqrt((data ** 2).sum(dim))
26+
return torch.sqrt((data**2).sum(dim))
2727

2828

2929
def rss_complex(data: torch.Tensor, dim: int = 0) -> torch.Tensor:

Diff for: fastmri/data/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55
LICENSE file in the root directory of this source tree.
66
"""
77

8-
from .mri_data import SliceDataset, CombinedSliceDataset
8+
from .mri_data import CombinedSliceDataset, SliceDataset
99
from .volume_sampler import VolumeSampler

Diff for: fastmri/data/mri_data.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -276,8 +276,8 @@ def __init__(
276276
if dataset_cache.get(root) is None and use_dataset_cache:
277277
dataset_cache[root] = self.examples
278278
logging.info(f"Saving dataset cache to {self.dataset_cache_file}.")
279-
with open(self.dataset_cache_file, "wb") as f:
280-
pickle.dump(dataset_cache, f)
279+
with open(self.dataset_cache_file, "wb") as cache_f:
280+
pickle.dump(dataset_cache, cache_f)
281281
else:
282282
logging.info(f"Using dataset cache from {self.dataset_cache_file}.")
283283
self.examples = dataset_cache[root]

Diff for: fastmri/data/transforms.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77

88
from typing import Dict, NamedTuple, Optional, Sequence, Tuple, Union
99

10-
import fastmri
1110
import numpy as np
1211
import torch
1312

13+
import fastmri
14+
1415
from .subsample import MaskFunc
1516

1617

Diff for: fastmri/data/volume_sampler.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99

1010
import torch
1111
import torch.distributed as dist
12-
from fastmri.data.mri_data import CombinedSliceDataset, SliceDataset
1312
from torch.utils.data import Sampler
1413

14+
from fastmri.data.mri_data import CombinedSliceDataset, SliceDataset
15+
1516

1617
class VolumeSampler(Sampler):
1718
"""

Diff for: fastmri/evaluate.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def mse(gt: np.ndarray, pred: np.ndarray) -> np.ndarray:
2525

2626
def nmse(gt: np.ndarray, pred: np.ndarray) -> np.ndarray:
2727
"""Compute Normalized Mean Squared Error (NMSE)"""
28-
return np.linalg.norm(gt - pred) ** 2 / np.linalg.norm(gt) ** 2
28+
return np.array(np.linalg.norm(gt - pred) ** 2 / np.linalg.norm(gt) ** 2)
2929

3030

3131
def psnr(

Diff for: fastmri/losses.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ def __init__(self, win_size: int = 7, k1: float = 0.01, k2: float = 0.03):
2525
super().__init__()
2626
self.win_size = win_size
2727
self.k1, self.k2 = k1, k2
28-
self.register_buffer("w", torch.ones(1, 1, win_size, win_size) / win_size ** 2)
29-
NP = win_size ** 2
28+
self.register_buffer("w", torch.ones(1, 1, win_size, win_size) / win_size**2)
29+
NP = win_size**2
3030
self.cov_norm = NP / (NP - 1)
3131

3232
def forward(
@@ -52,7 +52,7 @@ def forward(
5252
A1, A2, B1, B2 = (
5353
2 * ux * uy + C1,
5454
2 * vxy + C2,
55-
ux ** 2 + uy ** 2 + C1,
55+
ux**2 + uy**2 + C1,
5656
vx + vy + C2,
5757
)
5858
D = B1 * B2

Diff for: fastmri/math.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def complex_abs(data: torch.Tensor) -> torch.Tensor:
6666
if not data.shape[-1] == 2:
6767
raise ValueError("Tensor does not have separate complex dim.")
6868

69-
return (data ** 2).sum(dim=-1).sqrt()
69+
return (data**2).sum(dim=-1).sqrt()
7070

7171

7272
def complex_abs_sq(data: torch.Tensor) -> torch.Tensor:
@@ -83,7 +83,7 @@ def complex_abs_sq(data: torch.Tensor) -> torch.Tensor:
8383
if not data.shape[-1] == 2:
8484
raise ValueError("Tensor does not have separate complex dim.")
8585

86-
return (data ** 2).sum(dim=-1)
86+
return (data**2).sum(dim=-1)
8787

8888

8989
def tensor_to_complex_np(data: torch.Tensor) -> np.ndarray:

Diff for: fastmri/models/policy.py

+6-11
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77

88
import functools
99
import operator
10-
from typing import List
11-
from typing import Tuple
10+
from typing import List, Tuple
1211

1312
import torch
1413
import torch.nn as nn
@@ -64,14 +63,10 @@ def forward(self, mask: torch.Tensor, kspace: torch.Tensor):
6463
if self.use_softplus:
6564
# Softplus to make positive
6665
prob_mask = F.softplus(sampler_out, beta=self.slope)
67-
prob_mask = (
68-
prob_mask
69-
/ torch.max(
70-
(1 - mask.reshape(prob_mask.shape[0], prob_mask.shape[1]))
71-
* prob_mask,
72-
dim=1,
73-
)[0].reshape(-1, 1)
74-
)
66+
prob_mask = prob_mask / torch.max(
67+
(1 - mask.reshape(prob_mask.shape[0], prob_mask.shape[1])) * prob_mask,
68+
dim=1,
69+
)[0].reshape(-1, 1)
7570
else:
7671
# Sigmoid to make positive
7772
prob_mask = torch.sigmoid(self.slope * sampler_out)
@@ -419,7 +414,7 @@ def __init__(
419414
self.down_sample_layers = nn.ModuleList(
420415
[
421416
SingleConvBlock(
422-
chans * 2 ** i,
417+
chans * 2**i,
423418
chans * 2 ** (i + 1),
424419
drop_prob,
425420
pool_size=self.pool_size,

Diff for: fastmri/models/varnet.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@
66
"""
77

88
import math
9-
from typing import List, Tuple, Optional
9+
from typing import List, Optional, Tuple
1010

11-
import fastmri
1211
import torch
1312
import torch.nn as nn
1413
import torch.nn.functional as F
14+
15+
import fastmri
1516
from fastmri.data import transforms
1617

1718
from .unet import Unet

Diff for: fastmri/pl_modules/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
LICENSE file in the root directory of this source tree.
66
"""
77

8+
from .data_module import FastMriDataModule
89
from .mri_module import MriModule
910
from .unet_module import UnetModule
1011
from .varnet_module import VarNetModule
11-
from .data_module import FastMriDataModule

Diff for: fastmri/pl_modules/data_module.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99
from pathlib import Path
1010
from typing import Callable, Optional, Union
1111

12-
import fastmri
1312
import pytorch_lightning as pl
1413
import torch
14+
15+
import fastmri
1516
from fastmri.data import CombinedSliceDataset, SliceDataset
1617

1718

@@ -52,13 +53,13 @@ def worker_init_fn(worker_id):
5253
+ worker_info.id * len(data.datasets)
5354
+ i
5455
)
55-
dataset.transform.mask_func.rng.seed(seed_i % (2 ** 32 - 1))
56+
dataset.transform.mask_func.rng.seed(seed_i % (2**32 - 1))
5657
elif data.transform.mask_func is not None:
5758
if is_ddp: # DDP training: unique seed is determined by worker and device
5859
seed = base_seed + torch.distributed.get_rank() * worker_info.num_workers
5960
else:
6061
seed = base_seed
61-
data.transform.mask_func.rng.seed(seed % (2 ** 32 - 1))
62+
data.transform.mask_func.rng.seed(seed % (2**32 - 1))
6263

6364

6465
def _check_both_not_none(val1, val2):

Diff for: fastmri/pl_modules/mri_module.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@
99
from argparse import ArgumentParser
1010
from collections import defaultdict
1111

12-
import fastmri
1312
import numpy as np
1413
import pytorch_lightning as pl
1514
import torch
16-
from fastmri import evaluate
1715
from torchmetrics.metric import Metric
1816

17+
import fastmri
18+
from fastmri import evaluate
19+
1920

2021
class DistributedMetricSum(Metric):
2122
def __init__(self, dist_sync_on_step=True):

Diff for: fastmri/pl_modules/unet_module.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@
88
from argparse import ArgumentParser
99

1010
import torch
11-
from fastmri.models import Unet
1211
from torch.nn import functional as F
1312

13+
from fastmri.models import Unet
14+
1415
from .mri_module import MriModule
1516

1617

Diff for: fastmri/pl_modules/varnet_module.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@
77

88
from argparse import ArgumentParser
99

10-
import fastmri
1110
import torch
11+
12+
import fastmri
1213
from fastmri.data import transforms
1314
from fastmri.models import VarNet
1415

Diff for: fastmri_examples/adaptive_varnet/eval_pretrained_adaptive_varnet.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
import numpy as np
55
import pytorch_lightning as pl
66
import torch
7+
from pl_modules import AdaptiveVarNetModule, VarNetModule
8+
from subsample import create_mask_for_mask_type
9+
710
from fastmri import evaluate
811
from fastmri.data.mri_data import fetch_dir
912
from fastmri.data.transforms import MiniCoilTransform
1013
from fastmri.pl_modules import FastMriDataModule
1114

12-
from pl_modules import AdaptiveVarNetModule, VarNetModule
13-
from subsample import create_mask_for_mask_type
14-
1515

1616
def str2bool(v):
1717
if isinstance(v, bool):

Diff for: fastmri_examples/adaptive_varnet/pl_modules/adaptive_varnet_module.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99
from collections import defaultdict
1010
from typing import Tuple
1111

12-
import fastmri
1312
import numpy as np
1413
import torch
14+
15+
import fastmri
1516
from fastmri import evaluate
1617
from fastmri.data import transforms
1718
from fastmri.models import AdaptiveVarNet

Diff for: fastmri_examples/adaptive_varnet/pl_modules/varnet_module.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,19 @@
99
from collections import defaultdict
1010
from typing import Optional
1111

12-
import fastmri
1312
import numpy as np
1413
import torch
1514
import torch.nn as nn
15+
16+
import fastmri
1617
from fastmri import evaluate
1718
from fastmri.data import transforms
1819
from fastmri.data.transforms import VarNetSample
1920
from fastmri.models.adaptive_varnet import AdaptiveSensitivityModel, AdaptiveVarNetBlock
2021
from fastmri.models.varnet import NormUnet
2122
from fastmri.pl_modules.mri_module import MriModule
2223

23-
from .metrics import DistributedMetricSum, DistributedArraySum
24+
from .metrics import DistributedArraySum, DistributedMetricSum
2425

2526

2627
class VarNet(nn.Module):

Diff for: fastmri_examples/adaptive_varnet/subsample.py

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from typing import Optional, Sequence
99

1010
import numpy as np
11+
1112
from fastmri.data.subsample import MaskFunc, RandomMaskFunc
1213

1314

0 commit comments

Comments
 (0)