Purpose: Set up a static webpage and server to host classifier/pairwise comparator tasks for images
I am not the original author of these files. This repository contains aggregated and updated files from previous developers. See acknowledgements below.
Once setup you should have two things running:
- Web Server
- Couchdb instance
To finish configuring a single node setup, run the following;
APP_NAME=default
DB_PORT=5984
COUCHDB_USER=admin
COUCHDB_PASSWORD=password
curl -X PUT http://$COUCHDB_USER:[email protected]:$DB_PORT/_users
curl -X PUT http://$COUCHDB_USER:[email protected]:$DB_PORT/_replicator
# Use below if in admin party mode:
# curl -X PUT http://0.0.0.0:$DB_PORT/_users
# curl -X PUT http://0.0.0.0:$DB_PORT/_replicator
To create and setup the database, run the following:
DB_NAME=image_comparator
curl -X PUT http://$COUCHDB_USER:[email protected]:$DB_PORT/$DB_NAME
# Admin party:
# curl -X PUT http://0.0.0.0:$DB_PORT/$DB_NAME
Add some views to the db:
curl -X PUT http://$COUCHDB_USER:[email protected]:$DB_PORT/$DB_NAME/_design/basic_views -d @flask_server/image_comparator/static/js/basic_views.json
# Admin party:
# curl -X PUT http://0.0.0.0:$DB_PORT/$DB_NAME/_design/basic_views -d @flask_server/image_comparator/utils/basic_views.json
docker exec -it -w $PWD image-comparator-flask-$APP_NAME bash
Place your imaging data in "Image-Comparator-Data".
Ex:
root@a53f9696685a:/home/bb927/Image-Comparator# ls ../Image-Comparator-Data/
MR.1.dcm MR.2.dcm MR.3.dcm MR.4.dcm
If you want to supply the class of the image ahead of time, supply a csv in "Image-Comparator-Data" with image name and id like so:
image,class
MR.1.dcm,class_a
MR.2.dcm,class_b
MR.3.dcm,class_c
MR.4.dcm,class_a
...
Run addImages.py to add images:
python3 image_comparator/utils/addImages.py <path to Image-Comparator-Data> <imageSetName> [<fromCSV>]
Ex:
python3 flask_server/image_comparator/utils/addImages.py Image-Comparator-Data TEST
python3 flask_server/image_comparator/utils/addImages.py Image-Comparator-Data TEST test_classification.csv
python3 flask_server/image_comparator/utils/addImages.py Image-Comparator-Data mimicMIDRCtrain training_classification.csv
python3 flask_server/image_comparator/utils/addImages.py Image-Comparator-Data mimicMIDRCvalidation validation_classification.csv
python3 flask_server/image_comparator/utils/addImages.py Image-Comparator-Data mimicMIDRCtest test_classification.csv
- <imageFolder> Image-Comparator-Data, but could be user specified.
- <imageSetName> is the name for the image set.
- <fromCSV>
name of optional csv file in imageFolder
<!-- manually add users that you assigned tasks too in makeTasks.rb -->
<select id="username" onchange="{{ app_config.app }}TaskFeeder.OnSetUser(this.value)">
<option selected="selected">Choose your user</option>
<option value="Benjamin">Benjamin</option>
</select>
With the app running, image list created and users in the drop down, you can proceed to configuring image lists for use within specific apps below
You need to have created an image set already with "addImages.py". Go back to the "Add Images to DB" section above.
python3 flask_server/image_comparator/utils/makeCompareList.py <imageSetName> <list name> <pct repeat>
python3 flask_server/image_comparator/utils/makeCompareList.py TEST TESTCompareList
python3 flask_server/image_comparator/utils/makeCompareList.py TEST TESTCompareList 10
ruby makeImageClassifyList.rb <imageSet> <listName> <pctRepeat>
Ex:
python3 flask_server/image_comparator/utils/makeClassifyList.py TEST TESTClassifyList
python3 flask_server/image_comparator/utils/makeClassifyList.py TEST TESTClassifyList 10
python3 flask_server/image_comparator/utils/makeGridList.py <imageSet> <listName>
python3 flask_server/image_comparator/utils/makeGridList.py TEST TESTGridList
python3 flask_server/image_comparator/utils/makePairList.py <imageSet> <listName>
python3 flask_server/image_comparator/utils/makePairList.py TEST TESTPairList
python3 flask_server/image_comparator/utils/makeTask.py <user> <image-list-name> <image-list-type> <task-order> [<description>]
python3 flask_server/image_comparator/utils/makeTask.py Benjamin TESTCompareList compare 1
python3 flask_server/image_comparator/utils/makeTask.py Benjamin TESTCompareList compare 1 test_description
python3 flask_server/image_comparator/utils/makeTask.py Benjamin TESTClassifyList classify 1
python3 flask_server/image_comparator/utils/makeTask.py Benjamin TESTClassifyList classify 1 test_description
python3 flask_server/image_comparator/utils/makeTask.py Benjamin TESTGridList grid 1
python3 flask_server/image_comparator/utils/makeTask.py Benjamin TESTGridList grid 1 test_description
python3 flask_server/image_comparator/utils/makeTask.py Benjamin TESTPairList pair 1
python3 flask_server/image_comparator/utils/makeTask.py Benjamin TESTPairList pair 1 test_description
In the order they appear this project has been forked and added to. Yet again we fork to make a QTIM-Lab based project that will be adapted and maintained here.
- Jayashree Kalpathy-Cramer, PhD for original source code (https://github.com/AlanCramer/Image-Comparator)
- Collin Wen (https://github.com/CollinWen/Image-Comparator.git)
- Collin Wen (https://github.com/CollinWen/Image-Comparator-Dockerfile)
- Jimmy chen (https://github.com/jche253/Fundus_Classifier_Comparator)
For questions, please contact:
- Benjamin Bearce, [email protected]
- Jayashree Kalpathy-Cramer, PhD [email protected]