forked from MIT-LCP/mimic-code
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
136 changed files
with
480 additions
and
625 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -68,6 +68,7 @@ target/ | |
# Jupyter Notebook checkpoints | ||
.ipynb_checkpoints/ | ||
|
||
|
||
# data files | ||
travisdata/ | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,42 +1,29 @@ | ||
# Link repository with Travis CI | ||
# https://travis-ci.org/ | ||
|
||
# Master branch only | ||
branches: | ||
only: | ||
- travis | ||
- travis | ||
|
||
# Start the databases | ||
# See https://docs.travis-ci.com/user/database-setup/ | ||
addons: | ||
postgresql: "9.4" | ||
postgresql: '9.4' | ||
|
||
services: | ||
- postgresql | ||
- mysql | ||
- postgresql | ||
- mysql | ||
|
||
# Set the language | ||
language: python | ||
python: | ||
- "2.7" | ||
env: | ||
- BUILD_DIR=$TRAVIS_BUILD_DIR/buildmimic/postgres | ||
- DATA_DIR=$TRAVIS_BUILD_DIR/tests/testdata/v1_4 | ||
- '2.7' | ||
|
||
before_script: | ||
- sudo apt-get install python-dev | ||
# - psql -c 'create database mimic_test;' -U postgres | ||
# - psql -c 'create schema mimiciii;' -d mimic_test -U postgres | ||
# - psql target-db -U <admin user> -p <port> -h <DB instance name> -c "\copy source-table from 'source-table.csv' with DELIMITER ','" | ||
# - psql -f './buildmimic/postgres/postgres_create_tables.sql' -U postgres | ||
- sudo apt-get install python-dev | ||
|
||
# command to install dependencies | ||
install: | ||
- pip install psycopg2 --quiet | ||
- pip install pandas --quiet | ||
- pip install MySQL-python --quiet | ||
# - pip install . | ||
# - pip install -r requirements.txt | ||
- pip install psycopg2 --quiet | ||
- pip install pandas --quiet | ||
- pip install MySQL-python --quiet | ||
|
||
# command to run tests | ||
script: nosetests | ||
script: nosetests --verbose --nocapture | ||
|
||
env: | ||
global: | ||
- secure: tUQpMvHoLtRvo7hDfZfSWrSYlDpGZn3OZXQ1ogVMcIQYZ+3yseJNQ71Ov6/Z5JVQgtKmQrMidlmQiWVJnzDtKEIt41bDPOn29yMcTOc/iMwsP48vncIW1ge8JPZXOZeFfRIkhUUMMW/AqBe84nwlAWRz1m4cC2qjYuQ6+FtCqQtPFl7Zc0lQtfJbg5vbG262sadq5oQQi11EzIDLB6NCIsW5xGA8iKWD3YQjX0Gt8G38ZLojDg0NPwSxOAxQwRMBqEGBPltlL0pWFtIy8Puk/Rp6YAX98n/01JNN4khB1YJJJLBfAffZNEwUAKmPuFPiosnzDqAo7ntjUkRfx2NKlVcorLU9B7y8Dqc/61LhvJhmt5k62D9KuU47bF3Zu6n31to2kKd002EfnrroKlxP8Jn/xBluMJyUxFQ3ByjfPzuk0/WVdTrl/8qJoI0x28Vlpz8z6yn3OWWgfqtYLK82MhFF5t3U0zjglZSNn4tdcFK/2U0Yr67ZOkdXfuvjo/zOsY6vML7dr3/wSSAQ0+zpvaTGvKEf6AAMjtjrVvw2dQWQsdB7F23sDuud8SPH3xefFXa6luW6wiQ+ReEs/TiDvG+hjtHPwx/5IcsR1NAHFRFTPffGpge80xfBJWYUpIAttWnRd0iUqa5NgMCZ7D8EsFFD/q6F0YwyEI529EALsGM= | ||
- secure: twAJDVjmLYXq2tSZj9xDCeSksWaufPpIwRv9wuSWt/KCMahKQtymhg56AIhMKARhMaJoWv/S1qWGwVOyAobFwkO8P5mW8QWCPGrN7vGSKmA5+Nvabg1jIQeW+fduLRcHwQQiNba666MM0YMgBNUhjJQn7AqA1a4TaqyjVZag+URv3KzUxd0ypMNFnrhLNriD8iF73DUEqkuNSyUke63MPZAqK3xYERq2y/pV6l3uT6+9sJAgpp+Hf443sxz5KIGI5C5RkDmiwR8SweDPWU+YWaqJp5R28UQ1Sk5EP+jt184/Ze4eKuFLqdtexmX3kMXa3YrmrBIH/HbSEnWLwc5vRzawOSVxV0wZt7C1R0FgHsR0Sz+xqCL32FbzxQRpxgzZdmTwrEdNsBCz1vFqzbr5loTwBK0nUow1ceZqrO3OsYrDTvozYivTwGZnFI4kAFYLz9qgJrf3TgFCZQHJ8PuDsBiY1cYMjDPzmOQdPLr9CSBW2L2GqtD5YOVGhwBrTJuzQmSRotCC1vyvHhTubWcWbIJVvhxki12QyHcfdkKg3ZyJGyRG6y5iQc8VDjTVmNgxs1WRwtmkDe33n2EWFT4sltlHF9mTaRLFBKFsYtcWtNPF5jEvE2AP5uD+jWqHR4/8tbjD12XLIv/wYB/zkxH912ix3+X0fixATRvTO6RZlPw= |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,150 +1,150 @@ | ||
import unittest | ||
import pandas as pd | ||
import os | ||
from subprocess import call | ||
import MySQLdb | ||
|
||
# Config | ||
sqluser = 'root' | ||
testdbname = 'mimic_test_db' | ||
hostname = 'localhost' | ||
datadir = 'testdata/v1_4/' | ||
schema = 'mimiciii' | ||
|
||
# Set paths for scripts to be tested | ||
curpath = os.path.join(os.path.dirname(__file__)) + '/' | ||
|
||
# Display environment variables | ||
print(os.environ) | ||
|
||
# Create dictionary with table details for use in testing | ||
row_dict = { | ||
"ADMISSIONS": 58976, | ||
"CALLOUT": 34499, | ||
"CAREGIVERS": 7567, | ||
"CHARTEVENTS": 330712483, | ||
"CPTEVENTS": 573146, | ||
"D_CPT": 134, | ||
"D_ICD_DIAGNOSES": 14567, | ||
"D_ICD_PROCEDURES": 3882, | ||
"D_ITEMS": 12478, | ||
"D_LABITEMS": 753, | ||
"DATETIMEEVENTS": 4485937, | ||
"DIAGNOSES_ICD": 651047, | ||
"DRGCODES": 125557, | ||
"ICUSTAYS": 61532, | ||
"INPUTEVENTS_CV": 17527935, | ||
"INPUTEVENTS_MV": 3618991, | ||
"LABEVENTS": 27854055, | ||
"MICROBIOLOGYEVENTS": 631726, | ||
"NOTEEVENTS": 2083180, | ||
"OUTPUTEVENTS": 4349218, | ||
"PATIENTS": 46520, | ||
"PRESCRIPTIONS": 4156848, | ||
"PROCEDUREEVENTS_MV": 258066, | ||
"PROCEDURES_ICD": 240095, | ||
"SERVICES": 73343, | ||
"TRANSFERS": 261897 } | ||
|
||
def run_mysql_build_scripts(cur): | ||
# Create tables and loads data | ||
fn = curpath + '../buildmimic/mysql/1-define.sql' | ||
cur.execute(open(fn, "r").read()) | ||
if os.environ.has_key('USER') and os.environ['USER'] == 'jenkins': | ||
# use full dataset | ||
mimic_data_dir = '/home/mimicadmin/data/mimiciii_1_3/' | ||
else: | ||
mimic_data_dir = curpath+datadir | ||
call(['mysql','-f',fn,'-d',testdbname,'-U',sqluser,'-v','mimic_data_dir='+mimic_data_dir]) | ||
# # Add constraints | ||
# fn = curpath + '../buildmimic/mysql/3-constraints.sql' | ||
# cur.execute(open(fn, "r").read()) | ||
# # Add indexes | ||
# fn = curpath + '../buildmimic/mysql/2-indexes.sql' | ||
# cur.execute(open(fn, "r").read()) | ||
pass | ||
|
||
|
||
# Class to run unit tests | ||
class test_mysql(unittest.TestCase): | ||
# setUpClass runs once for the class | ||
@classmethod | ||
def setUpClass(cls): | ||
# Connect to default mysql database | ||
cls.con = MySQLdb.connect(host=hostname, user=sqluser) | ||
cls.cur = cls.con.cursor() | ||
# Create test database | ||
try: | ||
cls.cur.execute('DROP DATABASE ' + testdbname) | ||
except MySQLdb.OperationalError: | ||
pass | ||
cls.cur.execute('CREATE DATABASE ' + testdbname) | ||
cls.cur.close() | ||
cls.con.close() | ||
# Connect to the test database | ||
cls.con = MySQLdb.connect(db=testdbname, user=sqluser) | ||
cls.cur = cls.con.cursor() | ||
# Build the test database | ||
# run_mysql_build_scripts(cls.cur) | ||
cls.cur.close() | ||
cls.con.close() | ||
|
||
# tearDownClass runs once for the class | ||
@classmethod | ||
def tearDownClass(cls): | ||
# Connect to default mysql database | ||
cls.con = MySQLdb.connect(host=hostname, user=sqluser) | ||
cls.cur = cls.con.cursor() | ||
# Drop test database | ||
cls.cur.execute('DROP DATABASE ' + testdbname) | ||
cls.cur.close() | ||
cls.con.close() | ||
|
||
# setUp runs once for each test method | ||
def setUp(self): | ||
# Connect to the test database | ||
self.con = MySQLdb.connect(db=testdbname, user=sqluser) | ||
self.cur = self.con.cursor() | ||
|
||
# tearDown runs once for each test method | ||
def tearDown(self): | ||
self.cur.close() | ||
self.con.close() | ||
|
||
# The MIMIC test db has been created by this point | ||
# Add unit tests below | ||
def test_run_sample_query(self): | ||
test_query = """ | ||
SELECT 'hello world'; | ||
""" | ||
hello_world = pd.read_sql_query(test_query,self.con) | ||
self.assertEqual(hello_world.values[0][0],'hello world') | ||
|
||
# def test_testddl(self): | ||
# # Creates and drops an example schema and table | ||
# fn = curpath + 'testddl.sql' | ||
# self.cur.execute(open(fn, "r").read()) | ||
# # self.assertEqual(1,1) | ||
|
||
# -------------------------------------------------- | ||
# Run a series of checks to ensure ITEMIDs are valid | ||
# All checks should return 0. | ||
# -------------------------------------------------- | ||
|
||
|
||
# ---------------------------------------------------- | ||
# RUN THE FOLLOWING TESTS ON THE FULL DATASET ONLY --- | ||
# ---------------------------------------------------- | ||
|
||
# if os.environ.has_key('USER') and os.environ['USER'] == 'jenkins': | ||
# def test_row_counts_are_as_expected(self): | ||
# for tablename,expectedrows in row_dict.iteritems(): | ||
# query = "SELECT COUNT(*) FROM " + schema + "." + tablename + ";" | ||
# queryresult = pd.read_sql_query(query,self.con) | ||
# self.assertEqual(queryresult.values[0][0],expectedrows) | ||
|
||
def main(): | ||
unittest.main() | ||
|
||
if __name__ == '__main__': | ||
main() | ||
# import unittest | ||
# import pandas as pd | ||
# import os | ||
# from subprocess import call | ||
# import MySQLdb | ||
|
||
# # Config | ||
# sqluser = 'root' | ||
# testdbname = 'mimic_test_db' | ||
# hostname = 'localhost' | ||
# datadir = 'testdata/v1_4/' | ||
# schema = 'mimiciii' | ||
|
||
# # Set paths for scripts to be tested | ||
# curpath = os.path.join(os.path.dirname(__file__)) + '/' | ||
|
||
# # Display environment variables | ||
# print(os.environ) | ||
|
||
# # Create dictionary with table details for use in testing | ||
# row_dict = { | ||
# "ADMISSIONS": 58976, | ||
# "CALLOUT": 34499, | ||
# "CAREGIVERS": 7567, | ||
# "CHARTEVENTS": 330712483, | ||
# "CPTEVENTS": 573146, | ||
# "D_CPT": 134, | ||
# "D_ICD_DIAGNOSES": 14567, | ||
# "D_ICD_PROCEDURES": 3882, | ||
# "D_ITEMS": 12478, | ||
# "D_LABITEMS": 753, | ||
# "DATETIMEEVENTS": 4485937, | ||
# "DIAGNOSES_ICD": 651047, | ||
# "DRGCODES": 125557, | ||
# "ICUSTAYS": 61532, | ||
# "INPUTEVENTS_CV": 17527935, | ||
# "INPUTEVENTS_MV": 3618991, | ||
# "LABEVENTS": 27854055, | ||
# "MICROBIOLOGYEVENTS": 631726, | ||
# "NOTEEVENTS": 2083180, | ||
# "OUTPUTEVENTS": 4349218, | ||
# "PATIENTS": 46520, | ||
# "PRESCRIPTIONS": 4156848, | ||
# "PROCEDUREEVENTS_MV": 258066, | ||
# "PROCEDURES_ICD": 240095, | ||
# "SERVICES": 73343, | ||
# "TRANSFERS": 261897 } | ||
|
||
# def run_mysql_build_scripts(cur): | ||
# # Create tables and loads data | ||
# fn = curpath + '../buildmimic/mysql/1-define.sql' | ||
# cur.execute(open(fn, "r").read()) | ||
# if os.environ.has_key('USER') and os.environ['USER'] == 'jenkins': | ||
# # use full dataset | ||
# mimic_data_dir = '/home/mimicadmin/data/mimiciii_1_3/' | ||
# else: | ||
# mimic_data_dir = curpath+datadir | ||
# call(['mysql','-f',fn,'-d',testdbname,'-U',sqluser,'-v','mimic_data_dir='+mimic_data_dir]) | ||
# # # Add constraints | ||
# # fn = curpath + '../buildmimic/mysql/3-constraints.sql' | ||
# # cur.execute(open(fn, "r").read()) | ||
# # # Add indexes | ||
# # fn = curpath + '../buildmimic/mysql/2-indexes.sql' | ||
# # cur.execute(open(fn, "r").read()) | ||
# pass | ||
|
||
|
||
# # Class to run unit tests | ||
# class test_mysql(unittest.TestCase): | ||
# # setUpClass runs once for the class | ||
# @classmethod | ||
# def setUpClass(cls): | ||
# # Connect to default mysql database | ||
# cls.con = MySQLdb.connect(host=hostname, user=sqluser) | ||
# cls.cur = cls.con.cursor() | ||
# # Create test database | ||
# try: | ||
# cls.cur.execute('DROP DATABASE ' + testdbname) | ||
# except MySQLdb.OperationalError: | ||
# pass | ||
# cls.cur.execute('CREATE DATABASE ' + testdbname) | ||
# cls.cur.close() | ||
# cls.con.close() | ||
# # Connect to the test database | ||
# cls.con = MySQLdb.connect(db=testdbname, user=sqluser) | ||
# cls.cur = cls.con.cursor() | ||
# # Build the test database | ||
# # run_mysql_build_scripts(cls.cur) | ||
# cls.cur.close() | ||
# cls.con.close() | ||
|
||
# # tearDownClass runs once for the class | ||
# @classmethod | ||
# def tearDownClass(cls): | ||
# # Connect to default mysql database | ||
# cls.con = MySQLdb.connect(host=hostname, user=sqluser) | ||
# cls.cur = cls.con.cursor() | ||
# # Drop test database | ||
# cls.cur.execute('DROP DATABASE ' + testdbname) | ||
# cls.cur.close() | ||
# cls.con.close() | ||
|
||
# # setUp runs once for each test method | ||
# def setUp(self): | ||
# # Connect to the test database | ||
# self.con = MySQLdb.connect(db=testdbname, user=sqluser) | ||
# self.cur = self.con.cursor() | ||
|
||
# # tearDown runs once for each test method | ||
# def tearDown(self): | ||
# self.cur.close() | ||
# self.con.close() | ||
|
||
# # The MIMIC test db has been created by this point | ||
# # Add unit tests below | ||
# def test_run_sample_query(self): | ||
# test_query = """ | ||
# SELECT 'hello world'; | ||
# """ | ||
# hello_world = pd.read_sql_query(test_query,self.con) | ||
# self.assertEqual(hello_world.values[0][0],'hello world') | ||
|
||
# # def test_testddl(self): | ||
# # # Creates and drops an example schema and table | ||
# # fn = curpath + 'testddl.sql' | ||
# # self.cur.execute(open(fn, "r").read()) | ||
# # # self.assertEqual(1,1) | ||
|
||
# # -------------------------------------------------- | ||
# # Run a series of checks to ensure ITEMIDs are valid | ||
# # All checks should return 0. | ||
# # -------------------------------------------------- | ||
|
||
|
||
# # ---------------------------------------------------- | ||
# # RUN THE FOLLOWING TESTS ON THE FULL DATASET ONLY --- | ||
# # ---------------------------------------------------- | ||
|
||
# # if os.environ.has_key('USER') and os.environ['USER'] == 'jenkins': | ||
# # def test_row_counts_are_as_expected(self): | ||
# # for tablename,expectedrows in row_dict.iteritems(): | ||
# # query = "SELECT COUNT(*) FROM " + schema + "." + tablename + ";" | ||
# # queryresult = pd.read_sql_query(query,self.con) | ||
# # self.assertEqual(queryresult.values[0][0],expectedrows) | ||
|
||
# def main(): | ||
# unittest.main() | ||
|
||
# if __name__ == '__main__': | ||
# main() |
Oops, something went wrong.