[Loris-dev] Import mri - scripts

Sotirios Nikoloutsopoulos sotirisnik at gmail.com
Wed Jul 24 17:59:59 EDT 2019


The scripts are located in  /data/loris/bin/mri/. Somewhere I might have
messed something up but i remember following the instructions in the
wiki.For example when i tried to execute the batch_uploads_imageuploader
perl script the line

my $command = "$bin_dir/uploadNeuroDB/imaging_upload_file.pl "

was pointing to an invalid path, for example: it was repeating a pattern
and had LORIS instead of loris ( i think  the mistake was that in the wiki
it suggested to use $PROJECT  for the name of the folder and i choosed
'loris'  https://github.com/aces/Loris/wiki/Imaging-Database ). See also
the in image for the modification i did. Also i didn't find the section to
config the $data_dir variable.

Thank you,

Sotirios



Στις Τετ, 24 Ιουλ 2019 στις 6:05 μ.μ., ο/η Cecile Madjar <
cecile.madjar at mcin.ca> έγραψε:

> Hi Sotirios,
>
> It looks like you have one Config setting not set (based on the first
> error message you got when running it the first time). You need to set a
> value for "Loris-MRI Data Directory" in the Config module under the Imaging
> pipeline section (from what I can see, it would be /data/loris/data/ for
> your setup).
>
> The reason you got that error message the second time is that the pipeline
> checks if the DICOM study was already inserted in the tarchive table. Since
> you ran the study once already, the study is inserted into the tarchive,
> hence the message. However, the pipeline did not complete as the MINC files
> were not created and inserted into the files/parameter_file table. In order
> to continue the insertion, you will then need to run the tarchiveLoader
> command suggested in the terminal during the second run:
> /data/LORIS/data//uploadNeuroDB/tarchiveLoader -globLocation -profile prod
> /data/loris/data/tarchive//2012/DCM_2012-12-05_ImagingUpload-17-43-ZUEFjb.tar
> -verbose
>
> Finally, I am a bit confused by your setup. Where are the scripts located?
> In /data/loris/bin/mri or /data/loris/data? It feels like the Config
> setting "LORIS-MRI code" in the Paths section was set to "/data/LORIS/data"
> but it should have been set to the directory where the scripts are located
> (most probably /data/loris/bin/mri).
>
> Hope this helps,
>
> Cécile
>
>
> On Wed, Jul 24, 2019 at 10:55 AM Sotirios Nikoloutsopoulos <
> sotirisnik at gmail.com> wrote:
>
>> Ok first i execute this command:
>>
>> "lorisadmin at hbp:/data/loris/bin/mri$  ./batch_uploads_imageuploader
>> -profile prod < ~/Desktop/input.txt > log.txt
>> Use of uninitialized value $data_dir in concatenation (.) or string at
>> ./batch_uploads_imageuploader line 143.
>> Use of uninitialized value $data_dir in concatenation (.) or string at
>> ./batch_uploads_imageuploader line 143.
>> Use of uninitialized value $_ in pattern match (m//) at
>> ./batch_uploads_imageuploader line 147.
>> base is DCC0000_258024_V01
>>  path is /data/incoming/
>>  type is .tar.gz
>>  fullpath is /data/incoming/DCC0000_258024_V01.tar.gz
>>
>> source /tmp/ImagingUpload-17-43-ZUEFjb
>> targetlocation /data/loris/data/tarchive
>>
>> Use of uninitialized value $data_dir in concatenation (.) or string at
>> /data/LORIS/data//uploadNeuroDB/tarchiveLoader line 256.
>> Use of uninitialized value $data_dir in concatenation (.) or string at
>> /data/LORIS/data//uploadNeuroDB/tarchiveLoader line 284.
>> Use of uninitialized value $data_dir in concatenation (.) or string at
>> /data/loris/bin/mri/uploadNeuroDB/tarchive_validation.pl line 219.
>> Use of uninitialized value $data_dir in concatenation (.) or string at
>> /data/loris/bin/mri/uploadNeuroDB/minc_insertion.pl line 270.
>> Use of uninitialized value $data_dir in concatenation (.) or string at
>> /data/LORIS/data//uploadNeuroDB/tarchiveLoader line 711.
>> Can't exec "mail": No such file or directory at
>> /data/LORIS/data//uploadNeuroDB/tarchiveLoader line 721.
>> print() on closed filehandle MAIL at
>> /data/LORIS/data//uploadNeuroDB/tarchiveLoader line 722.
>> print() on closed filehandle MAIL at
>> /data/LORIS/data//uploadNeuroDB/tarchiveLoader line 723.
>> Use of uninitialized value $data_dir in concatenation (.) or string at
>> /data/LORIS/data//uploadNeuroDB/tarchiveLoader line 724.
>> print() on closed filehandle MAIL at
>> /data/LORIS/data//uploadNeuroDB/tarchiveLoader line 724.
>> print() on closed filehandle MAIL at
>> /data/LORIS/data//uploadNeuroDB/tarchiveLoader line 725.
>> Use of uninitialized value $data_dir in concatenation (.) or string at
>> /data/LORIS/data//uploadNeuroDB/tarchiveLoader line 735.
>>
>>  No Mincs inserted
>>
>>
>> The tarchiveLoader insertion script has failed.
>> Running now the following command: /data/loris/data/uploadNeuroDB/
>> imaging_upload_file.pl -profile prod -upload_id 3
>> /data/incoming/DCC0000_258024_V01.tar.gz -verbose"
>>
>> I inserted the VisitLabel, but still the Mincs are not inserted and i am
>> getting this error
>>
>> "lorisadmin at hbp:/data/loris/bin/mri$ /data/loris/data/uploadNeuroDB/
>> imaging_upload_file.pl -profile prod -upload_id 3
>> /data/incoming/DCC0000_258024_V01.tar.gz -verbose
>>
>>  find -path \/tmp\/ImagingUpload\-17\-45\-5MsWEd -name '__MACOSX' -delete
>>
>> Spool message is:
>> The Scan for the uploadID 3 has already been run with tarchiveID: 7.
>> To continue with the rest of the insertion pipeline, please run
>> tarchiveLoader from a terminal as follows:
>> /data/LORIS/data//uploadNeuroDB/tarchiveLoader -globLocation -profile prod
>> /data/loris/data/tarchive//2012/DCM_2012-12-05_ImagingUpload-17-43-ZUEFjb.tar
>> -verbose"
>>
>> Which files should i delete? I thought that deleting the files from the
>> tarchive was enough. And i executed the last proposed command to continue
>> to rest of the insertion pipeline ( check the image ).
>>
>> Thank you
>>
>> Στις Τετ, 24 Ιουλ 2019 στις 5:05 μ.μ., ο/η Cecile Madjar <
>> cecile.madjar at mcin.ca> έγραψε:
>>
>>> Hi Sotirios,
>>>
>>> Sorry I was not clear before. Every visits of candidates are created in
>>> the session table with one entry per CandID/VisitLabel. So if the imaging
>>> pipeline created visits in the session table (that are not attached to
>>> instruments) and you want to clean your database completely, you can delete
>>> entries in that table as well.
>>>
>>> Regarding your point 2, the imaging pipeline can create the visit in the
>>> session table as long as the visit label is present in the Visit_Windows
>>> table (which means the visit label stored in the PatientName is a valid
>>> visit label).
>>> However, in your prod file, if the
>>> variable $subjectID{'createVisitLabel'} is set to 1 for candidates, the
>>> visit label should be created in the Visit_Windows table I believe. Here
>>> is the line of the prod file you would need to change
>>> <https://github.com/aces/Loris-MRI/blob/81bae73ea6e86c9498519dadf574468ee1d992ca/dicom-archive/profileTemplate.pl#L59>
>>> .
>>> In general, we prefer populating the Visit_Windows table and set the
>>> $subjectID{'createVisitLabel'} to 0 for candidate data to avoid insertion
>>> of badly labelled MRI data that are complex to relabel.
>>>
>>> Finally, regarding the candidate creation, if you execute the following
>>> steps, the pipeline should be able to create candidates:
>>> - set in the Imaging Pipeline section of the config module the config
>>> setting "Upload creation of candidates" to Yes
>>> - manually transfer the scans to the LORIS server instead of uploading
>>> it via the imaging browser
>>> - run batch_imaging_upload.pl as you did until now.
>>>
>>> Hope this helps!
>>> Best,
>>>
>>> Cécile
>>>
>>> On Wed, Jul 24, 2019 at 8:47 AM Sotirios Nikoloutsopoulos <
>>> sotirisnik at gmail.com> wrote:
>>>
>>>> About my second question i replaced the name of the patient in the .dcm
>>>> files and now i am getting an error that the visit label does not exist.
>>>> I thought it was supposed to be automatically created.
>>>>
>>>> "Done adding archive info into database
>>>>
>>>> /data/LORIS/data//uploadNeuroDB/tarchiveLoader -globLocation -profile
>>>> prod
>>>> /data/loris/data/tarchive//DCM_2012-12-05_ImagingUpload-15-42-yUwQQV.tar
>>>> -verbose
>>>>  md5sum
>>>> /data/loris/data/tarchive/DCM_2012-12-05_ImagingUpload-15-42-yUwQQV.tar
>>>> PSCID is: DCC0000
>>>>  CandID id: 258024
>>>>  visit_label is: V1
>>>> PSCID is: DCC0000
>>>>  CandID id: 258024
>>>>  visit_label is: V1
>>>> candidate id 258024
>>>>
>>>>
>>>> => No Visit labelVisit label does not exist
>>>> Set centerID = 1
>>>> PSCID is: DCC0000
>>>>  CandID id: 258024
>>>>  visit_label is: V1
>>>> PSCID is: DCC0000
>>>>  CandID id: 258024
>>>>  visit_label is: V1
>>>>
>>>> Number of MINC files that will be considered for inserting into the
>>>> database: 1
>>>>
>>>> log dir is /logs and log file is /logs/TarLoad-15-42-L6pocU.log
>>>> PSCID is: DCC0000
>>>>  CandID id: 258024
>>>>  visit_label is: V1
>>>> PSCID is: DCC0000
>>>>  CandID id: 258024
>>>>  visit_label is: V1
>>>> candidate id 258024
>>>>
>>>>
>>>> => No Visit label
>>>> Cleaning up temp files: rm -rf
>>>> /tmp/TarLoad-15-42-J2rQms/ImagingUpload-15-42-yUwQQV*"
>>>>
>>>> Στις Τετ, 24 Ιουλ 2019 στις 3:38 μ.μ., ο/η Sotirios Nikoloutsopoulos <
>>>> sotirisnik at gmail.com> έγραψε:
>>>>
>>>>> Hi,
>>>>>
>>>>> 1) What are the records in the session table?
>>>>>
>>>>> 2) I tried to upload a non-phantom file like this
>>>>>
>>>>> input_file.txt:
>>>>> /data/incoming/DCC0000_258024_V1.tar.gz N DCC0000_258024_V1
>>>>>
>>>>> Terminal:
>>>>>  ./batch_uploads_imageuploader -profile prod < ~/Desktop/input.txt >
>>>>> log.txt
>>>>>
>>>>> and i get the following error in the log.txt file
>>>>>
>>>>> "Running now the following command: /data/loris/data/uploadNeuroDB/
>>>>> imaging_upload_file.pl -profile prod -upload_id 7
>>>>> /data/incoming/DCC0000_258024_V1.tar.gz -verbose
>>>>>
>>>>>  find -path \/tmp\/ImagingUpload\-14\-56\-FeLCB4 -name '__MACOSX'
>>>>> -delete
>>>>> Spool message is:
>>>>> The PatientName read from the DICOM header does not start with
>>>>> DCC0000_258024_V1 from the mri_upload table
>>>>>  "
>>>>>
>>>>> and the spool message is repeated for each .dcm file. Should i
>>>>> preprocess every .dcm file and change the PatientName to
>>>>> "DCC0000_258024_V1"?
>>>>>
>>>>> 3) As far as it concerns the candidate profile i have to create a new
>>>>> one each time before i try to upload a file? Is there already a way to
>>>>> create a candidate profile and get the DCCID and PSCID without the user
>>>>> interface?
>>>>>
>>>>> Thank you,
>>>>>
>>>>> Sotirios
>>>>>
>>>>> Στις Πέμ, 18 Ιουλ 2019 στις 5:00 μ.μ., ο/η Cecile Madjar <
>>>>> cecile.madjar at mcin.ca> έγραψε:
>>>>>
>>>>>> Hi Sotirios,
>>>>>>
>>>>>> See answers to your questions below.
>>>>>>
>>>>>> About the 1st case we had a dicom with a blank studyUID, maybe
>>>>>>> someone accidentally removed it.
>>>>>>>
>>>>>> That is strange. Something must have been done to the DICOM files. I
>>>>>> have never seen a study with no StudyUID out of the scanner. Usually, you
>>>>>> need to manually erase it with some tool. However, DICOMs never cease to
>>>>>> surprise me...
>>>>>>
>>>>>>
>>>>>>> Some other questions:
>>>>>>> 1) What are the steps to remove all of my patients and uploads?:
>>>>>>> because i want to try to reupload all the testing dicoms we had with a
>>>>>>> clean database.
>>>>>>>
>>>>>>
>>>>>> Release 21.0 of LORIS-MRI will offer a script to remove all the
>>>>>> entries and files specific to an upload. However, this release is not yet
>>>>>> out. Hopefully in the next few weeks.
>>>>>> In the meantime, since your case is particular and that you just want
>>>>>> to start with a clean database, the following deletes should work
>>>>>> (hopefully I won't forget any tables):
>>>>>> delete from mri_violations_log;
>>>>>> delete from mri_protocol_violated_scans;
>>>>>> delete from MRICandidateErrors;
>>>>>> delete from parameter_file;
>>>>>> delete from files_qcstatus; # (if you played with the QC part of the
>>>>>> imaging browser for testing)
>>>>>> delete from feedback_mri_comments; # (if you played with the QC part
>>>>>> of the imaging browser for testing)
>>>>>> delete from tarchive_series;
>>>>>> delete from tarchive_files;
>>>>>> delete from mri_upload;
>>>>>> delete from tarchive;
>>>>>> delete from mri_scanner;
>>>>>> delete from candidate where PSCID="scanner";
>>>>>>
>>>>>> I don't know if you want to also delete entries in the session and
>>>>>> candidate table too?
>>>>>>
>>>>>> 2) We do not need to create the profile of a patient ( are the
>>>>>>> patients stored in the candidate table? because i can't see the ghosts ),
>>>>>>> because will it automatically be created when importing a dicom?
>>>>>>>
>>>>>>
>>>>>> I am not sure I understand fully this question. All candidates are
>>>>>> stored in the candidate table. The phantom scans however are attached to a
>>>>>> scanner candidate depending on where the scan happened. It is a bit of a
>>>>>> weird concept that we have to redesign eventually but never got a chance to
>>>>>> get to it.
>>>>>>
>>>>>> Hopefully this answered your question, otherwise, don't hesitate to
>>>>>> let me know.
>>>>>>
>>>>>> 3) What is the difference between uploading a dicom as phantom
>>>>>>> instead of importing as PSCCID_DCCID_VisitLabel?
>>>>>>>
>>>>>>
>>>>>> When you upload the scan as PSCID_DCCID_VisitLabel, there is a check
>>>>>> that makes sure the candidate IDs and visit label are valid at the time of
>>>>>> upload.
>>>>>> When you upload a scan as phantom, it expects that the DICOM field
>>>>>> PatientName and uploaded filename contains the string "phantom". We
>>>>>> enforced this behaviour on the imaging uploader side in recent releases but
>>>>>> I can't remember which one. Probably the upcoming 21.0 release.
>>>>>>
>>>>>> All those verifications might seem cumbersome but they are here to
>>>>>> ensure that the files inserted are all valid and labelled properly as it is
>>>>>> a bit messy to have to delete files that were wrongly labelled. At least,
>>>>>> the delete script present in release 21.0 will make this process easier but
>>>>>> it is still good practice to verify those things.
>>>>>>
>>>>>>
>>>>>>> Thank you,
>>>>>>>
>>>>>>
>>>>>> With pleasure. Hopefully the answers to your questions will be
>>>>>> helpful.
>>>>>>
>>>>>> Best,
>>>>>>
>>>>>> Cécile
>>>>>>
>>>>>> PS: loris-dev mailing list: you will find the initial answer I gave
>>>>>> Sotirios below. I forgot to cc the loris-dev in my earlier reply...
>>>>>>
>>>>>> Στις Τρί, 16 Ιουλ 2019 στις 12:02 π.μ., ο/η Cecile Madjar <
>>>>>>> cecile.madjar at mcin.ca> έγραψε:
>>>>>>>
>>>>>>>> Dear Sotirios,
>>>>>>>>
>>>>>>>> Thank you for reaching out. Since your email was already organized
>>>>>>>> in points, I will reply directly below your questions below.
>>>>>>>>
>>>>>>>> Best,
>>>>>>>>
>>>>>>>> Cécile
>>>>>>>>
>>>>>>>> 1) What do we do when the StudyUID is blank on the header?
>>>>>>>>> https://github.com/aces/Loris-MRI/blob/minor/docs/AppendixA-Troubleshooting_guideline.md
>>>>>>>>> There solution provided at the table 3 does not guide us how to find the
>>>>>>>>> information ( is possible ).
>>>>>>>>>
>>>>>>>>
>>>>>>>> The StudyUID is the field used in our pipeline at the moment to
>>>>>>>> check whether a DICOM study was already inserted into LORIS with that same
>>>>>>>> StudyUID since it is supposed to be unique for every single study.
>>>>>>>> Currently, we do not support insertion of DICOM studies if they do not have
>>>>>>>> a StudyUID associated with them.
>>>>>>>>
>>>>>>>> Is there a specific reason why the StudyUID is blank in the DICOM
>>>>>>>> headers in your DICOM files? Did they go through some processes before
>>>>>>>> upload to LORIS?
>>>>>>>>
>>>>>>>>
>>>>>>>> 2) When i am about to upload a non-phanton case i need a 'Visit
>>>>>>>>> Label'. Is there already a script that can create a new visit label for a
>>>>>>>>> specific Candidate, so i can provide it as input afterwards to the
>>>>>>>>>
>>>>>>>>> batch_uploads_imageuploader ( See option 5.1.3 https://github.com/aces/Loris-MRI/blob/minor/docs/05-PipelineLaunchOptions.md )
>>>>>>>>>
>>>>>>>>>
>>>>>>>> I am not sure if the front-end allows for it but if you use
>>>>>>>> batch_uploads_imageuploader, the insertion scripts could create the visit
>>>>>>>> label for you. However, it does need to be included in the patient name in
>>>>>>>> order for the script to know which label it should use.
>>>>>>>> For example: you upload V02 for MTL0123 (DCCID: 456789)  but V02
>>>>>>>> was not yet created for MTL0123; the insertion scripts will create a V02
>>>>>>>> visit for MTL0123 if the PatientName field for the dataset is
>>>>>>>> MTL0123_456789_V02 with Stage marked as "Not Started".
>>>>>>>>
>>>>>>>> However, *note that for the script to create the visit for the
>>>>>>>> candidate, you have to make sure that all the visit label of your projects
>>>>>>>> were inserted in the Visit_Windows table* (otherwise, the visit
>>>>>>>> will never be created as they were not specified as being part of the list
>>>>>>>> of visit label to expect). So in the example above, you should have one row
>>>>>>>> in Visit_Windows with Visit_label="V02" set.
>>>>>>>>
>>>>>>>>
>>>>>>>>> 3) Section 4.3
>>>>>>>>> https://github.com/aces/Loris-MRI/blob/minor/docs/04-Scripts.md
>>>>>>>>>
>>>>>>>>> What do we do when the folder contains multiple mnc files?
>>>>>>>>>
>>>>>>>>> This is a case by case. Most of the time, the MINC files that
>>>>>>>> failed insertion into the imaging browser end up in the MRI violation
>>>>>>>> module where you can see what went wrong with the acquisitions not
>>>>>>>> inserted. If you notice that the MINC file should be inserted as a specific
>>>>>>>> protocol, you can force the insertion as explained in section 4.3.
>>>>>>>>
>>>>>>>> In your case, I have a feeling that you want to be able to insert
>>>>>>>> MINC files that did not go through the whole pipeline insertion (DICOM
>>>>>>>> archival, then dcm2mnc, then protocol identification, then insertion...).
>>>>>>>> In theory, you could call minc_insertion.pl on any MINC file,
>>>>>>>> provided you have at least the following information:
>>>>>>>> - path to the MINC  file
>>>>>>>> - uploadID associated with the MINC files or DICOM archive path
>>>>>>>> from which those MINC files were created from
>>>>>>>>
>>>>>>>> Then the minc_insertion.pl script will do the subject information
>>>>>>>> and protocol validation etc...
>>>>>>>>
>>>>>>>> If all the MINC files come from the same uploadID or TarchiveID,
>>>>>>>> then you could run a loop in bash calling the minc_insertion.pl
>>>>>>>> script like this for files deriving from uploadID=1:
>>>>>>>>
>>>>>>>> ls /path/to/mnc/folder/* | while read f; do minc_insertion.pl
>>>>>>>> -profile prod -uploadID 1 -mincPath $f; done
>>>>>>>>
>>>>>>>>
>>>>>>>>> Thank you,
>>>>>>>>>
>>>>>>>>
>>>>>>>> Hope this helped!
>>>>>>>>
>>>>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.bic.mni.mcgill.ca/pipermail/loris-dev/attachments/20190725/b2658118/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: modification.png
Type: image/png
Size: 99870 bytes
Desc: not available
URL: <http://mailman.bic.mni.mcgill.ca/pipermail/loris-dev/attachments/20190725/b2658118/attachment-0001.png>


More information about the Loris-dev mailing list