diff --git a/README.md b/README.md index 27d794a..46d2c6d 100755 --- a/README.md +++ b/README.md @@ -1,146 +1,145 @@ # Import and update shoulderDB Author: Alexandre Terrier, EPFL-LBO Last update: 2019-02-19 ## Project description This repository contains Matlab codes to import anonymised clinical cases in a shoulder database (shoulderDB), and update this database with complementary clinical, radiological, morphological, or biomechanical data. This project is a collaboration between Laboratory of Biomechanical Orthopedics of the Ecole Polytechnique Federal de Lausanne (EPFL-LBO), the Orthopedic Service of the University Hospital of Lausanne (CHUV-OTR), and the Radiological Department of the University Hospital of Lausanne (CHUV-RAD). Matlab codes are tested with version 2018a. A config.txt file can be add in the main directory to locate the shoulderDB, which should be mounted locally. The config file is described and used by function openConfigFile. ## ImportSCase The import code is located in the sub-directory **importSCase**. Its description is detailed there. It currently only work for Windows. ## Update The update of the shoulderDB is performed by the function measureSCase. This function should be run from current directory. The update function is based on the matlab class ShoulderCase. **How to call the function measureSCase:** Input arguments can be one or several among: {Empty,'GlenoidDensity', 'Update', '[NP][1-999]', '[NP]'} If there is no argument the function will measure every new case. The first 'N' or 'P' given as an argument will force the function to be executed on all the corresponding 'N' or 'P' cases. This will overwrite - every other ShoulderCase argument '[NP][1-999]' given before and will - not take the next arguments into account. + every other ShoulderCase argument '[NP][1-999]' given before. Examples: measureSCase('GlenoidDensity') is a valid instruction where every new case is measured including its glenoid density. measureSCase('P400','N520') is a valid instruction where the cases 'P400' and 'N520' are measured only if they have not already been measured yet (new cases). measureSCase('P400','N520','Update') is a valid instruction where the cases 'P400' and 'N520' are measured whether they have already been measured or not. measureSCase('GlenoidDensity','P400','N520','P','Update') is a valid instruction where all the 'P' cases are measured including their glenoid density only if they have not been measured yet (new P cases). measureSCase('GlenoidDensity','P400','N520','Update','P') is a valid instruction where all the 'P' cases are measured including their glenoid density whether they have been measured or not. measureSCase('Z1590','trollingArgumentLol') is a valid instruction which raises a warning about the arguments and will result in the same as executing measureSCase() i.e. every new case is calculated. ## Analyse Currently, the analysis is limited to the graphical display of an entry (SCase) of the shoulderDB, with the function plotSCase. ## Updated in 2018 * measureSCase.m: function to measure (and save) SCase (all or part of database) * dicominfoSCase.m: function to get dicom info if SCase, to replace CT/infoCT * listSCase.m: funcion to list SCase in /shoulder/data/ * plotSCase.m: function to plot SCase * csv2xlsSCase.m: fonction to write a xls file from a csv file (for SCase) * statSCase.m: script to perform statistical analyses on SCaseDB * ShoulderCase: directory with classes related to the shoulder cases * log: Directory with log files * segmentation: Directory with functions related to the automatic segementaton of the CT ## Oldies to be rewritten and/or removed * anatomy: Directory with functions related to the anatomical analysis of the shoulder CT * CT: Directory with functions for the reading of dicom field * Generated_Amira_TCL_Scripts: Ditrectory with tcl scripts for Amira, created by matlab functions * muscles: Directory with functions related to the analysis of muscle degeneration * XLS_MySQL_DB: Directory with function related to the access to the MySQL database * CylinderReferences_P403_AmiraCode.dat: To be checked ## To be cleaned * imageToolsExperimentation.m: ?? * Button 1 pushed.ps: ?? * LBODicomViewer.fig: ?? * LBODicomViewer.m: ?? * tempInfo.mat: ?? ## To do * Link to the automated segmentation * R/L identification at import * Glenoid type automated identification * Batch update * Automated muscle degeneration * Humerus bone quality * Deltoid Tuberosity Index * Restore link with MySQL * Link with musculoskeletal model * Web interface for import, update, and analyse ## Main repository should not be divided (it seems to increase complexity without gain) It might still be organized as folder, well documented in a README * One folder for class ShoulderCase * One folder for importSCase * One folder for measureSCase * One folder for anatomy (to be removed) * One folder for CT (to be removed) * One folder for muscles (integrated to class and measure, and removed) * One folder for XLS_MySQL_DB (to be integrated to import and measure, and removed) * One folder for other common files ## Contributors * Julien Ston * Antoine Dewarrat * Raphael Obrist * Killian Cosendey * Valérie Malfroy Camine * Jorge Solana-Muñoz * Bharath Narayanan * Paul Cimadomo ## Current Files and Folders at 2019.04.03, explained by JSM ## Files - *config.txt*: used by some Matlab scripts to find the working directory (usually data or dataDev). Needed when running - *csv2xlxSCase.m*: (not mine) Matlab script to transform CSV files into XLS files - *dicominfoSCase.m*: Matlab script used after new SCase importations. Check utility in ImportSCase SOP - *LBODicomViewer.fig*: (don't know this file) - *LBODicomViewer.m*: (don't know this file) - *list.txt*: temporary text file summarizing this directory content - *listSCase.m*: Matlab script that create a list of SCases - *listSCase_before20190211.m*: version of *listSCase.m* previous to 2019.02.11 (don't know the differences) - *loadDicomCTscan*: (don't know this file) - *measureSCase.m*: Matlab Script used at the end of Anatomical Measurement process (check SOP for more details) - *openConfigFile.m*: Matlab Script to read and use the text file *configFile* - *openConfigFile_before20190211*: version of *openConfigFile.m* previous to 2019.02.11 (don't know the differences) - *openLogFile.m*: (don't know this file) - *plotSCase.m*: (don't know this file) - *readDicomMetaData*: (maybe old file not longer needed) not used in *importSCase.m*, neither in *measureSCase.m* - *README.md*: This is this current file - *README_importSCaseDev_fServer.md*: Temp notes, removable - *statSCase.m*: (don't know this file) - *tempInfo.mat*: temporal file created by ImportSCase (removable) ## Directories - **anatomy**: folder containing *anatomy* measurement scripts - **CT**: rests of old *dicomCopier.m*. Old versions of current *importSCase.m*. Removable - **Generated_Amira_TCL_Scripts** this directory is used to store TCL scripts - **ImportSCase**: contains scripts needed to import new SCases into the shoulder database - **log**: contains *log* text files from some of the Matlab scripts in the current directory (*dicominfoSCase*, *listSCase*, *measureSCase* and *segmentScapula*) for debugging purposes - **muscles**: contains Matlab scripts for muscles calculations - **ShoulderCase**: contains Matlab scripts, unkown to JSM - **upsert**: I don't recognize this folder and I don't understand why it shows that I have modify it - **XLS_MySQL_DB**: contains Matlab scripts, unkown to JSM