Passed
Pull Request — main (#656)
by Yunguan
03:01
created

test.unit.test_layer.test_deconv3d_block()   A

Complexity

Conditions 1

Size

Total Lines 21
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 12
dl 0
loc 21
rs 9.8
c 0
b 0
f 0
cc 1
nop 0
1
# coding=utf-8
2
3
"""
4
Tests for deepreg/model/layer
5
"""
6
import numpy as np
7
import pytest
8
import tensorflow as tf
9
10
import deepreg.model.layer as layer
11
12
13
def test_deconv3d():
14
    """
15
    Test the layer.Deconv3d class and its default attributes."""
16
    batch_size = 5
17
    channels = 4
18
    input_size = (32, 32, 16)
19
    output_size = (64, 64, 32)
20
    output_padding = (1, 1, 1)
21
22
    input_tensor_shape = (batch_size,) + input_size + (channels,)
23
24
    deconv3d = layer.Deconv3d(8, output_size, strides=2)
25
    deconv3d.build(input_tensor_shape)
26
27
    assert tuple(deconv3d._output_padding) == output_padding
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _output_padding was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
28
    assert isinstance(deconv3d._deconv3d, tf.keras.layers.Conv3DTranspose)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _deconv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
29
    assert tuple(deconv3d._kernel_size) == (3, 3, 3)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _kernel_size was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
30
    assert tuple(deconv3d._strides) == (2, 2, 2)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _strides was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
31
    assert deconv3d._padding == "same"
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _padding was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
32
    assert deconv3d._deconv3d.use_bias is True
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _deconv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
33
34
35
def test_conv3d_block():
36
    """
37
    Test the layer.Conv3dBlock class and its default attributes.
38
    """
39
40
    conv3d_block = layer.Conv3dBlock(8)
41
42
    assert conv3d_block._conv3d.kernel_size == (3, 3, 3)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
43
    assert conv3d_block._conv3d.strides == (1, 1, 1)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
44
    assert conv3d_block._conv3d.padding == "same"
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
45
    assert conv3d_block._conv3d.use_bias is False
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
46
47
    assert isinstance(conv3d_block._norm._norm, tf.keras.layers.BatchNormalization)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _norm was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
48
49
50
def test_deconv3d_block():
51
    """
52
    Test the layer.Deconv3dBlock class and its default attributes.
53
    """
54
55
    deconv3d_block = layer.Deconv3dBlock(8)
56
57
    assert isinstance(deconv3d_block._deconv3d, layer.Deconv3d)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _deconv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
58
    assert deconv3d_block._deconv3d._deconv3d is None
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _deconv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
59
60
    deconv3d_block._deconv3d.build((8, 8))
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _deconv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
61
62
    assert isinstance(
63
        deconv3d_block._deconv3d._deconv3d, tf.keras.layers.Conv3DTranspose
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _deconv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
64
    )
65
    assert tuple(deconv3d_block._deconv3d._kernel_size) == (3, 3, 3)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _kernel_size was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
Coding Style Best Practice introduced by
It seems like _deconv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
66
    assert tuple(deconv3d_block._deconv3d._strides) == (1, 1, 1)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _strides was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
Coding Style Best Practice introduced by
It seems like _deconv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
67
    assert deconv3d_block._deconv3d._padding == "same"
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _padding was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
Coding Style Best Practice introduced by
It seems like _deconv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
68
    assert deconv3d_block._deconv3d._deconv3d.use_bias is False
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _deconv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
69
70
    assert isinstance(deconv3d_block._norm._norm, tf.keras.layers.BatchNormalization)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _norm was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
71
72
73
def test_residual3d_block():
74
    """
75
    Test the layer.Residual3dBlock class and its default attributes.
76
    """
77
    res3d_block = layer.Residual3dBlock(8)
78
79
    assert isinstance(res3d_block._conv3d_block, layer.Conv3dBlock)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d_block was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
80
    assert res3d_block._conv3d_block._conv3d.kernel_size == (3, 3, 3)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
Coding Style Best Practice introduced by
It seems like _conv3d_block was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
81
    assert res3d_block._conv3d_block._conv3d.strides == (1, 1, 1)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
Coding Style Best Practice introduced by
It seems like _conv3d_block was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
82
83
    assert res3d_block._conv3d.use_bias is False
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
84
    assert res3d_block._conv3d.kernel_size == (3, 3, 3)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
85
    assert res3d_block._conv3d.strides == (1, 1, 1)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
86
87
    assert isinstance(res3d_block._norm._norm, tf.keras.layers.BatchNormalization)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _norm was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
88
89
90
def test_downsample_resnet_block():
91
    """
92
    Test the layer.DownSampleResnetBlock class and its default attributes.
93
    """
94
    model = layer.DownSampleResnetBlock(8)
95
96
    assert model._pooling is True
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _pooling was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
97
98
    assert isinstance(model._conv3d_block, layer.Conv3dBlock)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d_block was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
99
    assert isinstance(model._residual_block, layer.Residual3dBlock)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _residual_block was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
100
    assert model._conv3d_block3 is None
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d_block3 was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
101
102
    model = layer.DownSampleResnetBlock(8, pooling=False)
103
    assert model._max_pool3d is None
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _max_pool3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
104
    assert isinstance(model._conv3d_block3, layer.Conv3dBlock)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d_block3 was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
105
106
107
def test_upsample_resnet_block():
108
    """
109
    Test the layer.UpSampleResnetBlock class and its default attributes.
110
    """
111
    batch_size = 5
112
    channels = 4
113
    input_size = (32, 32, 16)
114
    output_size = (64, 64, 32)
115
116
    input_tensor_size = (batch_size,) + input_size + (channels,)
117
    skip_tensor_size = (batch_size,) + output_size + (channels // 2,)
118
119
    model = layer.UpSampleResnetBlock(8)
120
    model.build([input_tensor_size, skip_tensor_size])
121
122
    assert model._filters == 8
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _filters was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
123
    assert model._concat is False
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _concat was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
124
    assert isinstance(model._conv3d_block, layer.Conv3dBlock)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d_block was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
125
    assert isinstance(model._residual_block, layer.Residual3dBlock)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _residual_block was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
126
    assert isinstance(model._deconv3d_block, layer.Deconv3dBlock)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _deconv3d_block was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
127
128
129
def test_init_conv3d_with_resize():
130
    """
131
    Test the layer.Conv3dWithResize class's default attributes and call function.
132
    """
133
    batch_size = 5
134
    channels = 4
135
    input_size = (32, 32, 16)
136
    output_size = (62, 62, 24)
137
    filters = 8
138
139
    input_tensor_size = (batch_size,) + input_size + (channels,)
140
    output_tensor_size = (batch_size,) + output_size + (filters,)
141
142
    model = layer.Conv3dWithResize(output_size, filters)
143
144
    assert model._output_shape == output_size
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _output_shape was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
145
146
    # Pass an input of all zeros
147
    inputs = np.zeros(input_tensor_size)
148
    # Get outputs by calling
149
    output = model.call(inputs)
150
    # Expected shape is (5, 1, 2, 3, 3)
151
    assert all(x == y for x, y in zip(output_tensor_size, output.shape))
152
153
154
def test_warping():
155
    """
156
    Test the layer.Warping class, its default attributes and its call() method.
157
    """
158
    batch_size = 5
159
    fixed_image_size = (32, 32, 16)
160
    moving_image_size = (24, 24, 16)
161
    ndims = len(moving_image_size)
162
163
    grid_size = (1,) + fixed_image_size + (3,)
164
    model = layer.Warping(fixed_image_size)
165
166
    assert all(x == y for x, y in zip(grid_size, model.grid_ref.shape))
167
168
    # Pass an input of all zeros
169
    inputs = [
170
        np.ones((batch_size, *fixed_image_size, ndims), dtype="float32"),
171
        np.ones((batch_size, *moving_image_size), dtype="float32"),
172
    ]
173
    # Get outputs by calling
174
    output = model.call(inputs)
175
    # Expected shape is (5, 1, 2, 3, 3)
176
    assert all(x == y for x, y in zip((batch_size,) + fixed_image_size, output.shape))
177
178
179
def test_init_dvf():
180
    """
181
    Test the layer.IntDVF class, its default attributes and its call() method.
182
    """
183
184
    batch_size = 5
185
    fixed_image_size = (32, 32, 16)
186
    ndims = len(fixed_image_size)
187
188
    model = layer.IntDVF(fixed_image_size)
189
190
    assert isinstance(model._warping, layer.Warping)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _warping was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
191
    assert model._num_steps == 7
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _num_steps was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
192
193
    inputs = np.ones((batch_size, *fixed_image_size, ndims))
194
    output = model.call(inputs)
195
    assert all(
196
        x == y
197
        for x, y in zip((batch_size,) + fixed_image_size + (ndims,), output.shape)
198
    )
199
200
201
def test_additive_upsampling():
202
    """
203
    Test the layer.AdditiveUpSampling class and its default attributes.
204
    """
205
    channels = 8
206
    batch_size = 5
207
    output_size = (32, 32, 16)
208
    input_size = (24, 24, 16)
209
210
    # Test __init__()
211
    model = layer.AdditiveUpSampling(output_size)
212
    assert model._stride == 2
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _stride was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
213
    assert model._output_shape == output_size
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _output_shape was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
214
215
    # Test call()
216
    inputs = np.ones(
217
        (batch_size, input_size[0], input_size[1], input_size[2], channels)
218
    )
219
    output = model(inputs)
220
    assert all(
221
        x == y
222
        for x, y in zip((batch_size,) + output_size + (channels / 2,), output.shape)
223
    )
224
225
    # Test the exceptions
226
    model = layer.AdditiveUpSampling(output_size, stride=3)
227
    with pytest.raises(ValueError):
228
        model(inputs)
229
230
231
def test_local_net_residual3d_block():
232
    """
233
    Test the layer.LocalNetResidual3dBlock class's,
234
    default attributes and call() function.
235
    """
236
237
    # Test __init__()
238
    conv3d_block = layer.LocalNetResidual3dBlock(8)
239
240
    assert conv3d_block._conv3d.kernel_size == (3, 3, 3)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
241
    assert conv3d_block._conv3d.strides == (1, 1, 1)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
242
    assert conv3d_block._conv3d.padding == "same"
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
243
    assert conv3d_block._conv3d.use_bias is False
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
244
245
    assert isinstance(conv3d_block._norm._norm, tf.keras.layers.BatchNormalization)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _norm was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
246
247
248
def test_local_net_upsample_resnet_block():
249
    """
250
    Test the layer.LocalNetUpSampleResnetBlock class,
251
    its default attributes and its call() function.
252
    """
253
    batch_size = 5
254
    channels = 4
255
    input_size = (32, 32, 16)
256
    output_size = (64, 64, 32)
257
258
    nonskip_tensor_size = (batch_size,) + input_size + (channels,)
259
    skip_tensor_size = (batch_size,) + output_size + (channels,)
260
261
    # Test __init__() and build()
262
    model = layer.LocalNetUpSampleResnetBlock(8)
263
    model.build([nonskip_tensor_size, skip_tensor_size])
264
265
    assert model._filters == 8
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _filters was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
266
    assert model._use_additive_upsampling is True
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _use_additive_upsampling was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
267
268
    assert isinstance(model._deconv3d_block, layer.Deconv3dBlock)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _deconv3d_block was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
269
    assert isinstance(model._additive_upsampling, layer.AdditiveUpSampling)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _additive_upsampling was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
270
    assert isinstance(model._conv3d_block, layer.Conv3dBlock)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _conv3d_block was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
271
    assert isinstance(model._residual_block, layer.LocalNetResidual3dBlock)
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _residual_block was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
272
273
274
class TestResizeCPTransform:
0 ignored issues
show
introduced by
Missing class docstring
Loading history...
275
    @pytest.mark.parametrize(
276
        "parameter,cp_spacing", [((8, 8, 8), 8), ((8, 24, 16), (8, 24, 16))]
277
    )
0 ignored issues
show
introduced by
Missing function or method docstring
Loading history...
278
    def test_attributes(self, parameter, cp_spacing):
279
        model = layer.ResizeCPTransform(cp_spacing)
280
281
        if isinstance(cp_spacing, int):
282
            cp_spacing = [cp_spacing] * 3
283
        assert list(model.cp_spacing) == list(parameter)
284
        assert model.kernel_sigma == [0.44 * cp for cp in cp_spacing]
285
286
    @pytest.mark.parametrize(
287
        "input_size,output_size,cp_spacing",
288
        [
289
            ((1, 8, 8, 8, 3), (12, 8, 12), (8, 16, 8)),
290
            ((1, 8, 8, 8, 3), (12, 12, 12), 8),
291
        ],
0 ignored issues
show
introduced by
Missing function or method docstring
Loading history...
292
    )
293
    def test_build(self, input_size, output_size, cp_spacing):
294
        model = layer.ResizeCPTransform(cp_spacing)
295
        model.build(input_size)
296
297
        assert [a == b for a, b, in zip(model._output_shape, output_size)]
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like _output_shape was declared protected and should not be accessed from this context.

Prefixing a member variable _ is usually regarded as the equivalent of declaring it with protected visibility that exists in other languages. Consequentially, such a member should only be accessed from the same class or a child class:

class MyParent:
    def __init__(self):
        self._x = 1;
        self.y = 2;

class MyChild(MyParent):
    def some_method(self):
        return self._x    # Ok, since accessed from a child class

class AnotherClass:
    def some_method(self, instance_of_my_child):
        return instance_of_my_child._x   # Would be flagged as AnotherClass is not
                                         # a child class of MyParent
Loading history...
298
299
    @pytest.mark.parametrize(
300
        "input_size,output_size,cp_spacing",
301
        [
302
            ((1, 68, 68, 68, 3), (1, 12, 8, 12, 3), (8, 16, 8)),
303
            ((1, 68, 68, 68, 3), (1, 12, 12, 12, 3), 8),
304
        ],
0 ignored issues
show
introduced by
Missing function or method docstring
Loading history...
305
    )
306
    def test_call(self, input_size, output_size, cp_spacing):
307
        model = layer.ResizeCPTransform(cp_spacing)
308
        model.build(input_size)
309
310
        input = tf.random.normal(shape=input_size, dtype=tf.float32)
0 ignored issues
show
Bug Best Practice introduced by
This seems to re-define the built-in input.

It is generally discouraged to redefine built-ins as this makes code very hard to read.

Loading history...
311
        output = model(input)
312
313
        assert output.shape == output_size
314
315
316
class TestBSplines3DTransform:
317
    """
318
    Test the layer.BSplines3DTransform class,
319
    its default attributes and its call() function.
320
    """
321
322
    @pytest.mark.parametrize(
323
        "input_size,cp",
324
        [((1, 8, 8, 8, 3), 8), ((1, 8, 8, 8, 3), (8, 16, 12))],
325
    )
0 ignored issues
show
introduced by
Missing function or method docstring
Loading history...
326
    def test_init(self, input_size, cp):
327
        model = layer.BSplines3DTransform(cp, input_size[1:-1])
328
329
        if isinstance(cp, int):
330
            cp = (cp, cp, cp)
331
332
        assert model.cp_spacing == cp
333
334
    @pytest.mark.parametrize(
335
        "input_size,cp",
336
        [((1, 8, 8, 8, 3), (8, 8, 8)), ((1, 8, 8, 8, 3), (8, 16, 12))],
337
    )
0 ignored issues
show
introduced by
Missing function or method docstring
Loading history...
338
    def generate_filter_coefficients(self, cp_spacing):
339
340
        b = {
341
            0: lambda u: np.float64((1 - u) ** 3 / 6),
342
            1: lambda u: np.float64((3 * (u ** 3) - 6 * (u ** 2) + 4) / 6),
343
            2: lambda u: np.float64((-3 * (u ** 3) + 3 * (u ** 2) + 3 * u + 1) / 6),
344
            3: lambda u: np.float64(u ** 3 / 6),
345
        }
346
347
        filters = np.zeros(
348
            (
349
                4 * cp_spacing[0],
350
                4 * cp_spacing[1],
351
                4 * cp_spacing[2],
352
                3,
353
                3,
354
            ),
355
            dtype=np.float32,
356
        )
357
358
        for u in range(cp_spacing[0]):
0 ignored issues
show
unused-code introduced by
Too many nested blocks (7/5)
Loading history...
359
            for v in range(cp_spacing[1]):
360
                for w in range(cp_spacing[2]):
361
                    for x in range(4):
362
                        for y in range(4):
363
                            for z in range(4):
364
                                for it_dim in range(3):
365
                                    u_norm = 1 - (u + 0.5) / cp_spacing[0]
366
                                    v_norm = 1 - (v + 0.5) / cp_spacing[1]
367
                                    w_norm = 1 - (w + 0.5) / cp_spacing[2]
368
                                    filters[
369
                                        x * cp_spacing[0] + u,
370
                                        y * cp_spacing[1] + v,
371
                                        z * cp_spacing[2] + w,
372
                                        it_dim,
373
                                        it_dim,
374
                                    ] = (
375
                                        b[x](u_norm) * b[y](v_norm) * b[z](w_norm)
376
                                    )
377
        return filters
378
379
    @pytest.mark.parametrize(
380
        "input_size,cp",
381
        [((1, 8, 8, 8, 3), (8, 8, 8)), ((1, 8, 8, 8, 3), (8, 16, 12))],
382
    )
0 ignored issues
show
introduced by
Missing function or method docstring
Loading history...
383
    def test_build(self, input_size, cp):
384
        model = layer.BSplines3DTransform(cp, input_size[1:-1])
385
386
        model.build(input_size)
387
        assert model.filter.shape == (
388
            4 * cp[0],
389
            4 * cp[1],
390
            4 * cp[2],
391
            3,
392
            3,
393
        )
394
395
    @pytest.mark.parametrize(
396
        "input_size,cp",
397
        [((1, 8, 8, 8, 3), (8, 8, 8)), ((1, 8, 8, 8, 3), (8, 16, 12))],
398
    )
0 ignored issues
show
introduced by
Missing function or method docstring
Loading history...
399
    def test_coefficients(self, input_size, cp):
400
401
        filters = self.generate_filter_coefficients(cp_spacing=cp)
402
403
        model = layer.BSplines3DTransform(cp, input_size[1:-1])
404
        model.build(input_size)
405
406
        assert np.allclose(filters, model.filter.numpy(), atol=1e-8)
407
408
    @pytest.mark.parametrize(
409
        "input_size,cp",
410
        [((1, 8, 8, 8, 3), (8, 8, 8)), ((1, 8, 8, 8, 3), (8, 16, 12))],
411
    )
0 ignored issues
show
introduced by
Missing function or method docstring
Loading history...
412
    def test_interpolation(self, input_size, cp):
413
        model = layer.BSplines3DTransform(cp, input_size[1:-1])
414
        model.build(input_size)
415
416
        vol_shape = input_size[1:-1]
417
        num_cp = (
418
            [input_size[0]]
419
            + [int(np.ceil(isize / cpsize) + 3) for isize, cpsize in zip(vol_shape, cp)]
420
            + [input_size[-1]]
421
        )
422
423
        field = tf.random.normal(shape=num_cp, dtype=tf.float32)
424
425
        ddf = model.call(field)
426
        assert ddf.shape == input_size
427