annotate README @ 487:18f2d55182fd

more dicom-web tests
author Alain Mazy <am@osimis.io>
date Wed, 29 Jun 2022 11:23:33 +0200
parents 91d3dfdae90f
children f96c023ce523
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 Orthanc - A Lightweight, RESTful DICOM Server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2 =============================================
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
5 General Information
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
6 ===================
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
8 This repository contains the integration tests that are used to
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
9 validate Orthanc before each official release, in complement to the
22
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
10 unit tests that are part of the Orthanc core repository. These
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
11 integration tests should be run by the package maintainers of the
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
12 various platforms supported by Orthanc.
19
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
14 General information about Orthanc can be found on its official
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
15 Website: http://www.orthanc-server.com/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
16
174
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 135
diff changeset
17 Prerequisites:
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 135
diff changeset
18 =============
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 135
diff changeset
19
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 135
diff changeset
20 You need Python2.7 installed with the following package
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 135
diff changeset
21 # pip2 install httplib2 Pillow
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 135
diff changeset
22
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 135
diff changeset
23 You also need DCMTK and Dicom3Tools
175
am@osimis.io
parents: 174
diff changeset
24 # sudo apt-get install -y dicom3tools dcmtk libgdcm-tools
19
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
25
22
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
26 Quick-start: Running tests on the localhost
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
27 ===========================================
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
28
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
29 This section explains how to run the integration tests in the simplest
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
30 framework. First, install Orthanc. Then, open 2 command shells and
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
31 run the instructions that follow:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
32
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
33 1. In the first command shell:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
34
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
35 # python ./GenerateConfigurationForTests.py --force
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
36 # Orthanc IntegrationTestsConfiguration.json
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
37
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
38 2. In the second command shell:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
39
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
40 # python ./Tests/Run.py
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
41
176
48cc188ffb09 strip trailing 0 char that appears with some findscu versions
am@osimis.io
parents: 175
diff changeset
42 to run a single test:
48cc188ffb09 strip trailing 0 char that appears with some findscu versions
am@osimis.io
parents: 175
diff changeset
43
48cc188ffb09 strip trailing 0 char that appears with some findscu versions
am@osimis.io
parents: 175
diff changeset
44 # python Tests/Run.py Orthanc.test_findscu_counters
48cc188ffb09 strip trailing 0 char that appears with some findscu versions
am@osimis.io
parents: 175
diff changeset
45
174
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 135
diff changeset
46 To test the worklist plugin
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 135
diff changeset
47 ---------------------------
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 135
diff changeset
48
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 135
diff changeset
49 1. In the first command shell:
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 135
diff changeset
50
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 135
diff changeset
51 # python ./GenerateConfigurationForTests.py --force --plugins /home/.../libModalityWorklists.so
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 135
diff changeset
52 # Orthanc IntegrationTestsConfiguration.json
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 135
diff changeset
53
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 135
diff changeset
54 2. In the second command shell:
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 135
diff changeset
55
456
Alain Mazy <am@osimis.io>
parents: 445
diff changeset
56 # python ./Plugins/Worklists/Run.py
174
d468cbe1b161 added tests for IncomingWorklistRequestFilter
am@osimis.io
parents: 135
diff changeset
57
22
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
58
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
59
19
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
60 Running the tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
61 =================
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
62
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
63 The integration tests are written in Python and are started by the
22
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
64 "./Tests/Run.py" script. The tests will validate some "remote"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
65 instance of Orthanc (whose AET is "ORTHANC") that is assumed to be
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
66 running before the tests are started.
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
67
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
68 To test the DICOM protocol, a second, "local" instance of Orthanc is
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
69 automatically started by the integration tests (its AET is
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
70 "ORTHANCTEST"). This situation is depicted on the following
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
71 illustration:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
72
19
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
73
22
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
74 +--------------------------+ +-----------------------+
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
75 | Local computer | | Remote computer |
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
76 +--------------------------+ HTTP +-----------------------+
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
77 | | 5000 : 8042 | |
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
78 | Run.py <---> ORTHANCTEST <===============> ORTHANC |
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
79 | | 5001 : 4242 | |
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
80 +--------------------------+ DICOM +-----------------------+
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
81
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
82
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
83 Obviously, Orthanc must be installed both on the local and remote
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
84 computers.
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
85
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
86 NB: Of course, the "local" and "remote" computers are allowed be the
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
87 same computer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
88
19
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
89
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
91 1. Configure the remote Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
92 -------------------------------
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
93
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
94 To run the integration tests, you first have to create a configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
95 file for the remote instance of Orthanc. This is done by running the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
96 "./GenerateConfigurationForTests.py" script on the *local*
22
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
97 computer. This script will try and autodetect the proper network
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
98 parameters. For instance (a help is available):
19
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
99
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
100 # ./GenerateConfigurationForTests.py --force
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
101
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
102 This will create the "./IntegrationTestsConfiguration.json"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
103 configuration file that must be copied to the remote computer. Then,
22
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
104 start Orthanc on the remote computer using this configuration file.
19
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
105
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
106 By default, the configuration file will use "ORTHANC" as the AET, 8042
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
107 as the HTTP port, and 4242 as the DICOM port. You can of course
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
108 adapt these parameters by editing the generated configuration file,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
109 if you have special constraints or if the autodetection fails.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
110
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
111
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
112
22
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
113 2. Start the integration tests on the local computer
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
114 ----------------------------------------------------
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
115
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
116 Once the remote instance of Orthanc is up and running, you can start
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
117 the integration tests. You have 2 possibilities: (a) use your local
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
118 computer as is, or (b) use Docker to have the best reproducibility.
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
119
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
120
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
121 (Option 2a) Without Docker:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
122
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
123 # python ./Tests/Run.py
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
124
445
09ebdee8eda2 added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents: 294
diff changeset
125 To run a single test with by fixing the Orthanc 0.8.6 executable path:
09ebdee8eda2 added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents: 294
diff changeset
126 # python2 ./Tests/Run.py --orthanc /home/alain/Releases/Orthanc-0.8.6/Build/Orthanc Orthanc.test_peer_store_straight
09ebdee8eda2 added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents: 294
diff changeset
127
456
Alain Mazy <am@osimis.io>
parents: 445
diff changeset
128 To run a plugin test (no need for Orthanc 0.8.6)
479
91d3dfdae90f fix doc
Alain Mazy <am@osimis.io>
parents: 473
diff changeset
129 # python2 ./Plugins/DicomWeb/Run.py
445
09ebdee8eda2 added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents: 294
diff changeset
130
22
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
131 Use the flag "--help" to get the full list of arguments. These
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
132 arguments will notably allow you to specify the network parameters
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
133 of your remote instance of Orthanc.
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
134
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
135
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
136 (Option 2b) With Docker:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
137
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
138 # sudo docker pull jodogne/orthanc-tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
139 # ./Start.sh
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
141 Note that you will have to grant root access for Docker.
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
142
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
143
294
192665e6113f instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents: 176
diff changeset
144 (Option 2c) On Windows:
192665e6113f instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents: 176
diff changeset
145
192665e6113f instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents: 176
diff changeset
146 Easiest way to run the integration test under windows is actually
192665e6113f instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents: 176
diff changeset
147 run the remote Orthanc and the python script under WSL and run the
192665e6113f instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents: 176
diff changeset
148 orthanc under test on Windows (such that you can debug it).
192665e6113f instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents: 176
diff changeset
149 Note that if Orthanc on Windows is not using the standard port, you
192665e6113f instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents: 176
diff changeset
150 may specify them when starting the test as shown below
192665e6113f instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents: 176
diff changeset
151
192665e6113f instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents: 176
diff changeset
152 # bash
445
09ebdee8eda2 added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents: 294
diff changeset
153 # python2 Tests/Run.py --force --dicom 4242 --rest 8042 --orthanc /home/alain/Releases/Orthanc-0.8.6/Build/Orthanc Orthanc.test_peer_store_straight
294
192665e6113f instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents: 176
diff changeset
154
192665e6113f instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents: 176
diff changeset
155 Note that you will have to install Linux prerequisites under WSL
192665e6113f instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents: 176
diff changeset
156 and the orthanc package as well.
192665e6113f instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents: 176
diff changeset
157
192665e6113f instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents: 176
diff changeset
158
473
4ee85b016a40 added NewTests framework - only the Housekeeper tests right now
Alain Mazy <am@osimis.io>
parents: 456
diff changeset
159 NewTests
4ee85b016a40 added NewTests framework - only the Housekeeper tests right now
Alain Mazy <am@osimis.io>
parents: 456
diff changeset
160 ========
4ee85b016a40 added NewTests framework - only the Housekeeper tests right now
Alain Mazy <am@osimis.io>
parents: 456
diff changeset
161
4ee85b016a40 added NewTests framework - only the Housekeeper tests right now
Alain Mazy <am@osimis.io>
parents: 456
diff changeset
162 Check the README in the NewTests folder for more complex scenarios
4ee85b016a40 added NewTests framework - only the Housekeeper tests right now
Alain Mazy <am@osimis.io>
parents: 456
diff changeset
163 using python3 and a new test framework.
4ee85b016a40 added NewTests framework - only the Housekeeper tests right now
Alain Mazy <am@osimis.io>
parents: 456
diff changeset
164
22
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 19
diff changeset
165
19
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
166 Licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
167 =========
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
168
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
169 The integration tests are licensed under the GPLv3 license. The sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
170 DICOM images contained in the "Database" folder are the property of
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
171 their respective owners, as listed in the "Database/README.txt" file.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
172
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
173 We also kindly ask scientific works and clinical studies that make
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
174 use of Orthanc to cite Orthanc in their associated publications.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
175 Similarly, we ask open-source and closed-source products that make
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
176 use of Orthanc to warn us about this use. You can cite our work
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
177 using the following BibTeX entry:
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
178
135
6943b41eb239 updated bibtex
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
179 @Article{Jodogne2018,
6943b41eb239 updated bibtex
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
180 author="Jodogne, S{\'e}bastien",
6943b41eb239 updated bibtex
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
181 title="The {O}rthanc Ecosystem for Medical Imaging",
6943b41eb239 updated bibtex
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
182 journal="Journal of Digital Imaging",
6943b41eb239 updated bibtex
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
183 year="2018",
6943b41eb239 updated bibtex
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
184 month="May",
6943b41eb239 updated bibtex
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
185 day="03",
6943b41eb239 updated bibtex
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
186 issn="1618-727X",
6943b41eb239 updated bibtex
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
187 doi="10.1007/s10278-018-0082-y",
6943b41eb239 updated bibtex
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 22
diff changeset
188 url="https://doi.org/10.1007/s10278-018-0082-y"
19
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
189 }