<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
</head>
<body>
<p>Hi Inge,</p>
<p><br>
</p>
<p>Thank you for detailing the issue. The difference should come
from the sensitivity image weighing, as for -im case the weighing
depends (among other things) on the duration between two motion
triggers. Using -rm, the sensitivity images for each gate are
simply averaged so it would work only if the motion triggers are
evenly spaced during the acquisition, which is actually the case
with your setup. What I don't understand is why do you get these
artifacts using -im, which should be the proper way to go... Did
you get this problem with the v3.0 version as well ? Or is it just
with the v3.1 version ? If you could upload the data somewhere, I
will have a look.</p>
<p><br>
</p>
<p>Best regards,</p>
<p>Thibaut<br>
</p>
<p><br>
</p>
<p><br>
</p>
<div class="moz-cite-prefix">On 28/09/2020 09:26, Schagt, I.H. van
der wrote:<br>
</div>
<blockquote type="cite"
cite="mid:8accd4ac5c83417cb40caf61bc3b8317@umcutrecht.nl">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
<meta content="text/html; charset=UTF-8">
<style type="text/css" style="">
<!--
p
{margin-top:0;
margin-bottom:0}
-->
</style>
<div dir="ltr">
<div id="x_divtagdefaultwrapper" dir="ltr"
style="font-size:12pt; color:#000000;
font-family:Calibri,Helvetica,sans-serif">
<p>Hello Thibaut,</p>
<p><br>
</p>
<p>I understand your explanation, <span>but it seems to me
that the correction is applied in a different way in
respiratory motion correction than in involuntary motion
correction.</span></p>
<p><span>I have one dataset (PET list mode) of a Nema phantom
that 'moves' in the x-y direction. <span>The phantom is
always in one position for 300s and then it moves in one
moment to another position where it is 300s. This in
total for three positions. (The translation of the
phantom is 2 cm in x- and y-direction). </span></span></p>
<p><span><span>I reconstructed this dataset in two ways: </span></span></p>
<p><span><span>- 1. reconstruction with involuntary motion
correction (-im) where the splitting of the data is done
by timestamps (motion triggers), motion triggers on 0s,
300s and 600s. </span></span></p>
<p><span><span>- 2. Reconstruction with respiratory motion
correction (-rm) where the splitting of the data is done
by gates (respiratory triggers), the data is
<span>split based on how many events belonged to each
phantom position. </span></span></span></p>
<p><span><span><span>In this way, the splitting should take
place on exact the same moment and I used the exact
same deformation file. Furthermore, I used the exact
same attenuation correction map.</span></span></span></p>
<p><span><span><span><br>
</span></span></span></p>
<p><span><span><span><span>But I get different images after
reconstruction (see attached image). <span>The image
of the -im reconstruction differs from the image
of the -rm reconstruction in the places where the
density of the tissue changes when the phantom
moves (outside of phantom and in the middle
cilinder). T<span>hat is why I suspect that
something else happens with the attenuation
correction (sensitivity images) between these
two methods of motion correction.</span></span></span><br>
</span></span></span></p>
<p><br>
</p>
<p><span><span><span><span><span><span>I can imagine this is
quite an extensive story, but I wanted to
explain it well. Hopefully this makes it a
little bit more clear.</span><br>
</span></span></span></span></span></p>
<p><span><span><span><span><span><span><br>
</span></span></span></span></span></span></p>
<p><span><span><span><span><span><span>Kind regards,</span></span></span></span></span></span></p>
<p><span><span><span><span><span><span>Inge</span></span></span></span></span></span></p>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font style="font-size:11pt"
face="Calibri, sans-serif" color="#000000"><b>Van:</b>
Castor-users
<a class="moz-txt-link-rfc2396E" href="mailto:castor-users-bounces@lists.castor-project.org"><castor-users-bounces@lists.castor-project.org></a> namens
<a class="moz-txt-link-abbreviated" href="mailto:castor-users-request@lists.castor-project.org">castor-users-request@lists.castor-project.org</a>
<a class="moz-txt-link-rfc2396E" href="mailto:castor-users-request@lists.castor-project.org"><castor-users-request@lists.castor-project.org></a><br>
<b>Verzonden:</b> donderdag 24 september 2020 11:39:46<br>
<b>Aan:</b> <a class="moz-txt-link-abbreviated" href="mailto:castor-users@lists.castor-project.org">castor-users@lists.castor-project.org</a><br>
<b>Onderwerp:</b> Castor-users Digest, Vol 36, Issue 17</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">Send Castor-users mailing list
submissions to<br>
<a class="moz-txt-link-abbreviated" href="mailto:castor-users@lists.castor-project.org">castor-users@lists.castor-project.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
<a
href="http://lists.castor-project.org/listinfo/castor-users"
moz-do-not-send="true">http://lists.castor-project.org/listinfo/castor-users</a><br>
or, via email, send a message with subject or body 'help' to<br>
<a class="moz-txt-link-abbreviated" href="mailto:castor-users-request@lists.castor-project.org">castor-users-request@lists.castor-project.org</a><br>
<br>
You can reach the person managing the list at<br>
<a class="moz-txt-link-abbreviated" href="mailto:castor-users-owner@lists.castor-project.org">castor-users-owner@lists.castor-project.org</a><br>
<br>
When replying, please edit your Subject line so it is more
specific<br>
than "Re: Contents of Castor-users digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
1. Re: Castor-users Digest, Vol 36, Issue 13 (tmerlin)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Thu, 24 Sep 2020 11:40:03 +0200<br>
From: tmerlin <a class="moz-txt-link-rfc2396E" href="mailto:Thibaut.Merlin@univ-brest.fr"><Thibaut.Merlin@univ-brest.fr></a><br>
To: <a class="moz-txt-link-abbreviated" href="mailto:castor-users@lists.castor-project.org">castor-users@lists.castor-project.org</a><br>
Subject: Re: [Castor-users] Castor-users Digest, Vol 36,
Issue 13<br>
Message-ID:
<a class="moz-txt-link-rfc2396E" href="mailto:9ebf85b5-fdb0-1b58-d5c4-03b4f2f25560@univ-brest.fr"><9ebf85b5-fdb0-1b58-d5c4-03b4f2f25560@univ-brest.fr></a><br>
Content-Type: text/plain; charset="windows-1252";
Format="flowed"<br>
<br>
Hi Inge,<br>
<br>
<br>
I am not sure about what you mean by moving along the
deformations.<br>
<br>
- With involuntary patient motion (-im), a sensitivity image
is computed <br>
for each subset of data between motion triggers. If an
attenuation image <br>
is provided, it is transformed using the "forward"
deformation <br>
parameters. They are then transformed back to the reference
position, <br>
and receive the proper weighing before being merged together
(finally <br>
you get one sensitivity image by frame, or just one image if
you don't <br>
have any frame).<br>
<br>
- The process is similar with motion correction for gating.
One <br>
sensitivity image is computed for each set of transformation
parameters <br>
(i.e, each gate), then they are deformed back into the
reference <br>
position and merged together.<br>
<br>
<br>
During reconstruction, these sensitivity images are always
used on <br>
images transformed back in the reference position.<br>
<br>
<br>
I hope this helps to clarify the process.<br>
<br>
<br>
Thibaut<br>
<br>
<br>
<br>
<br>
On 22/09/2020 18:44, Schagt, I.H. van der wrote:<br>
><br>
> Hello Thibaut,<br>
><br>
><br>
> You are totally right, I enabled
CASToR_BUILD_SAMPLE_UTILITIES in <br>
> Cmake and that worked. I can now build the projects and
do <br>
> reconstructions.<br>
><br>
><br>
> Lastly, I noticed one more thing. When I reconstruct
images with the <br>
> -im option and I use attenuation correction, the
attenuation map <br>
> doesn't move along with the deformations, while this
was the case for <br>
> the -rm option (respiratory motion).<br>
><br>
> Is this the intention and/or is it possible to let the
attenuation map <br>
> move along with the deformations?<br>
><br>
><br>
> Above all, many thanks for your help!<br>
><br>
><br>
> Inge<br>
><br>
>
------------------------------------------------------------------------<br>
> *Van:* Castor-users
<a class="moz-txt-link-rfc2396E" href="mailto:castor-users-bounces@lists.castor-project.org"><castor-users-bounces@lists.castor-project.org></a> <br>
> namens <a class="moz-txt-link-abbreviated" href="mailto:castor-users-request@lists.castor-project.org">castor-users-request@lists.castor-project.org</a> <br>
> <a class="moz-txt-link-rfc2396E" href="mailto:castor-users-request@lists.castor-project.org"><castor-users-request@lists.castor-project.org></a><br>
> *Verzonden:* dinsdag 22 september 2020 10:24:31<br>
> *Aan:* <a class="moz-txt-link-abbreviated" href="mailto:castor-users@lists.castor-project.org">castor-users@lists.castor-project.org</a><br>
> *Onderwerp:* Castor-users Digest, Vol 36, Issue 13<br>
> Send Castor-users mailing list submissions to<br>
> <a class="moz-txt-link-abbreviated" href="mailto:castor-users@lists.castor-project.org">castor-users@lists.castor-project.org</a><br>
><br>
> To subscribe or unsubscribe via the World Wide Web,
visit<br>
> <a
href="http://lists.castor-project.org/listinfo/castor-users"
moz-do-not-send="true">http://lists.castor-project.org/listinfo/castor-users</a><br>
> or, via email, send a message with subject or body
'help' to<br>
> <a class="moz-txt-link-abbreviated" href="mailto:castor-users-request@lists.castor-project.org">castor-users-request@lists.castor-project.org</a><br>
><br>
> You can reach the person managing the list at<br>
> <a class="moz-txt-link-abbreviated" href="mailto:castor-users-owner@lists.castor-project.org">castor-users-owner@lists.castor-project.org</a><br>
><br>
> When replying, please edit your Subject line so it is
more specific<br>
> than "Re: Contents of Castor-users digest..."<br>
><br>
><br>
> Today's Topics:<br>
><br>
> 1. Re: Problems with –im (involuntary patient
motion<br>
> correction) (tmerlin)<br>
><br>
><br>
>
----------------------------------------------------------------------<br>
><br>
> Message: 1<br>
> Date: Tue, 22 Sep 2020 10:24:50 +0200<br>
> From: tmerlin <a class="moz-txt-link-rfc2396E" href="mailto:Thibaut.Merlin@univ-brest.fr"><Thibaut.Merlin@univ-brest.fr></a><br>
> To: <a class="moz-txt-link-abbreviated" href="mailto:castor-users@lists.castor-project.org">castor-users@lists.castor-project.org</a><br>
> Subject: Re: [Castor-users] Problems with –im
(involuntary patient<br>
> motion correction)<br>
> Message-ID:
<a class="moz-txt-link-rfc2396E" href="mailto:6cf8c8f2-aceb-39d4-65d8-d620386cd9d2@univ-brest.fr"><6cf8c8f2-aceb-39d4-65d8-d620386cd9d2@univ-brest.fr></a><br>
> Content-Type: text/plain; charset="windows-1252";
Format="flowed"<br>
><br>
><br>
> Hi Inge,<br>
><br>
><br>
> The building problem might come from the CMake
configuration file, as<br>
> these projects have been relocated (now you must enable<br>
> CASToR_BUILD_SAMPLE_UTILITIES in cmake to build them).
It should not<br>
> have caused issues to build the solution though, so I
will have a closer<br>
> look at it.<br>
><br>
><br>
> Could you try to rebuild the 3.1 version with<br>
> CASToR_BUILD_SAMPLE_UTILITIES enabled ? Alternatively
if there are still<br>
> some issues, you can use the configuration file from
the previous<br>
> version in attachements (to replace the one in the
castor directory).<br>
><br>
><br>
> Let me know if this helps<br>
><br>
><br>
> Kind regards,<br>
><br>
> Thibaut<br>
><br>
><br>
><br>
> On 22/09/2020 09:41, Schagt, I.H. van der wrote:<br>
> ><br>
> > Dear Zacharis,<br>
> ><br>
> ><br>
> > Thank you for your quick response.<br>
> ><br>
> > As for oDynamicDataManager, in the datafile header
a start time and<br>
> > duration are indeed given, these are 0s and 900s
respectively. even<br>
> > though these values are included, the frame time
stop remains 0s when<br>
> > I apply motion correction without framing.<br>
> ><br>
> > I tried the new version of Castor (V3.1), but I
have trouble with<br>
> > configuring and building te program. Configuring
only creates four<br>
> > projects in the solution (all_build,
*castor-recon*, install and<br>
> > zero_check) instead of seven projects (all_build,
*castor-recon*,<br>
> > install, zero_check, *castor-datafileExplorer,<br>
> > castor-imageDynamicTools and
castor-scannerLUTExplorer*) and this<br>
> > causes problems building the solution.<br>
> ><br>
> > As far as configuring and building is concerned, I
did everything the<br>
> > same as with v_3.0.1. I configured Castor with
CMake and tried to<br>
> > build it in Windows Visual Studio.<br>
> ><br>
> > Do you know if the problem with configuring and
building could be with<br>
> > this new version?<br>
> ><br>
> ><br>
> > Kind regards,<br>
> ><br>
> > Inge<br>
> ><br>
> >
------------------------------------------------------------------------<br>
> > *Van:* Chalampalakis, Zacharias
<a class="moz-txt-link-rfc2396E" href="mailto:zacharias.chalampalakis@kcl.ac.uk"><zacharias.chalampalakis@kcl.ac.uk></a><br>
> > *Verzonden:* maandag 21 september 2020 18:21:32<br>
> > *Aan:* Schagt, I.H. van der;
<a class="moz-txt-link-abbreviated" href="mailto:castor-users@lists.castor-project.org">castor-users@lists.castor-project.org</a><br>
> > *Onderwerp:* RE: Problems with –im (involuntary
patient motion<br>
> > correction)<br>
> ><br>
> > Good afternoon Igne<br>
> ><br>
> > Thank you for your email.<br>
> ><br>
> > We actually just released a new version of CASToR
( V3.1 ) which fixed<br>
> > some bugs related to the handling of motion
timestamps.<br>
> ><br>
> > Maybe you could try with this version , if it is
not too difficult ,<br>
> > to check if the behaviour you experience is
related to these bugs ?<br>
> ><br>
> > In the latest version , the /oDynamidDataManager/
will remove all<br>
> > timestamps that occur after the end of the last
frame.<br>
> ><br>
> > Normally the duration of the frame ( even when not
specifying framing<br>
> > ) is set by the *Start time (s) *and *Duration (s)
*entries in the<br>
> > datafile header.<br>
> ><br>
> > Do you have these entries in your datafile header?<br>
> ><br>
> > Kind Regards,<br>
> ><br>
> > Zacharias Chalampalakis<br>
> ><br>
> > *From:*Castor-users
<a class="moz-txt-link-rfc2396E" href="mailto:castor-users-bounces@lists.castor-project.org"><castor-users-bounces@lists.castor-project.org></a><br>
> > *On Behalf Of *Schagt, I.H. van der<br>
> > *Sent:* Monday, September 21, 2020 4:33 PM<br>
> > *To:* <a class="moz-txt-link-abbreviated" href="mailto:castor-users@lists.castor-project.org">castor-users@lists.castor-project.org</a><br>
> > *Subject:* [Castor-users] Problems with –im
(involuntary patient<br>
> > motion correction)<br>
> ><br>
> > Dear all,<br>
> ><br>
> > I am having trouble with motion correction
reconstruction when using<br>
> > the –im option. When I try to apply motion
correction reconstruction I<br>
> > get the error:<br>
> ><br>
> > /Error, the 2th motion trigger timestamp: xxx
occurs after the end of<br>
> > the last frame (frame 1, timestop: 0!/<br>
> ><br>
> > This error occurs in the code in the file
/oDynamicDataManager/ line<br>
> > 413 and arises incorrectly. When I do –im
reconstruction in<br>
> > combination with 1 frame (so no framing), the time
stop value of the<br>
> > frame remains 0s, it is not read from the data
file. As a result, the<br>
> > time steps of the motion triggers are greater than
the time stop value<br>
> > of the frame (line 407) and you will eventually
get an error. When I<br>
> > manually adjust this time stop value to the
correct value myself, this<br>
> > error message goes away, but I get incorrect
reconstructed images. I<br>
> > only get black images after reconstruction where
each voxel has NaN as<br>
> > its value. When I apply the same motion correction
where I also divide<br>
> > the data into, for example, 2 frames (-frm…), I
get correctly<br>
> > reconstructed images.<br>
> ><br>
> > Does anyone of you know why the option –im gives
these weird results,<br>
> > or what I maybe do wrong?<br>
> > I use list-mode PET data with a total duration of
900 seconds. For the<br>
> > motion correction, I used three motion triggers
(and deformations).<br>
> ><br>
> > Thanks in advance!<br>
> ><br>
> > Inge<br>
> ><br>
> >
------------------------------------------------------------------------<br>
> ><br>
> > /De informatie opgenomen in dit bericht kan
vertrouwelijk zijn en is<br>
> > uitsluitend bestemd voor de geadresseerde. Indien
u dit bericht<br>
> > onterecht ontvangt, wordt u verzocht de inhoud
niet te gebruiken en de<br>
> > afzender direct te informeren door het bericht te
retourneren. Het<br>
> > Universitair Medisch Centrum Utrecht is een
publiekrechtelijke<br>
> > rechtspersoon in de zin van de W.H.W. (Wet Hoger
Onderwijs en<br>
> > Wetenschappelijk Onderzoek) en staat geregistreerd
bij de Kamer van<br>
> > Koophandel voor Midden-Nederland onder nr.
30244197. /<br>
> ><br>
> > /Denk s.v.p aan het milieu voor u deze e-mail
afdrukt. /<br>
> ><br>
> >
------------------------------------------------------------------------<br>
> ><br>
> > /This message may contain confidential information
and is intended<br>
> > exclusively for the addressee. If you receive this
message<br>
> > unintentionally, please do not use the contents
but notify the sender<br>
> > immediately by return e-mail. University Medical
Center Utrecht is a<br>
> > legal person by public law and is registered at
the Chamber of<br>
> > Commerce for Midden-Nederland under no. 30244197.
/<br>
> ><br>
> > /Please consider the environment before printing
this e-mail. /<br>
> ><br>
> ><br>
> > _______________________________________________<br>
> > Castor-users mailing list<br>
> > <a class="moz-txt-link-abbreviated" href="mailto:Castor-users@lists.castor-project.org">Castor-users@lists.castor-project.org</a><br>
> > <a
href="http://lists.castor-project.org/listinfo/castor-users"
moz-do-not-send="true">http://lists.castor-project.org/listinfo/castor-users</a><br>
><br>
> -- <br>
> Thibaut MERLIN -- PhD<br>
><br>
> Docteur en Imagerie Médicale au Laboratoire de
Traitement de <br>
> l'Information Medicale (LaTIM - INSERM UMR 1101)<br>
> Institut Brestois de recherche en Bio-Santé (IBRBS)<br>
> 12 Avenue Foch, 29200 Brest, FRANCE<br>
> Tel: 06.75.12.24.90<br>
><br>
> -------------- next part --------------<br>
> An HTML attachment was scrubbed...<br>
> URL: <br>
> <<a
href="http://lists.castor-project.org/pipermail/castor-users/attachments/20200922/6a9155da/attachment.html"
moz-do-not-send="true">http://lists.castor-project.org/pipermail/castor-users/attachments/20200922/6a9155da/attachment.html</a>><br>
> -------------- next part --------------<br>
> # MON 1 Aug 2016 17:02 PM CET<br>
> # Didier Benoit, <a class="moz-txt-link-abbreviated" href="mailto:didier.benoit13@gmail.com">didier.benoit13@gmail.com</a><br>
> # Thibaut Merlin, <a class="moz-txt-link-abbreviated" href="mailto:thibaut.merlin@gmail.com">thibaut.merlin@gmail.com</a><br>
> # CMAKE compiling the CASToR reconstruction software<br>
><br>
> #---------<br>
> # Checking the CMAKE version<br>
> cmake_minimum_required( VERSION 2.8 FATAL_ERROR )<br>
><br>
> #---------<br>
> # Set the build type<br>
> set( CMAKE_BUILD_TYPE "Release" CACHE STRING<br>
> "Choose the type of build, options are: Debug
Release"<br>
> )<br>
><br>
> #---------<br>
> # Defining the project<br>
> project( CASToR )<br>
> set( CMAKE_MODULE_PATH
${PROJECT_SOURCE_DIR}/cmake-modules<br>
> ${CMAKE_MODULE_PATH}<br>
> )<br>
><br>
> #---------<br>
> # Defining a list of option<br>
> option( CASToR_64bits "Build CASToR on 64 bits
architecture" YES )<br>
> option( CASToR_VERBOSE "Print lot of infos from CASToR"
NO )<br>
> option( CASToR_DEBUG "Enable many additionnal checks in
primitive <br>
> functions" NO )<br>
> option( CASToR_BUILD_GATE_UTILITIES "Build GATE tools
for CASToR <br>
> (require ROOT library)" NO )<br>
> option( CASToR_BUILD_SAMPLE_UTILITIES "Build Example
codes (require <br>
> ROOT library)" NO )<br>
> option( CASToR_BUILD_DEVEL "Build devel tools. Must be
left unchecked" <br>
> NO )<br>
> option( CASToR_ROOT "Build CASToR with ROOT library" NO
)<br>
> option( CASToR_SIMD "Build CASToR with SIMD OPTION" NO
)<br>
> option( CASToR_OMP "Build CASToR with OMP" NO )<br>
> option( CASToR_MPI "Build CASToR with MPI" NO )<br>
> # For testing purposes<br>
> #option( CASToR_DEFORMATION_LEDESMA "Build CASToR with
LEDESMA" NO )<br>
> #option( CASToR_ELASTIX "Build CASToR with ELASTIX" NO
)<br>
><br>
><br>
> #---------<br>
> # Find the config file CASToR config<br>
> find_path( CASTOR_CONFIG_DIR oCASToRConfig.hh.in<br>
> ${PROJECT_SOURCE_DIR}<br>
> ${PROJECT_SOURCE_DIR}/include/algorithm<br>
> ${PROJECT_SOURCE_DIR}/include/analytic_simulator<br>
> ${PROJECT_SOURCE_DIR}/include/datafile<br>
> ${PROJECT_SOURCE_DIR}/include/dynamic<br>
> ${PROJECT_SOURCE_DIR}/include/image<br>
> ${PROJECT_SOURCE_DIR}/include/management<br>
> ${PROJECT_SOURCE_DIR}/include/optimizer<br>
> ${PROJECT_SOURCE_DIR}/include/projector<br>
> ${PROJECT_SOURCE_DIR}/include/scanner<br>
> ${PROJECT_SOURCE_DIR}/include/utils<br>
> )<br>
><br>
> #---------<br>
> # Defining configuration files<br>
> configure_file(<br>
> "${CASTOR_CONFIG_DIR}/oCASToRConfig.hh.in"<br>
> "${PROJECT_BINARY_DIR}/oCASToRConfig.hh"<br>
> @ONLY<br>
> )<br>
><br>
> #---------<br>
> # Setting the CASTOR_CONFIG variable<br>
> set( CASTOR_CONFIG ${PROJECT_SOURCE_DIR}/config CACHE
PATH<br>
> "Path to the CASTOR config repository"<br>
> )<br>
><br>
> #---------<br>
> # Setting position of the CASToR utilitaries<br>
> set( TOOLKITS_SOURCE_DIR ${PROJECT_SOURCE_DIR}/toolkits
)<br>
><br>
> # To avoid conflict between the makefile from CMake and
the makefile <br>
> provided<br>
> # by CASToR<br>
> add_definitions( -DCASToR_USE_CMAKE )<br>
><br>
>
########################################################################<br>
> # Provide add_compile_options() when not available<br>
>
########################################################################<br>
> if( CMAKE_VERSION VERSION_LESS "2.8.12" )<br>
> function( add_compile_options )<br>
> add_definitions( ${ARGN} )<br>
> endfunction( add_compile_options )<br>
> endif()<br>
><br>
><br>
> #---------<br>
> # Different option for Windows or Unix (Linux/MacOS)<br>
> if( WIN32 )<br>
><br>
> #---------<br>
> # Delete some flags by default provided by CMAKE<br>
> #---------<br>
> string( REPLACE "/W3" "" CMAKE_CXX_FLAGS
${CMAKE_CXX_FLAGS} )<br>
> string( REPLACE "/O2" "" CMAKE_CXX_FLAGS_RELEASE <br>
> ${CMAKE_CXX_FLAGS_RELEASE} )<br>
> string( REPLACE "/DNDEBUG" "" CMAKE_CXX_FLAGS_RELEASE<br>
> ${CMAKE_CXX_FLAGS_RELEASE}<br>
> )<br>
> string( REPLACE "/MD" "" CMAKE_CXX_FLAGS_RELEASE <br>
> ${CMAKE_CXX_FLAGS_RELEASE} )<br>
> string( REPLACE "/O2" "" CMAKE_CXX_FLAGS_RELEASE <br>
> ${CMAKE_CXX_FLAGS_RELEASE} )<br>
><br>
> # Visual studio flags by default /Ox<br>
> add_compile_options( /MP )<br>
><br>
> #---------<br>
> # Checking for OpenMP<br>
> if( CASToR_OMP )<br>
> find_package( OpenMP REQUIRED )<br>
> set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS}
${OpenMP_C_FLAGS}" )<br>
> set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}
${OpenMP_CXX_FLAGS}" )<br>
> set( CMAKE_EXE_LINKER_FLAGS
"${CMAKE_EXE_LINKER_FLAGS}<br>
> ${OpenMP_EXE_LINKER_FLAGS}"<br>
> )<br>
> add_definitions( /DCASTOR_OMP )<br>
> endif()<br>
><br>
> #---------<br>
> # Checking for MPI<br>
> if( CASToR_MPI )<br>
> set( MPIEXEC "C:/Program Files/Microsoft
MPI/Bin/mpiexec.exe" )<br>
> set( MPI_CXX_INCLUDE_PATH<br>
> "C:/Program Files (x86)/Microsoft
SDKs/MPI/Include"<br>
> )<br>
> if( "${CMAKE_SIZEOF_VOID_P}" EQUAL 8 )<br>
> set( MS_MPI_ARCH_DIR x64 )<br>
> else()<br>
> set( MS_MPI_ARCH_DIR x86 )<br>
> endif()<br>
> set( MPI_CXX_LIBRARIES<br>
> "C:/Program Files (x86)/Microsoft <br>
> SDKs/MPI/Lib/${MS_MPI_ARCH_DIR}/msmpi.lib"<br>
> )<br>
> set( MPI_C_INCLUDE_PATH "${MPI_CXX_INCLUDE_PATH}" )<br>
> set( MPI_C_LIBRARIES "${MPI_CXX_LIBRARIES}" )<br>
> set( MPIEXEC_NUMPROC_FLAG "-np" CACHE STRINGS<br>
> "Flag used by MPI to specify the number of
processes for <br>
> MPIEXEC; the next option will be the number of
processes."<br>
> )<br>
><br>
> include_directories( ${MPI_CXX_INCLUDE_PATH} )<br>
> add_definitions( /DCASTOR_MPI )<br>
> endif()<br>
><br>
> #---------<br>
> # Checking verbosity<br>
> if( CASToR_VERBOSE )<br>
> add_compile_options( /W4 )<br>
> add_definitions( /DCASTOR_VERBOSE )<br>
> endif()<br>
><br>
> #---------<br>
> # Checking debug<br>
> if( CASToR_DEBUG )<br>
> add_compile_options( /W4 )<br>
> add_definitions( /DCASTOR_DEBUG )<br>
> endif()<br>
><br>
> #---------<br>
> # Checking the mode Release/Debug<br>
> if( CMAKE_BUILD_TYPE MATCHES Release ) # Release mode<br>
> # Add release flags<br>
> add_compile_options( /Ox /O2 )<br>
><br>
> else() # Debug mode<br>
> # Add debug flags<br>
> add_compile_options( /Od )<br>
> add_definitions( /DCASTOR_DEBUG )<br>
> endif()<br>
><br>
><br>
><br>
> #---------<br>
> # Checking for ROOT<br>
> if( CASToR_ROOT )<br>
> find_package( ROOT REQUIRED )<br>
> include_directories( ${ROOT_INCLUDE_DIR} )<br>
> set( LINK_DIRECTORIES ${ROOT_LIBRARY_DIR} )<br>
> add_definitions( -DCASTOR_ROOT )<br>
> endif()<br>
><br>
><br>
> #---------<br>
> # GATE utilities<br>
> if( CASToR_BUILD_GATE_UTILITIES )<br>
> if(CASToR_ROOT)<br>
> else()<br>
> message( "CASToR_ROOT switched to ON (ROOT
required for GATE <br>
> utilities) ${CMAKE_MODULE_PATH}" )<br>
> set( ROOT_INCLUDE_DIR $ENV{ROOT_INCLUDE_DIR} )<br>
> set( ROOT_LIBRARY_DIR $ENV{ROOT_LIBRARY_DIR} )<br>
> include_directories( $ENV{ROOT_INCLUDE_DIR} )<br>
> set( LINK_DIRECTORIES ${ROOT_LIBRARY_DIR} )<br>
> add_definitions( /DCASTOR_ROOT )<br>
> set( CASToR_ROOT ON CACHE BOOL "Force ROOT
linking" FORCE)<br>
> endif()<br>
> endif()<br>
><br>
><br>
> #---------<br>
> # Checking for ROOT<br>
> if( CASToR_BUILD_SAMPLE_UTILITIES )<br>
> if(CASToR_ROOT)<br>
> else()<br>
> message( "CASToR_ROOT switched to ON (ROOT
required for sample <br>
> code utilities)" )<br>
> set( ROOT_INCLUDE_DIR $ENV{ROOT_INCLUDE_DIR} )<br>
> set( ROOT_LIBRARY_DIR $ENV{ROOT_LIBRARY_DIR} )<br>
> include_directories( $ENV{ROOT_INCLUDE_DIR} )<br>
> set( LINK_DIRECTORIES ${ROOT_LIBRARY_DIR} )<br>
> add_definitions( /DCASTOR_ROOT )<br>
> set( CASToR_ROOT ON CACHE BOOL "Force ROOT
linking" FORCE)<br>
> endif()<br>
> endif()<br>
><br>
> # Checking for both ROOT & 64bits enabled<br>
> # Force to 32 bits in this case, as ROOT can only be
32 bits on WIN<br>
> # <a
href="https://root-forum.cern.ch/t/native-windows-64-bit-build/9102/27"
moz-do-not-send="true">
https://root-forum.cern.ch/t/native-windows-64-bit-build/9102/27</a><br>
> # Display warning message<br>
><br>
> #---------<br>
> # Checking the architecture 64/32 bits<br>
> if( CASToR_64bits )<br>
> if( CASToR_ROOT )<br>
> message( "Architecture set to 32 bits as ROOT can
only be built <br>
> as 32 bits !" )<br>
> message( "The generator may have to be manually
changed to a 32 <br>
> bits version !" )<br>
> set( CASToR_64bits OFF CACHE BOOL "" FORCE)<br>
> else()<br>
> add_definitions( /D_64 )<br>
> endif()<br>
> endif()<br>
><br>
><br>
><br>
> # Unix fork (Linux/MacOS)<br>
> else()<br>
><br>
> #---------<br>
> # Compiler-specific C++11 activation.<br>
> if( "${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU" )<br>
> execute_process(<br>
> COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
OUTPUT_VARIABLE <br>
> GCC_VERSION<br>
> )<br>
> if( NOT( GCC_VERSION VERSION_GREATER 4.7 OR
GCC_VERSION <br>
> VERSION_EQUAL 4.7 ) )<br>
> message( FATAL_ERROR "${PROJECT_NAME} requires
g++ 4.7 or <br>
> greater." )<br>
> endif()<br>
> add_compile_options( -std=c++11 )<br>
> elseif( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )<br>
> add_compile_options( -std=c++11 -stdlib=libc++ )<br>
> endif ()<br>
><br>
> #---------<br>
> # Checking the architecture 64/32 bits<br>
> if( CASToR_64bits )<br>
> add_compile_options( -m64 )<br>
> add_definitions( -D_64 )<br>
> else()<br>
> add_compile_options( -m32 )<br>
> endif()<br>
><br>
> #---------<br>
> # Checking verbosity<br>
> if( CASToR_VERBOSE )<br>
> add_compile_options( -Wall -pedantic -Wextra )<br>
> add_definitions( -DCASTOR_VERBOSE )<br>
> if( CASToR_SIMD )<br>
> add_compile_options( -ftree-vectorizer-verbose=2
)<br>
> endif()<br>
> endif()<br>
><br>
> #---------<br>
> # Checking debug<br>
> if( CASToR_DEBUG )<br>
> add_compile_options( -Wall -pedantic -Wextra )<br>
> add_definitions( -DCASTOR_DEBUG )<br>
> if( CASToR_SIMD )<br>
> add_compile_options( -ftree-vectorizer-verbose=2
)<br>
> endif()<br>
> endif()<br>
><br>
> #---------<br>
> # Checking for OpenMP<br>
> if( CASToR_OMP )<br>
> find_package( OpenMP REQUIRED )<br>
> add_compile_options( ${OpenMP_CXX_FLAGS} )<br>
> add_definitions( -DCASTOR_OMP )<br>
> endif()<br>
><br>
> #---------<br>
> # Checking for MPI<br>
> if( CASToR_MPI )<br>
> find_package( MPI REQUIRED )<br>
> include_directories( ${MPI_INCLUDE_PATH} )<br>
> add_definitions( -DCASTOR_MPI )<br>
> endif()<br>
><br>
> if( CASToR_BUILD_GATE_UTILITIES )<br>
> if(CASToR_ROOT)<br>
> else()<br>
> message( "CASToR_ROOT switched to ON (ROOT
required for GATE <br>
> utilities)" )<br>
> set( ROOT_INCLUDE_DIR $ENV{ROOT_INCLUDE_DIR} )<br>
> set( ROOT_LIBRARY_DIR $ENV{ROOT_LIBRARY_DIR} )<br>
> include_directories( $ENV{ROOT_INCLUDE_DIR} )<br>
> set( LINK_DIRECTORIES ${ROOT_LIBRARY_DIR} )<br>
> add_definitions( /DCASTOR_ROOT )<br>
> set( CASToR_ROOT ON CACHE BOOL "Force ROOT
linking" FORCE)<br>
> endif()<br>
> endif()<br>
><br>
><br>
> #---------<br>
> # Checking for ROOT<br>
> if( CASToR_BUILD_SAMPLE_UTILITIES )<br>
> if(CASToR_ROOT)<br>
> else()<br>
> message( "CASToR_ROOT switched to ON (ROOT
required for sample <br>
> code utilities)" )<br>
> set( ROOT_INCLUDE_DIR $ENV{ROOT_INCLUDE_DIR} )<br>
> set( ROOT_LIBRARY_DIR $ENV{ROOT_LIBRARY_DIR} )<br>
> include_directories( $ENV{ROOT_INCLUDE_DIR} )<br>
> set( LINK_DIRECTORIES ${ROOT_LIBRARY_DIR} )<br>
> add_definitions( /DCASTOR_ROOT )<br>
> set( CASToR_ROOT ON CACHE BOOL "Force ROOT
linking" FORCE)<br>
> endif()<br>
> endif()<br>
><br>
> #---------<br>
> # Checking for ROOT<br>
> if( CASToR_ROOT )<br>
> find_package( ROOT REQUIRED )<br>
> include_directories( ${ROOT_INCLUDE_DIR} )<br>
> set( LINK_DIRECTORIES ${ROOT_LIBRARY_DIR} )<br>
> message( "${ROOT_INCLUDE_DIR} "
${ROOT_INCLUDE_DIR})<br>
> message( "${ROOT_LIBRARY_DIR} "
${ROOT_LIBRARY_DIR})<br>
> add_definitions( -DCASTOR_ROOT )<br>
> endif()<br>
><br>
> #--------- // LEDESMA deformation library. Not
planned to be <br>
> included in Castor, just for private testing.<br>
> # Checking for LEDESMA<br>
> #if( CASToR_DEFORMATION_LEDESMA )<br>
> # include_directories(
${PROJECT_SOURCE_DIR}/include/image/lib )<br>
> # set( LINK_DIRECTORIES
${PROJECT_SOURCE_DIR}/include/image/lib <br>
> -lElasticRegistration)<br>
> # set( DEFORMATION_LEDESMA_LIBRARIES <br>
> -L${PROJECT_SOURCE_DIR}/include/image/lib\
-lElasticRegistration)<br>
> # add_definitions( -DCASTOR_DEFORMATION_LEDESMA )<br>
> #endif()<br>
><br>
> #---------<br>
> # Checking for ELASTIX<br>
> #if( CASToR_ELASTIX )<br>
> # set( ELASTIX_BUILD_DIR "" CACHE PATH "Path to
elastix build folder" )<br>
> # set( ELASTIX_USE_FILE
${ELASTIX_BUILD_DIR}/UseElastix.cmake )<br>
><br>
> # option( USE_ITK_FOR_ELASTIX "Use ITK (required for
elastix)" ON )<br>
> # find_package( ITK )<br>
> # if( ITK_FOUND )<br>
> # include( ${ITK_USE_FILE} )<br>
> # else( ITK_FOUND )<br>
> # message( FATAL_ERROR "Cannot build CASToR using
ELASTIX without <br>
> ITK. Please set ITK_DIR." )<br>
> # endif( ITK_FOUND )<br>
><br>
> # if( EXISTS ${ELASTIX_USE_FILE} )<br>
> # include( ${ELASTIX_USE_FILE} )<br>
> # link_libraries( param )<br>
> # link_libraries( elastix )<br>
> # link_libraries( transformix )<br>
> # add_definitions( -DCASTOR_ELASTIX )<br>
> # endif()<br>
><br>
> #endif()<br>
><br>
> #---------<br>
> # Checking the mode Release/Debug<br>
> if( CMAKE_BUILD_TYPE MATCHES Release ) # Release mode<br>
> # Add release flags<br>
> add_compile_options( -O3 )<br>
><br>
> # Add SIMD flags<br>
> if( CASToR_SIMD )<br>
> add_compile_options(<br>
> -ftree-vectorize -msse2 -fassociative-math<br>
> )<br>
> endif()<br>
> else() # Debug mode<br>
> # Add debug flags<br>
> add_compile_options( -O0 -g3 -fno-inline -pg )<br>
> add_definitions( -DCASTOR_DEBUG )<br>
> endif()<br>
><br>
> endif()<br>
><br>
> #---------<br>
> # Setup include directory for this project<br>
> include_directories(<br>
> ${CMAKE_CURRENT_BINARY_DIR}<br>
> ${PROJECT_SOURCE_DIR}/include/algorithm<br>
> ${PROJECT_SOURCE_DIR}/include/analytic_simulator<br>
> ${PROJECT_SOURCE_DIR}/include/datafile<br>
> ${PROJECT_SOURCE_DIR}/include/dynamic<br>
> ${PROJECT_SOURCE_DIR}/include/image<br>
> ${PROJECT_SOURCE_DIR}/include/management<br>
> ${PROJECT_SOURCE_DIR}/include/optimizer<br>
> ${PROJECT_SOURCE_DIR}/include/projector<br>
> ${PROJECT_SOURCE_DIR}/include/scanner<br>
> ${PROJECT_SOURCE_DIR}/include/utils<br>
> )<br>
><br>
> #---------<br>
> # Locate sources and headers for CASToR<br>
> file( GLOB_RECURSE sources
${PROJECT_SOURCE_DIR}/src/*.cc )<br>
> file( GLOB_RECURSE headers
${PROJECT_SOURCE_DIR}/include/*.hh )<br>
><br>
> #---------<br>
> # Build the executables<br>
> add_executable( castor-recon castor-recon.cc ${sources}
${headers} )<br>
> add_executable( castor-datafileExplorer <br>
> ${TOOLKITS_SOURCE_DIR}/castor-datafileExplorer.cc
${sources} ${headers} )<br>
> add_executable( castor-scannerLUTExplorer <br>
> ${TOOLKITS_SOURCE_DIR}/castor-scannerLUTExplorer.cc
${sources} <br>
> ${headers} )<br>
> add_executable( castor-imageDynamicTools <br>
> ${TOOLKITS_SOURCE_DIR}/castor-imageDynamicTools.cc
${sources} ${headers} )<br>
> if( CASToR_BUILD_DEVEL)<br>
> add_executable( castor-proj castor-proj.cc ${sources}
${headers} )<br>
> endif()<br>
><br>
> # Build GATE tools for CASToR<br>
> if( CASToR_BUILD_GATE_UTILITIES )<br>
> add_executable( castor-GATERootToCastor <br>
> ${TOOLKITS_SOURCE_DIR}/castor-GATERootToCastor.cc
${sources} ${headers} )<br>
> add_executable( castor-GATEMacToGeom <br>
> ${TOOLKITS_SOURCE_DIR}/castor-GATEMacToGeom.cc
${sources}<br>
> ${headers} )<br>
> endif()<br>
><br>
> # Build GATE tools for CASToR<br>
> if( CASToR_BUILD_SAMPLE_UTILITIES )<br>
> add_executable( castor-PetScannerLutEx <br>
> ${TOOLKITS_SOURCE_DIR}/castor-PetScannerLutEx.cc
${sources} ${headers} )<br>
> add_executable( castor-datafileConversionEx <br>
> ${TOOLKITS_SOURCE_DIR}/castor-datafileConversionEx.cc
${sources}<br>
> ${headers} )<br>
> endif()<br>
><br>
> if( WIN32 )<br>
> target_link_libraries( castor-recon ${ROOT_LIBRARIES}<br>
> ${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES}
${MPI_CXX_LIBRARIES}<br>
> )<br>
> target_link_libraries( castor-datafileExplorer
${ROOT_LIBRARIES}<br>
> ${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES}
${MPI_CXX_LIBRARIES}<br>
> )<br>
> target_link_libraries( castor-scannerLUTExplorer
${ROOT_LIBRARIES}<br>
> ${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES}
${MPI_CXX_LIBRARIES}<br>
> )<br>
> target_link_libraries( castor-imageDynamicTools
${ROOT_LIBRARIES}<br>
> ${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES}
${MPI_CXX_LIBRARIES}<br>
> )<br>
> if( CASToR_BUILD_DEVEL )<br>
> target_link_libraries( castor-proj
${ROOT_LIBRARIES}<br>
> ${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES}
<br>
> ${MPI_CXX_LIBRARIES}<br>
> )<br>
> endif()<br>
> if( CASToR_BUILD_GATE_UTILITIES )<br>
> target_link_libraries( castor-GATERootToCastor
${ROOT_LIBRARIES}<br>
> ${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES}
<br>
> ${MPI_CXX_LIBRARIES}<br>
> )<br>
> target_link_libraries( castor-GATEMacToGeom
${ROOT_LIBRARIES}<br>
> ${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES}
<br>
> ${MPI_CXX_LIBRARIES}<br>
> )<br>
> endif()<br>
> if( CASToR_BUILD_SAMPLE_UTILITIES )<br>
> target_link_libraries( castor-PetScannerLutEx
${ROOT_LIBRARIES}<br>
> ${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES}
<br>
> ${MPI_CXX_LIBRARIES}<br>
> )<br>
> target_link_libraries( castor-datafileConversionEx
${ROOT_LIBRARIES}<br>
> ${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES}
<br>
> ${MPI_CXX_LIBRARIES}<br>
> )<br>
> endif()<br>
><br>
> else()<br>
> target_link_libraries( castor-recon ${ROOT_LIBRARIES}
<br>
> ${OpenMP_CXX_FLAGS} ${MPI_LIBRARIES}<br>
> ${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} )<br>
> target_link_libraries( castor-datafileExplorer
${ROOT_LIBRARIES} <br>
> ${OpenMP_CXX_FLAGS} ${MPI_LIBRARIES}<br>
> ${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} )<br>
> target_link_libraries( castor-scannerLUTExplorer
${ROOT_LIBRARIES} <br>
> ${OpenMP_CXX_FLAGS} ${MPI_LIBRARIES}<br>
> ${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} )<br>
> target_link_libraries( castor-imageDynamicTools
${ROOT_LIBRARIES} <br>
> ${OpenMP_CXX_FLAGS} ${MPI_LIBRARIES}<br>
> ${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES}<br>
> )<br>
> if( CASToR_BUILD_DEVEL )<br>
> target_link_libraries( castor-proj
${ROOT_LIBRARIES} ${MPI_LIBRARIES}<br>
> ${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES}
<br>
> ${OpenMP_CXX_FLAGS}<br>
> )<br>
> endif()<br>
> if( CASToR_BUILD_GATE_UTILITIES )<br>
> target_link_libraries( castor-GATERootToCastor
${ROOT_LIBRARIES} <br>
> ${MPI_LIBRARIES}<br>
> ${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES}
<br>
> ${OpenMP_CXX_FLAGS}<br>
> )<br>
> target_link_libraries( castor-GATEMacToGeom
${ROOT_LIBRARIES} <br>
> ${MPI_LIBRARIES}<br>
> ${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES}
<br>
> ${OpenMP_CXX_FLAGS}<br>
> )<br>
> endif()<br>
> if( CASToR_BUILD_SAMPLE_UTILITIES )<br>
> target_link_libraries( castor-PetScannerLutEx
${ROOT_LIBRARIES} <br>
> ${MPI_LIBRARIES}<br>
> ${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES}
<br>
> ${OpenMP_CXX_FLAGS}<br>
> )<br>
> target_link_libraries( castor-datafileConversionEx
<br>
> ${ROOT_LIBRARIES} ${MPI_LIBRARIES}<br>
> ${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES}
<br>
> ${OpenMP_CXX_FLAGS}<br>
> )<br>
> endif()<br>
> endif()<br>
><br>
> #---------<br>
> # Move the executables to the install path<br>
> install( TARGETS<br>
> castor-recon castor-datafileExplorer
castor-scannerLUTExplorer <br>
> castor-imageDynamicTools<br>
> DESTINATION<br>
> bin<br>
> )<br>
><br>
> if( CASToR_BUILD_DEVEL )<br>
> install( TARGETS<br>
> castor-proj<br>
> DESTINATION<br>
> bin<br>
> )<br>
> endif()<br>
><br>
> if( CASToR_BUILD_GATE_UTILITIES )<br>
> install( TARGETS<br>
> castor-GATERootToCastor castor-GATEMacToGeom<br>
> DESTINATION<br>
> bin<br>
> )<br>
> endif()<br>
><br>
> if( CASToR_BUILD_SAMPLE_UTILITIES )<br>
> install( TARGETS<br>
> castor-PetScannerLutEx castor-datafileConversionEx<br>
> DESTINATION<br>
> bin<br>
> )<br>
> endif()<br>
><br>
><br>
><br>
> ------------------------------<br>
><br>
> Subject: Digest Footer<br>
><br>
> _______________________________________________<br>
> Castor-users mailing list<br>
> <a class="moz-txt-link-abbreviated" href="mailto:Castor-users@lists.castor-project.org">Castor-users@lists.castor-project.org</a><br>
> <a href="http://lists.castor-" moz-do-not-send="true">http://lists.castor-</a>project.org/listinfo/castor-users<br>
><br>
><br>
> ------------------------------<br>
><br>
> End of Castor-users Digest, Vol 36, Issue 13<br>
> ********************************************<br>
><br>
> _______________________________________________<br>
> Castor-users mailing list<br>
> <a class="moz-txt-link-abbreviated" href="mailto:Castor-users@lists.castor-project.org">Castor-users@lists.castor-project.org</a><br>
> <a
href="http://lists.castor-project.org/listinfo/castor-users"
moz-do-not-send="true">http://lists.castor-project.org/listinfo/castor-users</a><br>
<br>
-- <br>
Thibaut MERLIN -- PhD<br>
<br>
Docteur en Imagerie Médicale au Laboratoire de Traitement de
l'Information Medicale (LaTIM - INSERM UMR 1101)<br>
Institut Brestois de recherche en Bio-Santé (IBRBS)<br>
12 Avenue Foch, 29200 Brest, FRANCE<br>
Tel: 06.75.12.24.90<br>
<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a
href="http://lists.castor-project.org/pipermail/castor-users/attachments/20200924/79ec6c59/attachment.html"
moz-do-not-send="true">http://lists.castor-project.org/pipermail/castor-users/attachments/20200924/79ec6c59/attachment.html</a>><br>
<br>
------------------------------<br>
<br>
Subject: Digest Footer<br>
<br>
_______________________________________________<br>
Castor-users mailing list<br>
<a class="moz-txt-link-abbreviated" href="mailto:Castor-users@lists.castor-project.org">Castor-users@lists.castor-project.org</a><br>
<a
href="http://lists.castor-project.org/listinfo/castor-users"
moz-do-not-send="true">http://lists.castor-project.org/listinfo/castor-users</a><br>
<br>
<br>
------------------------------<br>
<br>
End of Castor-users Digest, Vol 36, Issue 17<br>
********************************************<br>
</div>
</span></font>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
Castor-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Castor-users@lists.castor-project.org">Castor-users@lists.castor-project.org</a>
<a class="moz-txt-link-freetext" href="http://lists.castor-project.org/listinfo/castor-users">http://lists.castor-project.org/listinfo/castor-users</a>
</pre>
</blockquote>
<pre class="moz-signature" cols="72">--
Thibaut MERLIN -- PhD
Docteur en Imagerie Médicale au Laboratoire de Traitement de l'Information Medicale (LaTIM - INSERM UMR 1101)
Institut Brestois de recherche en Bio-Santé (IBRBS)
12 Avenue Foch, 29200 Brest, FRANCE
Tel: 06.75.12.24.90</pre>
</body>
</html>