Giter Site home page Giter Site logo

fossabot / brainstem Goto Github PK

View Code? Open in Web Editor NEW

This project forked from brainimaccs/brainstem

0.0 0.0 0.0 45 KB

Brainimaccs System That Executes Modules (BrainSTEM): This package contains the base layer for the modules of the Brain Imaging Accessoires toolkit, i.e. tools and functions for receiving, handling and sending DICOM files, as well as queueing the jobs.

Shell 100.00%

brainstem's Introduction

Brainimaccs System That Executes Modules (BrainSTEM)

FOSSA Status

This package contains the base layer for other components of the Brain Imaging Accessoires (BrainImAccs) toolkit, i.e. tools and functions for receiving, handling and sending DICOM files. It is meant to be run on a Linux server to receive DICOM files from the Picture Archiving and Communication System (PACS) or modalities, process the scans in a parallel fashion and then export the results back to the PACS.

Different modules (i.e. accessoires) are available. After successful installation, these modules can be run directly on folders containing DICOM studies. It is not a requirement to receive the studies e.g. from the PACS.

Please note, that this software is research-only.

Receiving DICOM files and queueing system

Two queues can bet set up, a short queue for quick calculations (e.g. fatbACPC), and a long queue for longer calculations (e.g. veganbagel).

storescp from DCMTK is used to receive DICOM files (see incoming/incoming-{short,long}.bash). As soon as a study has been received, storescp calls received-{short,long}.bash to separate the study into single series, if necessary, and submit those to a work queue. The work queue is based on parallel (see received/queue-{short,long}.bash), so that a configurable number of series (see setup.brainstem.bash) can be processed simultaneously. In the end, the jobs are started by tools/startJob.bash.

Either your PACS can be set up to send DICOM series to the storescp node, or you could use the Query/Retrieve approach (see movescu-{short,long}.bash). The latter script takes a Series Instance UID as an argument to query the PACS, which then sends the series to the storescp node. contrib/ has a very simple example, which was used to test the movescu approach based on automated HTTP GET requests.

Installation

Requirements

We are listing the software versions we used (likely the latest available during development), but we are currently not aware that we rely on any features that are specific to one of the software's versions.

Installation

Do not run BrainImAccs as root. Create a separate user or use an existing one.

Clone the repository

$ git clone https://github.com/BrainImAccs/BrainSTEM.git
$ cd BrainSTEM
$ git submodule init
$ git submodule update

Modules

Modules are developed separately (each with their own repository), and are integrated into brainstem using GIT submodules. Currently, only two are available:

  • fatbACPC: Fully automatic tilting of brainscans to Anterior Commissure - Posterior Commissure line
  • veganbagel: Volumetric estimation of gross atrophy and brain age longitudinally

PLEASE NOTE: Each module needs to be configured separately! See the README.md of each repository.

Configuration

Copy the setup templates:

$ cp setup.brainstem.bash-template setup.brainstem.bash

If you wish to use the DICOM receive/send functionality, you will only need to update the DICOM/PACS communication options in setup.brainstem.bash:

# PACS communication
#
called_aetitle="CALLING"
calling_aetitle_short="CALLED_SHORT"
calling_aetitle_long="CALLED_LONG"
peer="127.0.0.1"
port="1234"

# Start the DICOM receiver on the following port
listening_port_short=10104
listening_port_long=10105

You may want to adjust the number of job slots for the parallel processing queue based on the number of CPU cores available:

# Number of jobs to start in parallel in a queue
#
jobSlots=4

Do check the rest of the configuration options for potential changes you want to make.

Assign jobs to queue

$ cp tools/startJob.bash-template tools/startJob.bash

Edit tools/startJob.bash to assign jobs to the respective queues by uncommenting the respective lines.

Running

Run the following commands as the non-root user you are using for BrainImAccs.

# Start the "short" queue
$ received/queue-short.bash
# Start the DICOM receiver
$ incoming/incoming-short.bash

# Start the "long" queue
$ received/queue-long.bash
# Start the DICOM receiver
$ incoming/incoming-long.bash

Now configure your PACS to send images to the DICOM receiver running on your server, send an image and wait for the response.

After being processed in the incoming/ folder, the received series will be moved to received/ and processed. After processing, most files will be removed, except for the reference DICOM file, which is used to synchronize DICOM tags between the original and aligned series, and some results from the alignment process.

Debugging

A number of log files are created:

  • DICOM receiver (storescp): incoming/{short,long}.log
  • parallel work queue: received/parent-{short,long}.log
  • parallel --joblog: received/{short,long}-queue.log
  • Log for each job: received/{short,long}/<datetime of job>/<series>/log
    • In order to generate debug job logs, add the --debug switch to the module's call in tools/startJob.bash.
    • Show the debug log in a less verbose style: grep -vE "^[+' ]" received/{short,long}/<datetime of job>/<series>/log

Acknowledgements

The main scripts are based on the BASH3 Boilerplate.

License

FOSSA Status

brainstem's People

Contributors

crubb avatar fossabot avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.