c_nifti 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (172) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +37 -0
  3. data/.rspec +2 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/COPYING +621 -0
  7. data/COPYING.lesser +166 -0
  8. data/Gemfile +4 -0
  9. data/README.md +117 -0
  10. data/Rakefile +6 -0
  11. data/c_nifti.gemspec +31 -0
  12. data/ext/nifticlib/extconf.rb +30 -0
  13. data/ext/nifticlib/include/nifti_image.h +2 -0
  14. data/ext/nifticlib/include/nifti_image_converters.h +3 -0
  15. data/ext/nifticlib/include/nifti_image_dimensions.h +1 -0
  16. data/ext/nifticlib/include/nifti_image_intents.h +1 -0
  17. data/ext/nifticlib/include/nifti_image_metadata.h +1 -0
  18. data/ext/nifticlib/include/nifti_image_quaternions.h +1 -0
  19. data/ext/nifticlib/include/nifti_image_spacings.h +1 -0
  20. data/ext/nifticlib/include/nifti_image_timings.h +1 -0
  21. data/ext/nifticlib/include/nifti_image_transforms.h +1 -0
  22. data/ext/nifticlib/nifti_image.c +169 -0
  23. data/ext/nifticlib/nifti_image_converters.c +65 -0
  24. data/ext/nifticlib/nifti_image_dimensions.c +113 -0
  25. data/ext/nifticlib/nifti_image_intents.c +45 -0
  26. data/ext/nifticlib/nifti_image_metadata.c +133 -0
  27. data/ext/nifticlib/nifti_image_quaternions.c +59 -0
  28. data/ext/nifticlib/nifti_image_spacings.c +87 -0
  29. data/ext/nifticlib/nifti_image_timings.c +66 -0
  30. data/ext/nifticlib/nifti_image_transforms.c +38 -0
  31. data/ext/nifticlib/nifticlib-2.0.0/CMakeLists.txt +140 -0
  32. data/ext/nifticlib/nifticlib-2.0.0/CTestConfig.cmake +13 -0
  33. data/ext/nifticlib/nifticlib-2.0.0/LICENSE +9 -0
  34. data/ext/nifticlib/nifticlib-2.0.0/Makefile +265 -0
  35. data/ext/nifticlib/nifticlib-2.0.0/Makefile.cross_mingw32 +94 -0
  36. data/ext/nifticlib/nifticlib-2.0.0/README +79 -0
  37. data/ext/nifticlib/nifticlib-2.0.0/Testing/CMakeLists.txt +7 -0
  38. data/ext/nifticlib/nifticlib-2.0.0/Testing/Data/ATestReferenceImageForReadingAndWriting.nii.gz +0 -0
  39. data/ext/nifticlib/nifticlib-2.0.0/Testing/Makefile +21 -0
  40. data/ext/nifticlib/nifticlib-2.0.0/Testing/README_regress +50 -0
  41. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/@show.diffs +33 -0
  42. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/@test +80 -0
  43. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/CMakeLists.txt +47 -0
  44. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/cmake_testscripts/bricks_test.sh +32 -0
  45. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/cmake_testscripts/comment_test.sh +65 -0
  46. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/cmake_testscripts/dci_test.sh +46 -0
  47. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/cmake_testscripts/dsets_test.sh +61 -0
  48. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/cmake_testscripts/dts_test.sh +75 -0
  49. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/cmake_testscripts/fetch_data_test.sh +45 -0
  50. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/cmake_testscripts/mod_header_test.sh +60 -0
  51. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/cmake_testscripts/newfiles_test.sh +36 -0
  52. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/commands/c01.versions +10 -0
  53. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/commands/c02.nt.help +5 -0
  54. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/commands/c03.hist +5 -0
  55. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/commands/c04.disp.anat0.info +7 -0
  56. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/commands/c05.mod.hdr +9 -0
  57. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/commands/c06.add.ext +22 -0
  58. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/commands/c07.cbl.4bricks +8 -0
  59. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/commands/c08.dts.19.36.11 +4 -0
  60. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/commands/c09.dts4.compare +9 -0
  61. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/commands/c10.dci.ts4 +15 -0
  62. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/commands/c10a.dci.run.210 +16 -0
  63. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/commands/c11.add.comment +8 -0
  64. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/commands/c12.check.comments +7 -0
  65. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/commands/c13.check.hdrs +5 -0
  66. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/commands/c14.make.dsets +21 -0
  67. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/commands/c15.new.files +21 -0
  68. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/commands/c16.rand.swap +35 -0
  69. data/ext/nifticlib/nifticlib-2.0.0/Testing/nifti_regress_test/commands/c17.file.case +34 -0
  70. data/ext/nifticlib/nifticlib-2.0.0/Testing/niftilib/CMakeLists.txt +15 -0
  71. data/ext/nifticlib/nifticlib-2.0.0/Testing/niftilib/nifti_test.c +690 -0
  72. data/ext/nifticlib/nifticlib-2.0.0/Testing/niftilib/nifti_test2.c +32 -0
  73. data/ext/nifticlib/nifticlib-2.0.0/Updates.txt +110 -0
  74. data/ext/nifticlib/nifticlib-2.0.0/bin/.gitkeep +0 -0
  75. data/ext/nifticlib/nifticlib-2.0.0/docs/Doxy_nifti.txt +123 -0
  76. data/ext/nifticlib/nifticlib-2.0.0/docs/Doxyfile.ORIG +746 -0
  77. data/ext/nifticlib/nifticlib-2.0.0/examples/CMakeLists.txt +15 -0
  78. data/ext/nifticlib/nifticlib-2.0.0/examples/Makefile +48 -0
  79. data/ext/nifticlib/nifticlib-2.0.0/examples/clib_01_read_write.c +94 -0
  80. data/ext/nifticlib/nifticlib-2.0.0/examples/fsl_api_driver.c +142 -0
  81. data/ext/nifticlib/nifticlib-2.0.0/fsliolib/CMakeLists.txt +32 -0
  82. data/ext/nifticlib/nifticlib-2.0.0/fsliolib/Makefile +29 -0
  83. data/ext/nifticlib/nifticlib-2.0.0/fsliolib/fslio.c +2426 -0
  84. data/ext/nifticlib/nifticlib-2.0.0/fsliolib/fslio.tcl +83 -0
  85. data/ext/nifticlib/nifticlib-2.0.0/fsliolib/imcp +65 -0
  86. data/ext/nifticlib/nifticlib-2.0.0/fsliolib/imglob +59 -0
  87. data/ext/nifticlib/nifticlib-2.0.0/fsliolib/imln +37 -0
  88. data/ext/nifticlib/nifticlib-2.0.0/fsliolib/immv +64 -0
  89. data/ext/nifticlib/nifticlib-2.0.0/fsliolib/imrm +29 -0
  90. data/ext/nifticlib/nifticlib-2.0.0/fsliolib/imtest +53 -0
  91. data/ext/nifticlib/nifticlib-2.0.0/fsliolib/remove_ext +33 -0
  92. data/ext/nifticlib/nifticlib-2.0.0/include/.gitkeep +0 -0
  93. data/ext/nifticlib/nifticlib-2.0.0/nifticdf/CMakeLists.txt +28 -0
  94. data/ext/nifticlib/nifticlib-2.0.0/nifticdf/Makefile +28 -0
  95. data/ext/nifticlib/nifticlib-2.0.0/nifticdf/nifticdf.c +11107 -0
  96. data/ext/nifticlib/nifticlib-2.0.0/niftilib/CMakeLists.txt +33 -0
  97. data/ext/nifticlib/nifticlib-2.0.0/niftilib/Makefile +31 -0
  98. data/ext/nifticlib/nifticlib-2.0.0/niftilib/nifti1_io.c +7509 -0
  99. data/ext/nifticlib/nifticlib-2.0.0/packaging/DevPackage.template +18 -0
  100. data/ext/nifticlib/nifticlib-2.0.0/packaging/nifticlib.spec +62 -0
  101. data/ext/nifticlib/nifticlib-2.0.0/real_easy/nifti1_read_write.c +361 -0
  102. data/ext/nifticlib/nifticlib-2.0.0/utils/CMakeLists.txt +73 -0
  103. data/ext/nifticlib/nifticlib-2.0.0/utils/Makefile +55 -0
  104. data/ext/nifticlib/nifticlib-2.0.0/utils/nifti1_test.c +95 -0
  105. data/ext/nifticlib/nifticlib-2.0.0/utils/nifti_stats.c +95 -0
  106. data/ext/nifticlib/nifticlib-2.0.0/utils/nifti_tool.c +4193 -0
  107. data/ext/nifticlib/nifticlib-2.0.0/utils/nifti_tool.h +163 -0
  108. data/ext/nifticlib/nifticlib-2.0.0/znzlib/CMakeLists.txt +31 -0
  109. data/ext/nifticlib/nifticlib-2.0.0/znzlib/Makefile +33 -0
  110. data/ext/nifticlib/nifticlib-2.0.0/znzlib/znzlib.c +322 -0
  111. data/ext/nifticlib/nifticlib.c +107 -0
  112. data/ext/nifticlib/patches/nifticlib_fpic.patch +13 -0
  113. data/features/read_modify_write.feature +11 -0
  114. data/features/step_definitions/nifti_image_steps.rb +16 -0
  115. data/features/support/env.rb +14 -0
  116. data/features/support/fixtures/sample.nii.gz +0 -0
  117. data/lib/c_nifti.rb +9 -0
  118. data/lib/c_nifti/data.rb +70 -0
  119. data/lib/c_nifti/header.rb +16 -0
  120. data/lib/c_nifti/header_element.rb +13 -0
  121. data/lib/c_nifti/header_element/datatype.rb +49 -0
  122. data/lib/c_nifti/header_element/datatype/base.rb +9 -0
  123. data/lib/c_nifti/header_element/datatype/binary.rb +11 -0
  124. data/lib/c_nifti/header_element/datatype/double.rb +11 -0
  125. data/lib/c_nifti/header_element/datatype/float.rb +11 -0
  126. data/lib/c_nifti/header_element/datatype/long_double.rb +11 -0
  127. data/lib/c_nifti/header_element/datatype/long_long.rb +11 -0
  128. data/lib/c_nifti/header_element/datatype/signed_char.rb +11 -0
  129. data/lib/c_nifti/header_element/datatype/signed_int.rb +11 -0
  130. data/lib/c_nifti/header_element/datatype/signed_short.rb +11 -0
  131. data/lib/c_nifti/header_element/datatype/unsigned_char.rb +11 -0
  132. data/lib/c_nifti/header_element/datatype/unsigned_int.rb +11 -0
  133. data/lib/c_nifti/header_element/datatype/unsigned_long_long.rb +11 -0
  134. data/lib/c_nifti/header_element/datatype/unsigned_short.rb +11 -0
  135. data/lib/c_nifti/header_element/dimensions.rb +53 -0
  136. data/lib/c_nifti/header_element/intents.rb +25 -0
  137. data/lib/c_nifti/header_element/metadata.rb +49 -0
  138. data/lib/c_nifti/header_element/miscellaneous.rb +25 -0
  139. data/lib/c_nifti/header_element/quaternions.rb +33 -0
  140. data/lib/c_nifti/header_element/spacings.rb +45 -0
  141. data/lib/c_nifti/header_element/timings.rb +37 -0
  142. data/lib/c_nifti/header_element/transforms.rb +21 -0
  143. data/lib/c_nifti/image.rb +31 -0
  144. data/lib/c_nifti/version.rb +3 -0
  145. data/lib/nifticlib.rb +1 -0
  146. data/spec/data_spec.rb +112 -0
  147. data/spec/factories/nifti_images.rb +9 -0
  148. data/spec/header_element/datatype/base_spec.rb +9 -0
  149. data/spec/header_element/datatype/binary_spec.rb +9 -0
  150. data/spec/header_element/datatype/double_spec.rb +9 -0
  151. data/spec/header_element/datatype/float_spec.rb +9 -0
  152. data/spec/header_element/datatype/long_double_spec.rb +9 -0
  153. data/spec/header_element/datatype/long_long_spec.rb +9 -0
  154. data/spec/header_element/datatype/signed_char_spec.rb +9 -0
  155. data/spec/header_element/datatype/signed_int_spec.rb +9 -0
  156. data/spec/header_element/datatype/signed_short_spec.rb +9 -0
  157. data/spec/header_element/datatype/unsigned_char_spec.rb +9 -0
  158. data/spec/header_element/datatype/unsigned_int_spec.rb +9 -0
  159. data/spec/header_element/datatype/unsigned_long_long.rb +9 -0
  160. data/spec/header_element/datatype/unsigned_short_spec.rb +9 -0
  161. data/spec/header_element/datatype_spec.rb +109 -0
  162. data/spec/header_element/dimensions_spec.rb +105 -0
  163. data/spec/header_element/intents_spec.rb +48 -0
  164. data/spec/header_element/metadata_spec.rb +96 -0
  165. data/spec/header_element/miscellaneous_spec.rb +48 -0
  166. data/spec/header_element/quaternions_spec.rb +64 -0
  167. data/spec/header_element/spacings_spec.rb +88 -0
  168. data/spec/header_element/timings_spec.rb +72 -0
  169. data/spec/header_element/transforms_spec.rb +64 -0
  170. data/spec/image_spec.rb +39 -0
  171. data/spec/spec_helper.rb +85 -0
  172. metadata +363 -0
@@ -0,0 +1,11 @@
1
+ require 'c_nifti/header_element/datatype/base'
2
+
3
+ module CNifti
4
+ module HeaderElement
5
+ module Datatype
6
+ class UnsignedChar < Base
7
+ def self.to_i; 2; end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'c_nifti/header_element/datatype/base'
2
+
3
+ module CNifti
4
+ module HeaderElement
5
+ module Datatype
6
+ class UnsignedInt < Base
7
+ def self.to_i; 768; end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'c_nifti/header_element/datatype/base'
2
+
3
+ module CNifti
4
+ module HeaderElement
5
+ module Datatype
6
+ class UnsignedLongLong < Base
7
+ def self.to_i; 1280; end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'c_nifti/header_element/datatype/base'
2
+
3
+ module CNifti
4
+ module HeaderElement
5
+ module Datatype
6
+ class UnsignedShort < Base
7
+ def self.to_i; 512; end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,53 @@
1
+ module CNifti
2
+ module HeaderElement
3
+ module Dimensions
4
+ def ndim
5
+ @nifti_image.ndim
6
+ end
7
+
8
+ def nvox
9
+ @nifti_image.nvox
10
+ end
11
+
12
+ def nx
13
+ @nifti_image.nx
14
+ end
15
+
16
+ def ny
17
+ @nifti_image.ny
18
+ end
19
+
20
+ def nz
21
+ @nifti_image.nz
22
+ end
23
+
24
+ def nt
25
+ @nifti_image.nt
26
+ end
27
+
28
+ def nu
29
+ @nifti_image.nu
30
+ end
31
+
32
+ def nv
33
+ @nifti_image.nv
34
+ end
35
+
36
+ def nw
37
+ @nifti_image.nw
38
+ end
39
+
40
+ def dim
41
+ @nifti_image.dim
42
+ end
43
+
44
+ def nbyper
45
+ @nifti_image.nbyper
46
+ end
47
+
48
+ def datatype
49
+ CNifti::HeaderElement::Datatype.to_datatype(@nifti_image.datatype)
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,25 @@
1
+ module CNifti
2
+ module HeaderElement
3
+ module Intents
4
+ def intent_code
5
+ @nifti_image.intent_code
6
+ end
7
+
8
+ def intent_p1
9
+ @nifti_image.intent_p1
10
+ end
11
+
12
+ def intent_p2
13
+ @nifti_image.intent_p2
14
+ end
15
+
16
+ def intent_p3
17
+ @nifti_image.intent_p3
18
+ end
19
+
20
+ def intent_name
21
+ @nifti_image.intent_name
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,49 @@
1
+ module CNifti
2
+ module HeaderElement
3
+ module Metadata
4
+ def description
5
+ @nifti_image.descrip
6
+ end
7
+
8
+ def description=(value)
9
+ @nifti_image.descrip = value
10
+ end
11
+
12
+ def aux_file
13
+ @nifti_image.aux_file
14
+ end
15
+
16
+ def aux_file=(value)
17
+ @nifti_image.aux_file = value
18
+ end
19
+
20
+ def file_name
21
+ @nifti_image.fname
22
+ end
23
+
24
+ def file_name=(value)
25
+ @nifti_image.filenames = value # This actually sets iname and iname_offset as well
26
+ end
27
+
28
+ def image_name
29
+ @nifti_image.iname
30
+ end
31
+
32
+ def image_name_offset
33
+ @nifti_image.iname_offset
34
+ end
35
+
36
+ def swapsize
37
+ @nifti_image.swapsize
38
+ end
39
+
40
+ def byteorder
41
+ @nifti_image.byteorder
42
+ end
43
+
44
+ def analyze75_orient
45
+ @nifti_image.analyze75_orient
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,25 @@
1
+ module CNifti
2
+ module HeaderElement
3
+ module Miscellaneous
4
+ def scl_slope
5
+ @nifti_image.scl_slope
6
+ end
7
+
8
+ def scl_inter
9
+ @nifti_image.scl_inter
10
+ end
11
+
12
+ def cal_min
13
+ @nifti_image.cal_min
14
+ end
15
+
16
+ def cal_max
17
+ @nifti_image.cal_max
18
+ end
19
+
20
+ def type
21
+ @nifti_image.nifti_type
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,33 @@
1
+ module CNifti
2
+ module HeaderElement
3
+ module Quaternions
4
+ def quatern_b
5
+ @nifti_image.quatern_b
6
+ end
7
+
8
+ def quatern_c
9
+ @nifti_image.quatern_c
10
+ end
11
+
12
+ def quatern_d
13
+ @nifti_image.quatern_d
14
+ end
15
+
16
+ def qoffset_x
17
+ @nifti_image.qoffset_x
18
+ end
19
+
20
+ def qoffset_y
21
+ @nifti_image.qoffset_y
22
+ end
23
+
24
+ def qoffset_z
25
+ @nifti_image.qoffset_z
26
+ end
27
+
28
+ def qfac
29
+ @nifti_image.qfac
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,45 @@
1
+ module CNifti
2
+ module HeaderElement
3
+ module Spacings
4
+ def dx
5
+ @nifti_image.dx
6
+ end
7
+
8
+ def dy
9
+ @nifti_image.dy
10
+ end
11
+
12
+ def dz
13
+ @nifti_image.dz
14
+ end
15
+
16
+ def dt
17
+ @nifti_image.dt
18
+ end
19
+
20
+ def du
21
+ @nifti_image.du
22
+ end
23
+
24
+ def dv
25
+ @nifti_image.dv
26
+ end
27
+
28
+ def dw
29
+ @nifti_image.dw
30
+ end
31
+
32
+ def pixel_dimensions
33
+ @nifti_image.pixdim
34
+ end
35
+
36
+ def qform_code
37
+ @nifti_image.qform_code
38
+ end
39
+
40
+ def sform_code
41
+ @nifti_image.sform_code
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,37 @@
1
+ module CNifti
2
+ module HeaderElement
3
+ module Timings
4
+ def freq_dim
5
+ @nifti_image.freq_dim
6
+ end
7
+
8
+ def phase_dim
9
+ @nifti_image.phase_dim
10
+ end
11
+
12
+ def slice_dim
13
+ @nifti_image.slice_dim
14
+ end
15
+
16
+ def slice_code
17
+ @nifti_image.slice_code
18
+ end
19
+
20
+ def slice_start
21
+ @nifti_image.slice_start
22
+ end
23
+
24
+ def slice_end
25
+ @nifti_image.slice_end
26
+ end
27
+
28
+ def slice_duration
29
+ @nifti_image.slice_duration
30
+ end
31
+
32
+ def toffset
33
+ @nifti_image.toffset
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,21 @@
1
+ module CNifti
2
+ module HeaderElement
3
+ module Transforms
4
+ def qto_xyz
5
+ @nifti_image.qto_xyz
6
+ end
7
+
8
+ def qto_ijk
9
+ @nifti_image.qto_ijk
10
+ end
11
+
12
+ def sto_xyz
13
+ @nifti_image.sto_xyz
14
+ end
15
+
16
+ def sto_ijk
17
+ @nifti_image.sto_ijk
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,31 @@
1
+ require 'nifticlib'
2
+
3
+ module CNifti
4
+ class Image
5
+ attr_reader :header, :data
6
+
7
+ def initialize(attributes={dimensions: [1, 1], datatype: HeaderElement::Datatype::SignedInt})
8
+ @nifti_image = NIfTICLib::NIfTIImage.new(([attributes[:dimensions].count] + attributes[:dimensions]), # The first element is the dimensions count which is concatenated to the actual dimensions
9
+ attributes[:datatype].to_i, # Integer datatype
10
+ 1) # Always initialize the data
11
+
12
+ @header = Header.new(@nifti_image)
13
+ @data = Data.new(@nifti_image)
14
+ end
15
+
16
+ def open(path)
17
+ @nifti_image = NIfTICLib.read(path)
18
+
19
+ @header = Header.new(@nifti_image)
20
+ @data = Data.new(@nifti_image)
21
+
22
+ self
23
+ end
24
+
25
+ def save_as(path)
26
+ NIfTICLib.write(@nifti_image, path)
27
+
28
+ return true
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,3 @@
1
+ module CNifti
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1 @@
1
+ require 'nifticlib/nifticlib'
@@ -0,0 +1,112 @@
1
+ require 'spec_helper'
2
+
3
+ describe CNifti::Data do
4
+ let!(:nifti_image) { FactoryGirl.build(:nifti_image) }
5
+ subject { CNifti::Data.new(nifti_image) }
6
+
7
+ describe 'raw' do
8
+ it 'is expected call the data method from NIfTICLib::NIfTIImage' do
9
+ nifti_image.expects(:data).returns([4])
10
+
11
+ expect(subject.raw).to eq([4])
12
+ end
13
+ end
14
+
15
+ describe 'get_raw' do
16
+ it 'is expected call the get_data method from NIfTICLib::NIfTIImage' do
17
+ nifti_image.expects(:get_data).with(0).returns(4)
18
+
19
+ expect(subject.get_raw(0)).to eq(4)
20
+ end
21
+ end
22
+
23
+ describe 'set_raw' do
24
+ it 'is expected call the set_data method from NIfTICLib::NIfTIImage' do
25
+ nifti_image.expects(:set_data).with(0, 4).returns(4)
26
+
27
+ expect(subject.set_raw(0,4)).to eq(4)
28
+ end
29
+ end
30
+
31
+ describe 'shape' do
32
+ let!(:dim) { [2, 3, 3] }
33
+
34
+ before :each do
35
+ nifti_image.stubs(:dim).returns(dim)
36
+ end
37
+
38
+ it 'is expected call the set_data method from NIfTICLib::NIfTIImage' do
39
+ expect(subject.shape).to eq(dim[1..-1])
40
+ end
41
+ end
42
+
43
+ describe '[]' do
44
+ let!(:shape) { [3, 3] }
45
+
46
+ before :each do
47
+ nifti_image.stubs(:shape).returns(shape)
48
+ end
49
+
50
+ context 'with an index over bounds' do
51
+ let(:index) {3}
52
+
53
+ it 'is expected to raise a IndexError' do
54
+ expect{ subject[index] }.to raise_error(IndexError)
55
+ end
56
+ end
57
+
58
+ context 'with valid index' do
59
+ context 'with the last dimension' do
60
+ context 'with a Range' do
61
+ let(:index) { 0..1 }
62
+
63
+ it 'is expected to return a array' do
64
+ expect(subject[0][index]).to be_a(Array)
65
+ end
66
+ end
67
+
68
+ context 'with a Fixnum' do
69
+ let(:index) {2}
70
+
71
+ it 'is expected to return a Value' do
72
+ expect(subject[0][index]).to eq(0)
73
+ end
74
+ end
75
+ end
76
+
77
+ context 'with a intermediary dimension' do
78
+ let(:index) {2}
79
+
80
+ it 'is expected to return a Data instance' do
81
+ expect(subject[index]).to be_a(CNifti::Data)
82
+ end
83
+ end
84
+ end
85
+ end
86
+
87
+ describe '[]=' do
88
+ let!(:shape) { [3, 3] }
89
+
90
+ before :each do
91
+ nifti_image.stubs(:shape).returns(shape)
92
+ end
93
+
94
+ context 'with the last dimension' do
95
+ context 'with a Fixnum' do
96
+ let(:index) {2}
97
+
98
+ it 'is expected to return a Value' do
99
+ expect(subject[0][index] = 2).to eq(2)
100
+ end
101
+ end
102
+ end
103
+
104
+ context 'with a intermediary dimension' do
105
+ let(:index) {2}
106
+
107
+ it 'is expected to raise a IndexError' do
108
+ expect{ subject[index] = 2 }.to raise_error(IndexError)
109
+ end
110
+ end
111
+ end
112
+ end