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
PIKA: a lightweight speech processing toolkit based on Pytorch and (Py)Kaldi

PIKA: a lightweight speech processing toolkit based on Pytorch and (Py)Kaldi PIKA is a lightweight speech processing toolkit based on Pytorch and (Py)

336 Nov 25, 2022
RRL: Resnet as representation for Reinforcement Learning

Resnet as representation for Reinforcement Learning (RRL) is a simple yet effective approach for training behaviors directly from visual inputs. We demonstrate that features learned by standard image

Meta Research 21 Dec 07, 2022
This repository provides code for "On Interaction Between Augmentations and Corruptions in Natural Corruption Robustness".

On Interaction Between Augmentations and Corruptions in Natural Corruption Robustness This repository provides the code for the paper On Interaction B

Meta Research 33 Dec 08, 2022
Python implementation of the multistate Bennett acceptance ratio (MBAR)

pymbar Python implementation of the multistate Bennett acceptance ratio (MBAR) method for estimating expectations and free energy differences from equ

Chodera lab // Memorial Sloan Kettering Cancer Center 169 Dec 02, 2022
Code accompanying the paper Shared Independent Component Analysis for Multi-subject Neuroimaging

ShICA Code accompanying the paper Shared Independent Component Analysis for Multi-subject Neuroimaging Install Move into the ShICA directory cd ShICA

8 Nov 07, 2022
Jigsaw Rate Severity of Toxic Comments

Jigsaw Rate Severity of Toxic Comments

Guanshuo Xu 66 Nov 30, 2022
A collection of implementations of deep domain adaptation algorithms

Deep Transfer Learning on PyTorch This is a PyTorch library for deep transfer learning. We divide the code into two aspects: Single-source Unsupervise

Yongchun Zhu 647 Jan 03, 2023
An intuitive library to extract features from time series

Time Series Feature Extraction Library Intuitive time series feature extraction This repository hosts the TSFEL - Time Series Feature Extraction Libra

Associação Fraunhofer Portugal Research 589 Jan 04, 2023
Face-Recognition-based-Attendance-System - An implementation of Attendance System in python.

Face-Recognition-based-Attendance-System A real time implementation of Attendance System in python. Pre-requisites To understand the implentation of F

Muhammad Zain Ul Haque 1 Dec 31, 2021
Official PyTorch implementation of SyntaSpeech (IJCAI 2022)

SyntaSpeech: Syntax-Aware Generative Adversarial Text-to-Speech | | | | 中文文档 This repository is the official PyTorch implementation of our IJCAI-2022

Zhenhui YE 116 Nov 24, 2022
Mask-invariant Face Recognition through Template-level Knowledge Distillation

Mask-invariant Face Recognition through Template-level Knowledge Distillation This is the official repository of "Mask-invariant Face Recognition thro

Fadi Boutros 35 Dec 06, 2022
GeneGAN: Learning Object Transfiguration and Attribute Subspace from Unpaired Data

GeneGAN: Learning Object Transfiguration and Attribute Subspace from Unpaired Data By Shuchang Zhou, Taihong Xiao, Yi Yang, Dieqiao Feng, Qinyao He, W

Taihong Xiao 141 Apr 16, 2021
Construct a neural network frame by Numpy

本项目的CSDN博客链接:https://blog.csdn.net/weixin_41578567/article/details/111482022 1. 概览 本项目主要用于神经网络的学习,通过基于numpy的实现,了解神经网络底层前向传播、反向传播以及各类优化器的原理。 该项目目前已实现的功

24 Jan 22, 2022
PyTorch code for the paper "Curriculum Graph Co-Teaching for Multi-target Domain Adaptation" (CVPR2021)

PyTorch code for the paper "Curriculum Graph Co-Teaching for Multi-target Domain Adaptation" (CVPR2021) This repo presents PyTorch implementation of M

Evgeny 79 Dec 19, 2022
This is a Keras-based Python implementation of DeepMask- a complex deep neural network for learning object segmentation masks

NNProject - DeepMask This is a Keras-based Python implementation of DeepMask- a complex deep neural network for learning object segmentation masks. Th

189 Nov 16, 2022
MNE: Magnetoencephalography (MEG) and Electroencephalography (EEG) in Python

MNE-Python MNE-Python software is an open-source Python package for exploring, visualizing, and analyzing human neurophysiological data such as MEG, E

MNE tools for MEG and EEG data analysis 2.1k Dec 28, 2022
This repository contains a PyTorch implementation of "AD-NeRF: Audio Driven Neural Radiance Fields for Talking Head Synthesis".

AD-NeRF: Audio Driven Neural Radiance Fields for Talking Head Synthesis | Project Page | Paper | PyTorch implementation for the paper "AD-NeRF: Audio

551 Dec 29, 2022
免费获取http代理并生成proxifier配置文件

freeproxy 免费获取http代理并生成proxifier配置文件 公众号:台下言书 工具说明:https://mp.weixin.qq.com/s?__biz=MzIyNDkwNjQ5Ng==&mid=2247484425&idx=1&sn=56ccbe130822aa35038095317

说书人 32 Mar 25, 2022
🏎️ Accelerate training and inference of 🤗 Transformers with easy to use hardware optimization tools

Hugging Face Optimum 🤗 Optimum is an extension of 🤗 Transformers, providing a set of performance optimization tools enabling maximum efficiency to t

Hugging Face 842 Dec 30, 2022
PyTorch implementation of Barlow Twins.

Barlow Twins: Self-Supervised Learning via Redundancy Reduction PyTorch implementation of Barlow Twins. @article{zbontar2021barlow, title={Barlow Tw

Facebook Research 839 Dec 29, 2022