An Open-Source Tool for Automatic Disease Diagnosis..

Overview

OpenMedicalChatbox

An Open-Source Package for Automatic Disease Diagnosis.

Overview

Due to the lack of open source for existing RL-base automated diagnosis methods. It's hard to make a comparison for different methods. OpenMedicalChatbox integrates several current diagnostic methods and datasets.

Dataset

At here, we show all the mentioned datasets in existing medical methods, including MZ-4, Dxy, MZ-10 and a simulated dataset based on Symcat. In goal.set in their folders, explicit symptoms, implicit symptoms and diagnosis given by doctors are recorded for each sample. Also, we provide the corresponding tools to extend them for each methods.

Here is the overview of datasets.

Name # of user goal # of diseases Ave. # of im. sym # of sym.
MZ-4 1,733 4 5.46 230
MZ-10 3,745 10 5.28 318
Dxy 527 5 1.67 41
SymCat-SD-90 30,000 90 2.60 266

Methods

Besides, we reproduce several mainstream models for comparison. For further information, you can refer to the paper.

  1. Flat-DQN: This is the baseline DQN agent, which has one layer policy and an action space including both symptoms and diseases.
  2. HRL-pretrained: This is a hierarchical model. The low level policy is pre-trained first and then the high level policy is trained. Besides, there is no disease classifier and the diagnosis is made by workers.
  3. REFUEL: This is a reinforcement learning method with reward shaping and feature rebuilding. It uses a branch to reconstruct the symptom vector to guide the policy gradient.
  4. KR-DS: This is an improved method based on Flat-DQN. It integrates a relational refinement branch and a knowledge-routed graph to strengthen the relationship between disease and symptoms. Here we adjust the code from fantasySE.
  5. GAMP: This is a GAN-based policy gradient network. It uses the GAN network to avoid generating randomized trials of symptom, and add mutual information to encourage the model to select the most discriminative symptoms.
  6. HRL: This is a new hierarchical policy we purposed for diagnosis. The high level policy consists of a master model that is responsible for triggering a low level model, the low level policy consists of several symptom checkers and a disease classifier. Also, we try not to divide symptoms into different group (Denoted as HRL (w/o grouped)) to demonstrate the strength of two-level structure and remove the separate disease discriminator (Denoted as HRL (w/o discriminator)) to show the effect of disease grouping in symptom information extraction.

Installation

  1. Install the packages
pip install OpenMedicalChatBox

or Cloning this repo

git clone https://github.com/Guardianzc/OpenMedicalChatBox.git
cd OpenMedicalChatBox
python setup.py install

After installation, you can try running demo.py to check if OpenMedicalChatBox works well

python demo.py
  1. Redirect the parameter file0 to the dataset needed. Note that if you use the KR-DS model, please redirect to "dataset_dxy" folder, and HRL dataset use the "HRL" folder.
  2. Tune the parameter as you need.
  3. Run the file or use the code below

Examples

The following code shows how to use OpenMedicalChatBox to apply different diagnosis method on datasets.

import OpenMedicalChatBox as OMCB
from warnings import simplefilter
simplefilter(action='ignore', category=FutureWarning)

HRL_test = OMCB.HRL(dataset_path = '.\Data\mz4\HRL\\', model_save_path = './simulate', groups = 2, model_load_path = './simulate', cuda_idx = 1, train_mode = True)
HRL_test.run()

KRDS_test = OMCB.KRDS(dataset_path = '.\Data\mz4\dataset_dxy\\', model_save_path = './simulate', model_load_path = './simulate', cuda_idx = 1, train_mode = True)
KRDS_test.run()


Flat_DQN_test = OMCB.Flat_DQN(dataset_path = '.\Data\mz4\\', model_save_path = './simulate',  model_load_path = './simulate', cuda_idx = 1, train_mode = True)
Flat_DQN_test.run()


GAMP_test = OMCB.GAMP(dataset_path = '.\Data\mz4\\', model_save_path = './simulate', model_load_path = './simulate', cuda_idx = 1, train_mode = True)
GAMP_test.run()

REFUEL_test = OMCB.REFUEL(dataset_path = '.\Data\mz4\\', model_save_path = './simulate', model_load_path = './simulate', cuda_idx = 0, train_mode = True)
REFUEL_test.run()

The detail experimental parameters are shown in here.

Experiment

We show the accuracy for disease diagnosis (Acc.), recall for symptom recovery (M.R.) and the average turns in interaction (Avg. T).

  • In real world dataset
Dxy MZ-4 MZ-10
Model Acc. M.R. Avg.T Acc. M.R. Avg.T Acc. M.R. Avg.T
Flat-DQN 0.731 0.110 1.96 0.681 0.062 1.27 0.408 0.047 9.75
KR-DS 0.740 0.399 5.65 0.678 0.177 4.61 0.485 0.279 5.95
REFUEL 0.721 0.186 3.11 0.716 0.215 5.01 0.505 0.262 5.50
GAMP 0.731 0.268 2.84 0.644 0.107 2.93 0.500 0.067 1.78
Classifier Lower Bound 0.682 -- -- 0.671 -- -- 0.532 -- --
HRL (w/o grouped) 0.731 0.297 6.61 0.689 0.004 2.25 0.540 0.114 4.59
HRL (w/o discriminator) -- 0.512 8.42 -- 0.233 5.71 -- 0.330 8.75
HRL 0.779 0.424 8.61 0.735 0.229 5.08 0.556 0.295 6.99
Classifier Upper Bound 0.846 -- -- 0.755 -- -- 0.612 -- --
  • In synthetic dataset
Model Acc. M.R. Avg.T
Flat-DQN 0.343 0.023 1.23
KR-DS 0.357 0.388 6.24
REFUEL 0.347 0.161 4.56
GAMP 0.267 0.077 1.36
Classifier Lower Bound 0.308 -- --
HRL-pretrained 0.452 -- 3.42
HRL 0.504 0.495 6.48
Classifier Upper Bound 0.781 -- --

Reference

Citation

Please cite our paper if you use toolkit

@article{liao2020task,
  title={Task-oriented dialogue system for automatic disease diagnosis via hierarchical reinforcement learning},
  author={Liao, Kangenbei and Liu, Qianlong and Wei, Zhongyu and Peng, Baolin and Chen, Qin and Sun, Weijian and Huang, Xuanjing},
  journal={arXiv preprint arXiv:2004.14254},
  year={2020}
}
Owner
School of Data Science, Fudan University
Platform-agnostic AI Framework ๐Ÿ”ฅ

๐Ÿ‡ฌ๐Ÿ‡ง TensorLayerX is a multi-backend AI framework, which can run on almost all operation systems and AI hardwares, and support hybrid-framework progra

TensorLayer Community 171 Jan 06, 2023
Pip-package for trajectory benchmarking from "Be your own Benchmark: No-Reference Trajectory Metric on Registered Point Clouds", ECMR'21

Map Metrics for Trajectory Quality Map metrics toolkit provides a set of metrics to quantitatively evaluate trajectory quality via estimating consiste

Mobile Robotics Lab. at Skoltech 31 Oct 28, 2022
Distributionally robust neural networks for group shifts

Distributionally Robust Neural Networks for Group Shifts: On the Importance of Regularization for Worst-Case Generalization This code implements the g

151 Dec 25, 2022
MiniHack the Planet: A Sandbox for Open-Ended Reinforcement Learning Research

MiniHack the Planet: A Sandbox for Open-Ended Reinforcement Learning Research

Facebook Research 338 Dec 29, 2022
U-Net Brain Tumor Segmentation

U-Net Brain Tumor Segmentation ๐Ÿš€ ๏ผšFeb 2019 the data processing implementation in this repo is not the fastest way (code need update, contribution is

Hao 448 Jan 02, 2023
A font family with a great monospaced variant for programmers.

Fantasque Sans Mono A programming font, designed with functionality in mind, and with some wibbly-wobbly handwriting-like fuzziness that makes it unas

Jany Belluz 6.3k Jan 08, 2023
Exploration-Exploitation Dilemma Solving Methods

Exploration-Exploitation Dilemma Solving Methods Medium article for this repo - HERE In ths repo I implemented two techniques for tackling mentioned t

Aman Mishra 6 Jan 25, 2022
๐Ÿ˜ฎThe official implementation of "CoNeRF: Controllable Neural Radiance Fields" ๐Ÿ˜ฎ

CoNeRF: Controllable Neural Radiance Fields This is the official implementation for "CoNeRF: Controllable Neural Radiance Fields" Project Page Paper V

Kacper Kania 61 Dec 24, 2022
Learning to Identify Top Elo Ratings with A Dueling Bandits Approach

Learning to Identify Top Elo Ratings We propose two algorithms MaxIn-Elo and MaxIn-mElo to solve the top players identification on the transitive and

2 Jan 14, 2022
Official PyTorch code for Mutual Affine Network for Spatially Variant Kernel Estimation in Blind Image Super-Resolution (MANet, ICCV2021)

Mutual Affine Network for Spatially Variant Kernel Estimation in Blind Image Super-Resolution (MANet, ICCV2021) This repository is the official PyTorc

Jingyun Liang 139 Dec 29, 2022
Generative Query Network (GQN) in PyTorch as described in "Neural Scene Representation and Rendering"

Update 2019/06/24: A model trained on 10% of the Shepard-Metzler dataset has been added, the following notebook explains the main features of this mod

Jesper Wohlert 313 Dec 27, 2022
Patch-Based Deep Autoencoder for Point Cloud Geometry Compression

Patch-Based Deep Autoencoder for Point Cloud Geometry Compression Overview The ever-increasing 3D application makes the point cloud compression unprec

17 Dec 05, 2022
MassiveSumm: a very large-scale, very multilingual, news summarisation dataset

MassiveSumm: a very large-scale, very multilingual, news summarisation dataset This repository contains links to data and code to fetch and reproduce

Daniel Varab 19 Dec 16, 2022
Towards Multi-Camera 3D Human Pose Estimation in Wild Environment

PanopticStudio Toolbox This repository has a toolbox to download, process, and visualize the Panoptic Studio (Panoptic) data. Note: Sep-21-2020: Curre

335 Jan 09, 2023
Code for ECCV 2020 paper "Contacts and Human Dynamics from Monocular Video".

Contact and Human Dynamics from Monocular Video This is the official implementation for the ECCV 2020 spotlight paper by Davis Rempe, Leonidas J. Guib

Davis Rempe 207 Jan 05, 2023
Implementation of "JOKR: Joint Keypoint Representation for Unsupervised Cross-Domain Motion Retargeting"

JOKR: Joint Keypoint Representation for Unsupervised Cross-Domain Motion Retargeting Pytorch implementation for the paper "JOKR: Joint Keypoint Repres

45 Dec 25, 2022
Repository features UNet inspired architecture used for segmenting lungs on chest X-Ray images

Lung Segmentation (2D) Repository features UNet inspired architecture used for segmenting lungs on chest X-Ray images. Demo See the application of the

163 Sep 21, 2022
Source codes for the paper "Local Additivity Based Data Augmentation for Semi-supervised NER"

LADA This repo contains codes for the following paper: Jiaao Chen*, Zhenghui Wang*, Ran Tian, Zichao Yang, Diyi Yang: Local Additivity Based Data Augm

GT-SALT 36 Dec 02, 2022
Code for the paper "Can Active Learning Preemptively Mitigate Fairness Issues?" presented at RAI 2021.

Can Active Learning Preemptively Mitigate Fairness Issues? Code for the paper "Can Active Learning Preemptively Mitigate Fairness Issues?" presented a

ElementAI 7 Aug 12, 2022
This repository is an official implementation of the paper MOTR: End-to-End Multiple-Object Tracking with TRansformer.

MOTR: End-to-End Multiple-Object Tracking with TRansformer This repository is an official implementation of the paper MOTR: End-to-End Multiple-Object

348 Jan 07, 2023