In [45]:
import os.path as op
import sys
sys.path.insert(0, op.expanduser("~/projects/io3d"))

import numpy as np
import io3d
import pandas as pd
import matplotlib.pyplot as plt

In [46]:
patient_id_path = io3d.datasets.join_path("patient_id.csv")
input_path =  io3d.datasets.join_path("chk")
# input_path =  io3d.datasets.join_path("chk/2018-04-15/**")
output_path =  io3d.datasets.join_path("anon/")

In [ ]:


In [ ]:


In [ ]:


In [47]:
df = pd.read_csv(patient_id_path)
# df

Prepare humanized hash


In [48]:
import hashlib

m = hashlib.sha256()
m.update("as".encode())
# m.digest_size = 8
# str(m.digest())
display(m.hexdigest())
m.update("ii".encode())
display(m.hexdigest())
m.update("as".encode())
display(m.hexdigest())


'f4bf9f7fcbedaba0392f108c59d8f4a38b3838efb64877380171b54475c2ade8'
'518c63c8b9995a21737699708801b3e2f8ebe7701fe6b6ab6dfc9e118f4ec5fa'
'4dc24ef5b819958c98ba325ae1eb7548a3a6bf5079442da14d1efee23af4964a'

In [49]:
m.update(bytes(str(-5).encode()))

In [50]:
import humanhash
hh = '03'
humanhash.humanize(hh, words=2)


Out[50]:
'alaska'

In [51]:
def get_hexd_and_human_digest(data, words_number=4):
    if type(data) != str:
        data = str(data)
        
    inbytes = data.encode()
    m = hashlib.sha256()
    m.update(inbytes)
    hexdigest = m.hexdigest()
    
    humandigest = humanhash.humanize(hexdigest, words=words_number) 
    return hexdigest, humandigest

In [52]:
str == type ("as")


Out[52]:
True

In [53]:
# sha256
# 2 words: max_test_number = 600
# 3 words: max_test_number = 7100
# 4 words: max_test_number = 76000
max_test_number = 76000
words_number = 4
numbers = list(range(0, max_test_number))
hashs = []
for id_int in numbers:
    hexdigest, humandigest = get_hexd_and_human_digest(id_int, words_number=words_number)

    hashs.append(humandigest)
# display(hashs)
len_orig = len(numbers)
len_hdigest = len(np.unique(hashs))
assert(len_orig == len_hdigest)

In [54]:
hashs


Out[54]:
['hot-missouri-glucose-september',
 'wyoming-william-louisiana-kilo',
 'fifteen-river-sad-michigan',
 'ack-double-oregon-nevada',
 'river-may-indigo-friend',
 'mike-nitrogen-purple-black',
 'twenty-failed-spaghetti-berlin',
 'finch-fanta-zulu-lamp',
 'lemon-beer-mockingbird-oxygen',
 'earth-cola-six-nuts',
 'carbon-neptune-washington-georgia',
 'lion-carolina-six-juliet',
 'early-comet-fourteen-asparagus',
 'artist-monkey-april-zulu',
 'coffee-one-wisconsin-william',
 'hawaii-glucose-triple-muppet',
 'football-sixteen-one-jupiter',
 'winner-fifteen-mike-twenty',
 'coffee-river-lake-kilo',
 'missouri-glucose-jersey-social',
 'charlie-triple-colorado-wolfram',
 'autumn-august-gee-iowa',
 'zulu-oregon-mike-cat',
 'pennsylvania-ack-florida-uranus',
 'rugby-uniform-cold-cold',
 'magnesium-west-bravo-arkansas',
 'edward-echo-quiet-october',
 'butter-social-muppet-emma',
 'cup-seventeen-network-massachusetts',
 'speaker-item-robin-delaware',
 'victor-glucose-arkansas-south',
 'mobile-crazy-fanta-xray',
 'high-georgia-iowa-enemy',
 'grey-summer-cardinal-zulu',
 'neptune-cardinal-cardinal-helium',
 'foxtrot-blossom-pizza-stream',
 'hot-angel-monkey-king',
 'lake-pluto-october-mars',
 'summer-eight-blossom-table',
 'hamper-carpet-earth-jersey',
 'october-massachusetts-helium-queen',
 'delta-winter-louisiana-sierra',
 'march-dakota-one-crazy',
 'music-oregon-kentucky-mike',
 'hydrogen-nuts-zebra-alabama',
 'stream-robin-one-romeo',
 'november-mango-nitrogen-johnny',
 'wyoming-vegan-washington-carpet',
 'uranus-gee-london-jupiter',
 'cardinal-echo-fillet-pluto',
 'early-mississippi-xray-cup',
 'arkansas-romeo-four-violet',
 'comet-virginia-maryland-ten',
 'muppet-skylark-zebra-nuts',
 'double-happy-zebra-connecticut',
 'sad-connecticut-kansas-quiet',
 'nine-thirteen-saturn-undress',
 'artist-two-dakota-wolfram',
 'louisiana-uncle-cup-delaware',
 'mars-may-fish-bulldog',
 'princess-apart-enemy-summer',
 'neptune-october-wisconsin-dakota',
 'texas-table-lamp-table',
 'bluebird-friend-mars-carbon',
 'mike-august-alaska-california',
 'fix-eight-cold-march',
 'arkansas-may-montana-beer',
 'stairway-yellow-lamp-sixteen',
 'snake-bacon-glucose-victor',
 'bravo-alabama-sad-quiet',
 'moon-carpet-golf-tango',
 'minnesota-cold-lithium-nitrogen',
 'cardinal-seventeen-charlie-august',
 'virginia-speaker-artist-magnesium',
 'maine-seventeen-hydrogen-two',
 'hot-fillet-yellow-snake',
 'nitrogen-jersey-kansas-louisiana',
 'rugby-table-april-cold',
 'video-neptune-six-rugby',
 'hotel-twelve-july-four',
 'texas-white-may-solar',
 'helium-jig-december-spaghetti',
 'mirror-stream-oklahoma-lion',
 'sierra-grey-saturn-washington',
 'may-lithium-network-freddie',
 'four-bravo-green-asparagus',
 'december-oscar-saturn-robert',
 'king-pizza-single-black',
 'london-north-seven-nevada',
 'maryland-blossom-tennis-echo',
 'missouri-oxygen-missouri-ink',
 'rugby-may-rugby-vermont',
 'maine-wisconsin-kentucky-coffee',
 'early-seventeen-quiet-violet',
 'jig-india-carpet-low',
 'queen-north-golf-delta',
 'emma-thirteen-muppet-mississippi',
 'indigo-stream-princess-one',
 'beryllium-xray-item-blossom',
 'maryland-lemon-sad-stairway',
 'uranus-idaho-pizza-bravo',
 'speaker-lemon-carpet-iowa',
 'minnesota-purple-william-comet',
 'chicken-lactose-early-zebra',
 'fish-purple-leopard-alabama',
 'quiet-oranges-low-fifteen',
 'carbon-uncle-moon-stairway',
 'mockingbird-solar-nuts-uniform',
 'ink-aspen-monkey-orange',
 'march-paris-georgia-avocado',
 'speaker-foxtrot-triple-muppet',
 'lamp-mobile-music-cold',
 'orange-lamp-nineteen-pip',
 'butter-coffee-seven-october',
 'echo-rugby-nevada-moon',
 'robin-hot-edward-item',
 'gee-louisiana-skylark-butter',
 'saturn-fourteen-may-colorado',
 'cardinal-edward-double-north',
 'mobile-oscar-cardinal-bakerloo',
 'seven-minnesota-kentucky-maine',
 'bluebird-bacon-pasta-winter',
 'low-lion-don-march',
 'video-steak-white-oxygen',
 'california-social-white-oklahoma',
 'quebec-mobile-diet-hotel',
 'iowa-asparagus-sodium-summer',
 'winner-kilo-november-mobile',
 'pizza-montana-echo-kentucky',
 'romeo-alpha-pennsylvania-earth',
 'king-yellow-table-mountain',
 'oklahoma-arkansas-nebraska-jig',
 'papa-cardinal-batman-earth',
 'cat-west-bulldog-low',
 'six-mirror-fish-robert',
 'idaho-muppet-purple-grey',
 'alpha-nuts-pip-bluebird',
 'oxygen-stairway-cat-hotel',
 'mobile-delta-oklahoma-fourteen',
 'edward-early-princess-chicken',
 'yellow-bakerloo-fillet-red',
 'fix-blossom-november-mobile',
 'violet-india-mountain-oregon',
 'aspen-moon-bacon-idaho',
 'pennsylvania-don-fifteen-violet',
 'yellow-charlie-arizona-georgia',
 'failed-bulldog-hotel-tango',
 'zulu-nebraska-echo-montana',
 'angel-magnesium-december-salami',
 'zebra-orange-mobile-alpha',
 'indigo-romeo-summer-wisconsin',
 'nuts-arizona-connecticut-oregon',
 'tennis-nitrogen-north-massachusetts',
 'zebra-fish-music-alaska',
 'carpet-nuts-network-pennsylvania',
 'lithium-papa-eleven-sweet',
 'ceiling-iowa-may-skylark',
 'november-river-mockingbird-quebec',
 'victor-aspen-tennis-maine',
 'kilo-georgia-blossom-bluebird',
 'missouri-grey-sierra-maine',
 'mobile-pizza-winter-social',
 'march-one-floor-tango',
 'twelve-monkey-hydrogen-william',
 'mobile-cold-table-michigan',
 'alanine-alanine-high-winter',
 'august-ink-mississippi-hamper',
 'washington-equal-massachusetts-bravo',
 'virginia-quebec-princess-seventeen',
 'victor-delaware-maryland-four',
 'cold-grey-delaware-december',
 'zebra-princess-mars-violet',
 'uranus-three-snake-freddie',
 'lima-river-lion-maine',
 'asparagus-virginia-zulu-bulldog',
 'black-thirteen-beryllium-berlin',
 'apart-alaska-football-grey',
 'west-north-four-rugby',
 'yellow-lemon-papa-ten',
 'florida-sink-texas-montana',
 'ohio-muppet-purple-mike',
 'oven-fourteen-crazy-red',
 'carpet-solar-hotel-chicken',
 'butter-ceiling-triple-blue',
 'low-aspen-eight-purple',
 'jig-carbon-lactose-red',
 'bravo-apart-one-fruit',
 'lion-oxygen-bluebird-august',
 'west-pluto-bluebird-saturn',
 'early-social-music-batman',
 'beryllium-nine-wyoming-early',
 'delaware-beryllium-spaghetti-kilo',
 'one-india-iowa-floor',
 'fish-island-bakerloo-foxtrot',
 'football-table-table-bacon',
 'diet-november-nevada-table',
 'december-mountain-butter-single',
 'lion-mountain-alabama-pluto',
 'sierra-burger-happy-green',
 'mirror-alanine-coffee-johnny',
 'iowa-william-uranus-beer',
 'thirteen-potato-potato-pizza',
 'seven-queen-carolina-two',
 'aspen-arizona-sodium-mike',
 'burger-alaska-enemy-oven',
 'floor-idaho-london-alaska',
 'west-lamp-leopard-diet',
 'missouri-four-oven-kansas',
 'paris-fish-louisiana-hawaii',
 'lake-winner-louisiana-tennessee',
 'green-romeo-mountain-eleven',
 'speaker-kansas-snake-gee',
 'winter-avocado-yankee-william',
 'mirror-utah-london-five',
 'oklahoma-pennsylvania-happy-september',
 'comet-shade-mississippi-chicken',
 'kilo-winner-georgia-venus',
 'west-london-batman-whiskey',
 'aspen-kilo-autumn-steak',
 'failed-angel-washington-mexico',
 'beryllium-friend-pennsylvania-london',
 'fourteen-wolfram-mike-alabama',
 'montana-may-washington-aspen',
 'kilo-december-uniform-quiet',
 'monkey-harry-high-speaker',
 'autumn-freddie-oxygen-cola',
 'sierra-nuts-paris-river',
 'rugby-foxtrot-triple-bulldog',
 'alabama-oxygen-quiet-blossom',
 'mirror-tango-freddie-ink',
 'alabama-victor-september-nuts',
 'earth-sodium-california-skylark',
 'monkey-london-nine-leopard',
 'moon-hamper-delta-jupiter',
 'mississippi-red-hydrogen-sierra',
 'cold-wyoming-friend-potato',
 'whiskey-equal-maryland-fish',
 'crazy-hydrogen-ceiling-steak',
 'utah-gee-texas-spring',
 'asparagus-jupiter-oranges-red',
 'hot-johnny-coffee-social',
 'lake-stream-berlin-river',
 'bluebird-pip-spaghetti-whiskey',
 'kentucky-red-timing-nitrogen',
 'wisconsin-uncle-nineteen-lamp',
 'double-georgia-seventeen-oscar',
 'equal-jig-enemy-neptune',
 'magnesium-item-mirror-moon',
 'oven-uncle-equal-papa',
 'seven-purple-robert-mobile',
 'ink-michigan-lactose-one',
 'fruit-wyoming-friend-bluebird',
 'early-twelve-robert-skylark',
 'bluebird-aspen-hydrogen-william',
 'bacon-two-oklahoma-hamper',
 'pip-cat-illinois-beer',
 'romeo-pip-music-oven',
 'single-montana-fanta-mars',
 'burger-west-cup-early',
 'hamper-snake-spaghetti-victor',
 'tango-winter-may-mars',
 'ohio-india-beryllium-double',
 'queen-stream-saturn-oven',
 'item-eight-uranus-stream',
 'washington-kitten-illinois-pluto',
 'uncle-oscar-low-cold',
 'floor-snake-salami-winner',
 'quiet-king-asparagus-oregon',
 'papa-spaghetti-dakota-april',
 'uncle-virginia-indigo-sweet',
 'comet-item-ten-aspen',
 'maine-wisconsin-river-earth',
 'angel-lima-freddie-mirror',
 'ack-aspen-green-georgia',
 'sierra-single-early-angel',
 'jupiter-robin-xray-oxygen',
 'march-emma-tennis-earth',
 'glucose-stairway-wolfram-solar',
 'monkey-early-earth-march',
 'texas-mobile-maryland-seventeen',
 'failed-fanta-west-connecticut',
 'mars-mobile-delaware-johnny',
 'east-five-magnesium-fix',
 'minnesota-chicken-yellow-michigan',
 'angel-ohio-early-wolfram',
 'oxygen-lithium-william-wisconsin',
 'eight-alaska-hydrogen-moon',
 'fanta-magnesium-sink-freddie',
 'diet-shade-romeo-seventeen',
 'five-artist-blossom-yankee',
 'solar-october-beryllium-iowa',
 'eight-magnesium-stairway-two',
 'hamper-six-white-idaho',
 'sierra-lima-football-alpha',
 'five-ten-hawaii-social',
 'purple-solar-artist-beryllium',
 'butter-blossom-twelve-nine',
 'oscar-tennessee-asparagus-earth',
 'beryllium-cardinal-charlie-tango',
 'mississippi-lake-xray-georgia',
 'pizza-lithium-robin-fix',
 'west-mobile-nebraska-iowa',
 'alaska-ack-robert-ohio',
 'chicken-sink-comet-oregon',
 'timing-social-three-vegan',
 'ack-social-island-island',
 'july-kentucky-blossom-batman',
 'undress-jersey-virginia-bluebird',
 'monkey-ack-nuts-wyoming',
 'uncle-winter-coffee-hotel',
 'chicken-comet-georgia-nitrogen',
 'quiet-bravo-illinois-neptune',
 'speaker-six-lima-south',
 'echo-timing-muppet-mobile',
 'wisconsin-crazy-twenty-cat',
 'monkey-avocado-fillet-mars',
 'purple-hydrogen-november-hamper',
 'social-delaware-carolina-batman',
 'dakota-oregon-don-paris',
 'blue-kitten-montana-cardinal',
 'pip-purple-king-india',
 'virginia-equal-burger-apart',
 'papa-ohio-sodium-california',
 'steak-wolfram-rugby-tango',
 'triple-failed-apart-mississippi',
 'uranus-tango-london-artist',
 'september-wisconsin-oregon-utah',
 'bacon-may-bulldog-mississippi',
 'red-missouri-robert-william',
 'october-butter-early-fourteen',
 'lemon-fish-football-mockingbird',
 'london-burger-lima-muppet',
 'undress-west-skylark-carbon',
 'indigo-mango-island-kitten',
 'sodium-queen-fillet-leopard',
 'mountain-virginia-pasta-alabama',
 'eight-cola-purple-carpet',
 'zulu-pluto-november-river',
 'neptune-white-mississippi-eleven',
 'texas-connecticut-winner-football',
 'december-kansas-violet-september',
 'july-tennessee-earth-venus',
 'fruit-september-finch-delta',
 'gee-shade-nitrogen-triple',
 'charlie-quiet-alpha-march',
 'illinois-eight-alabama-equal',
 'pasta-orange-fruit-carolina',
 'tennessee-whiskey-vegan-mike',
 'apart-india-uranus-august',
 'montana-moon-louisiana-orange',
 'social-xray-black-alabama',
 'stairway-stairway-eighteen-whiskey',
 'network-foxtrot-maryland-island',
 'ten-green-stairway-oklahoma',
 'quebec-emma-white-fillet',
 'aspen-missouri-mockingbird-oklahoma',
 'uniform-uncle-may-jersey',
 'foxtrot-shade-mike-lamp',
 'oscar-triple-arizona-glucose',
 'sad-one-five-oregon',
 'illinois-illinois-salami-oregon',
 'sierra-shade-louisiana-fix',
 'chicken-berlin-gee-pizza',
 'stairway-finch-massachusetts-blue',
 'grey-uniform-quebec-yellow',
 'monkey-dakota-speaker-uncle',
 'quebec-burger-south-california',
 'earth-cat-whiskey-michigan',
 'saturn-triple-bulldog-july',
 'eighteen-oranges-nevada-potato',
 'lemon-king-nitrogen-carbon',
 'virginia-twenty-september-artist',
 'tennis-fillet-moon-bacon',
 'finch-iowa-tennis-oranges',
 'apart-three-double-queen',
 'nebraska-football-mike-fish',
 'bakerloo-missouri-bulldog-eleven',
 'pasta-cold-salami-sweet',
 'pennsylvania-nuts-speaker-friend',
 'neptune-four-winner-lemon',
 'fanta-mississippi-xray-summer',
 'speaker-indigo-ack-queen',
 'zebra-tango-august-sad',
 'asparagus-green-aspen-item',
 'kitten-south-nuts-alaska',
 'apart-west-berlin-washington',
 'jersey-sixteen-arkansas-five',
 'pasta-sad-alpha-one',
 'south-bulldog-colorado-carbon',
 'king-edward-lithium-fillet',
 'bacon-victor-friend-venus',
 'wyoming-bulldog-north-shade',
 'five-island-jupiter-orange',
 'autumn-texas-potato-illinois',
 'high-island-beryllium-twelve',
 'emma-bakerloo-india-south',
 'mike-twelve-fix-artist',
 'ink-mike-nitrogen-texas',
 'magnesium-aspen-pip-golf',
 'maine-double-stream-november',
 'robin-carbon-autumn-april',
 'fix-iowa-fourteen-carpet',
 'zulu-missouri-mockingbird-monkey',
 'quebec-mirror-ohio-jig',
 'mars-colorado-violet-idaho',
 'jersey-batman-idaho-eight',
 'colorado-salami-music-south',
 'hydrogen-red-burger-eleven',
 'music-oranges-uniform-stairway',
 'rugby-don-mobile-nevada',
 'salami-blue-enemy-sad',
 'hydrogen-twelve-golf-oven',
 'whiskey-oscar-high-triple',
 'one-indigo-nebraska-neptune',
 'solar-asparagus-fanta-william',
 'hotel-washington-india-hamper',
 'india-salami-king-summer',
 'mississippi-mexico-maryland-mirror',
 'robin-eight-saturn-winner',
 'sink-three-avocado-saturn',
 'princess-mockingbird-mike-failed',
 'kitten-pluto-autumn-orange',
 'bravo-juliet-batman-mexico',
 'neptune-texas-saturn-stairway',
 'river-triple-bluebird-jersey',
 'enemy-florida-india-oxygen',
 'football-quebec-hydrogen-mobile',
 'fish-pasta-echo-thirteen',
 'ack-alanine-lima-berlin',
 'music-thirteen-butter-social',
 'kentucky-hamper-music-mike',
 'harry-stairway-mirror-florida',
 'eighteen-nuts-hawaii-stairway',
 'eleven-october-montana-east',
 'echo-papa-five-orange',
 'sixteen-butter-fillet-cola',
 'golf-mississippi-alabama-berlin',
 'angel-wolfram-uniform-six',
 'nevada-timing-louisiana-kentucky',
 'diet-sodium-burger-helium',
 'shade-july-mars-gee',
 'march-may-sweet-utah',
 'floor-social-november-earth',
 'hamper-emma-carolina-seven',
 'uniform-colorado-william-music',
 'burger-mike-network-twelve',
 'double-burger-idaho-south',
 'mirror-louisiana-quebec-echo',
 'pip-tango-failed-east',
 'undress-apart-december-steak',
 'early-spaghetti-nevada-floor',
 'ten-alpha-wyoming-ten',
 'alanine-thirteen-high-green',
 'lithium-venus-beer-oregon',
 'december-hot-carpet-zulu',
 'moon-queen-golf-robin',
 'pasta-diet-helium-tennis',
 'burger-island-september-lemon',
 'six-river-sodium-carpet',
 'one-salami-pluto-juliet',
 'washington-uranus-jig-snake',
 'batman-alaska-cold-thirteen',
 'mirror-quebec-sixteen-cardinal',
 'kilo-fish-king-virginia',
 'massachusetts-fix-july-batman',
 'ink-rugby-fix-fillet',
 'eleven-west-leopard-lamp',
 'glucose-eighteen-july-romeo',
 'ack-maine-oranges-green',
 'delta-apart-four-robert',
 'spaghetti-alabama-california-west',
 'massachusetts-seven-oranges-mango',
 'early-batman-steak-pluto',
 'oklahoma-mockingbird-comet-illinois',
 'idaho-bravo-bulldog-missouri',
 'bacon-purple-lithium-carpet',
 'two-hot-timing-purple',
 'summer-orange-six-december',
 'august-louisiana-blossom-idaho',
 'harry-video-alabama-iowa',
 'hawaii-india-emma-nitrogen',
 'london-bravo-cup-mango',
 'golf-mars-six-ink',
 'three-oxygen-equal-arkansas',
 'berlin-march-skylark-pennsylvania',
 'carpet-failed-wyoming-muppet',
 'angel-pip-princess-venus',
 'aspen-bulldog-equal-low',
 'may-five-north-two',
 'robin-emma-pennsylvania-fish',
 'winter-five-carpet-double',
 'freddie-white-illinois-bluebird',
 'bravo-shade-freddie-alanine',
 'hydrogen-tango-fanta-salami',
 'november-sierra-mexico-tango',
 'carpet-muppet-oxygen-fix',
 'hamper-oven-pennsylvania-uniform',
 'carbon-earth-pasta-pizza',
 'island-wyoming-triple-autumn',
 'september-vegan-tennis-may',
 'william-magazine-west-princess',
 'connecticut-tango-maine-missouri',
 'carolina-alpha-floor-hotel',
 'monkey-coffee-paris-twelve',
 'solar-glucose-leopard-autumn',
 'robert-social-river-zulu',
 'hawaii-potato-bulldog-ceiling',
 'lion-shade-echo-football',
 'kilo-potato-kansas-lemon',
 'magazine-four-shade-vermont',
 'delta-shade-wolfram-lion',
 'orange-leopard-fanta-pennsylvania',
 'batman-october-chicken-princess',
 'dakota-earth-five-summer',
 'grey-low-charlie-robert',
 'washington-indigo-william-cup',
 'kilo-robin-kansas-virginia',
 'purple-summer-connecticut-vermont',
 'arizona-five-network-delaware',
 'butter-mobile-saturn-six',
 'eleven-snake-diet-iowa',
 'cola-oklahoma-sierra-charlie',
 'montana-yankee-zebra-mike',
 'sierra-comet-apart-social',
 'thirteen-lamp-jersey-potato',
 'colorado-cold-undress-four',
 'winner-hamper-berlin-carbon',
 'lion-wyoming-lake-december',
 'low-jig-east-wolfram',
 'michigan-social-tango-arizona',
 'happy-connecticut-chicken-tennis',
 'beer-oregon-single-arizona',
 'oven-mountain-nevada-fish',
 'failed-washington-minnesota-foxtrot',
 'video-six-violet-spring',
 'timing-alanine-alanine-summer',
 'kentucky-uranus-jersey-arizona',
 'wolfram-texas-sink-freddie',
 'delta-twelve-idaho-lima',
 'pluto-oven-ceiling-pizza',
 'jersey-freddie-happy-carbon',
 'autumn-nineteen-fruit-white',
 'equal-sierra-potato-butter',
 'uranus-may-alaska-helium',
 'alanine-lima-mississippi-diet',
 'maryland-uranus-delta-quiet',
 'mountain-fillet-apart-sink',
 'blue-alanine-white-pasta',
 'romeo-finch-india-purple',
 'xray-may-sixteen-rugby',
 'network-floor-nitrogen-hot',
 'mars-march-princess-oscar',
 'nuts-five-harry-east',
 'mango-speaker-wisconsin-potato',
 'winner-idaho-stream-fruit',
 'friend-pip-hot-nineteen',
 'tango-oven-social-arizona',
 'rugby-thirteen-uncle-potato',
 'monkey-spaghetti-freddie-bluebird',
 'foxtrot-zulu-cardinal-avocado',
 'speaker-avocado-earth-september',
 'jupiter-william-ack-neptune',
 'kilo-neptune-magnesium-chicken',
 'oxygen-pip-alabama-alabama',
 'high-orange-five-magnesium',
 'nebraska-friend-south-freddie',
 'nineteen-pasta-rugby-magazine',
 'friend-pizza-beer-orange',
 'saturn-seventeen-football-stream',
 'uranus-july-football-montana',
 'network-foxtrot-batman-fourteen',
 'butter-skylark-eleven-speaker',
 'summer-friend-sierra-winner',
 'seven-bulldog-spaghetti-triple',
 'pasta-ohio-quebec-robin',
 'utah-maine-july-queen',
 'skylark-black-friend-thirteen',
 'twenty-apart-diet-lion',
 'hotel-quiet-enemy-potato',
 'winter-bravo-berlin-pluto',
 'sixteen-bakerloo-crazy-bacon',
 'mountain-lake-chicken-victor',
 'jupiter-delaware-minnesota-jupiter',
 'four-jupiter-earth-mountain',
 'juliet-pennsylvania-july-west',
 'sodium-yankee-alpha-blue',
 'thirteen-hawaii-equal-tennessee',
 'blue-hamper-hydrogen-gee',
 'romeo-quebec-carpet-mike',
 'foxtrot-lake-ink-artist',
 'nitrogen-idaho-mobile-one',
 'freddie-charlie-kentucky-whiskey',
 'two-delta-paris-victor',
 'four-mobile-princess-missouri',
 'romeo-butter-stairway-carpet',
 'december-orange-lemon-ack',
 'tennessee-music-pennsylvania-indigo',
 'skylark-kilo-india-tango',
 'king-alpha-high-river',
 'burger-angel-yellow-neptune',
 'missouri-low-leopard-kansas',
 'indigo-cola-harry-emma',
 'oklahoma-twelve-don-colorado',
 'mobile-south-indigo-football',
 'speaker-zulu-ink-fruit',
 'three-fillet-three-don',
 'bluebird-april-fix-april',
 'pizza-crazy-may-nevada',
 'may-robin-apart-white',
 'burger-four-tango-east',
 'harry-golf-rugby-wisconsin',
 'oxygen-rugby-nine-magazine',
 'tennessee-bacon-gee-seven',
 'social-moon-fanta-maryland',
 'bravo-zebra-hamper-alpha',
 'fillet-fourteen-vegan-echo',
 'dakota-whiskey-venus-juliet',
 'helium-charlie-hamper-eighteen',
 'victor-green-august-gee',
 'fish-equal-foxtrot-hawaii',
 'texas-queen-snake-quebec',
 'don-fourteen-thirteen-cup',
 'pasta-oven-pizza-lake',
 'mobile-ink-august-pluto',
 'tango-sodium-lake-uncle',
 'lithium-gee-river-minnesota',
 'butter-berlin-india-oklahoma',
 'idaho-butter-oklahoma-april',
 'helium-wolfram-alabama-december',
 'four-west-cardinal-arkansas',
 'wyoming-texas-solar-xray',
 'burger-papa-west-high',
 'california-october-jig-nineteen',
 'pizza-nine-butter-fruit',
 'east-moon-mango-delta',
 'magazine-minnesota-king-oven',
 'robert-spring-robin-nine',
 'oranges-florida-tennis-eighteen',
 'tango-alanine-low-sixteen',
 'bacon-island-romeo-alabama',
 'gee-sad-sink-beer',
 'edward-cold-michigan-princess',
 'lactose-avocado-batman-diet',
 'march-friend-king-venus',
 'stairway-butter-aspen-fix',
 'cola-island-maine-kilo',
 'west-potato-fix-romeo',
 'vermont-potato-william-network',
 'freddie-sodium-princess-skylark',
 'moon-don-pizza-uranus',
 'maryland-kansas-nevada-maine',
 'angel-hawaii-steak-potato',
 'alpha-mirror-emma-march',
 'neptune-king-low-sink',
 'cup-solar-angel-foxtrot',
 'fifteen-burger-utah-lake',
 'nitrogen-saturn-maine-march',
 'missouri-oven-virginia-freddie',
 'vegan-robin-crazy-maine',
 'cat-vermont-kentucky-finch',
 'harry-leopard-finch-summer',
 'potato-aspen-low-hotel',
 'texas-mars-zulu-carpet',
 'idaho-golf-eighteen-butter',
 'september-early-finch-fifteen',
 'spring-music-minnesota-nitrogen',
 'king-xray-hotel-august',
 'foxtrot-uniform-butter-arkansas',
 'video-green-wyoming-cup',
 'december-colorado-skylark-march',
 'mississippi-arizona-pasta-fourteen',
 'tennessee-high-dakota-mars',
 'hamper-network-kilo-west',
 'berlin-paris-cola-sad',
 'king-gee-undress-magazine',
 'idaho-kilo-glucose-connecticut',
 'freddie-coffee-winner-emma',
 'fish-zulu-september-lemon',
 'north-juliet-skylark-early',
 'mike-zebra-mars-sixteen',
 'golf-indigo-aspen-nevada',
 'princess-pip-montana-kitten',
 'quiet-four-charlie-december',
 'single-papa-aspen-hotel',
 'maryland-london-happy-equal',
 'failed-cat-april-december',
 'west-idaho-fourteen-apart',
 'nine-mountain-quiet-princess',
 'indigo-arkansas-ceiling-stream',
 'lamp-kilo-beer-bravo',
 'gee-minnesota-blue-winner',
 'iowa-high-nine-eighteen',
 'yankee-summer-bravo-violet',
 'twelve-shade-friend-wisconsin',
 'march-vermont-five-salami',
 'item-venus-orange-alpha',
 'zebra-comet-two-wisconsin',
 'sixteen-charlie-single-nine',
 'coffee-dakota-zebra-cardinal',
 'batman-nuts-beryllium-floor',
 'yellow-oklahoma-bakerloo-muppet',
 'nebraska-harry-don-whiskey',
 'jersey-stairway-shade-july',
 'low-mango-florida-vegan',
 'kentucky-ack-cold-diet',
 'avocado-michigan-early-beer',
 'two-alaska-chicken-hot',
 'delta-michigan-winter-mango',
 'violet-july-london-vegan',
 'maine-eleven-cardinal-pizza',
 'montana-kansas-king-river',
 'grey-texas-carpet-triple',
 'tennis-oscar-august-timing',
 'sweet-five-friend-seventeen',
 'autumn-fix-six-ack',
 'december-thirteen-william-spaghetti',
 'uncle-bluebird-three-burger',
 'fillet-winner-william-zebra',
 'nitrogen-yankee-friend-washington',
 'alaska-cup-batman-wolfram',
 'moon-mississippi-speaker-johnny',
 'mars-missouri-iowa-mirror',
 'quebec-berlin-monkey-mango',
 'fruit-princess-mississippi-south',
 'florida-apart-mars-sweet',
 'zulu-four-quebec-bacon',
 'mexico-chicken-burger-wisconsin',
 'queen-enemy-saturn-pluto',
 'pennsylvania-monkey-carbon-zulu',
 'sweet-enemy-wisconsin-carbon',
 'bakerloo-asparagus-jig-rugby',
 'wolfram-friend-black-illinois',
 'three-mike-papa-march',
 'blossom-romeo-india-jersey',
 'fourteen-delaware-mobile-nine',
 'minnesota-magnesium-wolfram-tennis',
 'cold-charlie-november-glucose',
 'skylark-stream-cardinal-oven',
 'cola-quebec-delaware-pluto',
 'blossom-high-jersey-mississippi',
 'coffee-lake-butter-thirteen',
 'social-alpha-california-princess',
 'cola-nevada-papa-texas',
 'pip-pip-fanta-chicken',
 'kilo-texas-venus-maryland',
 'papa-oven-louisiana-failed',
 'fourteen-burger-happy-lima',
 'louisiana-delaware-chicken-nevada',
 'ten-fruit-sierra-october',
 'uncle-equal-lemon-high',
 'maryland-oven-fillet-paris',
 'november-xray-white-alabama',
 'sad-purple-batman-romeo',
 'angel-gee-montana-eight',
 'vermont-eighteen-oranges-social',
 'mirror-orange-paris-summer',
 'hawaii-lion-kitten-december',
 'aspen-six-edward-bacon',
 'winner-yankee-east-whiskey',
 'six-coffee-mississippi-summer',
 'washington-oxygen-wyoming-video',
 'tango-mississippi-sierra-idaho',
 'oranges-papa-paris-one',
 'maryland-fifteen-alanine-item',
 'floor-summer-mike-gee',
 'foxtrot-london-tango-pip',
 'nebraska-crazy-october-seven',
 'double-paris-september-cold',
 'twenty-equal-item-arizona',
 'mexico-pizza-autumn-mike',
 'hydrogen-angel-diet-pennsylvania',
 'leopard-pasta-alpha-berlin',
 'solar-equal-timing-sixteen',
 'grey-west-utah-may',
 'magnesium-magazine-failed-vegan',
 'pasta-alaska-cup-glucose',
 'pip-xray-maryland-seventeen',
 'ack-mike-finch-fish',
 'winner-hawaii-saturn-whiskey',
 'jig-east-steak-blue',
 'oklahoma-seven-oxygen-mexico',
 'november-table-orange-fish',
 'xray-six-diet-yankee',
 'three-hawaii-beer-friend',
 'winter-jersey-fillet-rugby',
 'floor-robin-november-wolfram',
 'mississippi-fillet-snake-seven',
 'bluebird-pasta-two-fillet',
 'sad-indigo-kilo-hamper',
 'zulu-coffee-lithium-video',
 'music-pip-twenty-edward',
 'rugby-burger-massachusetts-freddie',
 'lemon-cola-maine-oven',
 'magnesium-carpet-summer-papa',
 'bacon-potato-tango-table',
 'hot-hawaii-equal-ack',
 'kansas-stairway-east-undress',
 'oklahoma-colorado-comet-victor',
 'magnesium-spring-september-magnesium',
 'sweet-zulu-oklahoma-sierra',
 'six-sink-hamper-massachusetts',
 'lake-fillet-april-timing',
 'undress-twenty-football-nine',
 'nine-salami-nitrogen-apart',
 'queen-indigo-diet-cup',
 'friend-aspen-oxygen-freddie',
 'spaghetti-snake-island-golf',
 'blue-pasta-december-shade',
 'rugby-december-william-alanine',
 'xray-floor-fifteen-robert',
 'oregon-skylark-lion-connecticut',
 'edward-quiet-texas-bluebird',
 'social-four-mars-massachusetts',
 'seven-triple-cat-beer',
 'lactose-video-winner-red',
 'mobile-queen-nineteen-johnny',
 'harry-alanine-apart-timing',
 'foxtrot-nine-nebraska-hawaii',
 'maine-twenty-california-nineteen',
 'california-sad-nuts-grey',
 'mississippi-pennsylvania-berlin-skylark',
 'undress-nineteen-mountain-twelve',
 'potato-oregon-mobile-oregon',
 'pizza-north-whiskey-monkey',
 'north-undress-four-north',
 'papa-leopard-alaska-thirteen',
 'mars-fillet-montana-five',
 'triple-mobile-bacon-ack',
 'lithium-missouri-bacon-beryllium',
 'blue-romeo-uranus-double',
 'yellow-equal-cat-angel',
 'one-nevada-oregon-missouri',
 'bluebird-march-summer-solar',
 'white-alpha-happy-december',
 'ack-victor-violet-delta',
 'magazine-solar-lima-sink',
 'tennis-ceiling-triple-beer',
 'saturn-delta-uniform-alanine',
 'romeo-fourteen-sierra-magnesium',
 'neptune-johnny-bluebird-purple',
 'utah-island-jupiter-lake',
 'queen-georgia-skylark-cola',
 'lion-sad-table-red',
 'nineteen-pennsylvania-queen-oven',
 'music-speaker-spring-quebec',
 'bakerloo-jupiter-three-venus',
 'may-triple-kitten-sad',
 'purple-kilo-texas-montana',
 'shade-pip-social-fish',
 'violet-steak-enemy-violet',
 'steak-wolfram-asparagus-south',
 'cardinal-one-high-neptune',
 'four-pluto-mars-helium',
 'indigo-oklahoma-rugby-quiet',
 'oxygen-pizza-west-vegan',
 'spaghetti-fix-bluebird-aspen',
 'romeo-hydrogen-maryland-sodium',
 'utah-gee-nevada-table',
 'finch-four-failed-equal',
 'violet-jupiter-blue-colorado',
 'kilo-indigo-video-asparagus',
 'nineteen-quebec-venus-potato',
 'magazine-sink-double-speaker',
 'oregon-equal-river-red',
 'march-yellow-video-helium',
 'lake-fanta-gee-quebec',
 'victor-nine-friend-undress',
 'river-double-network-jersey',
 'north-snake-asparagus-magazine',
 'victor-florida-enemy-uniform',
 'lithium-pizza-robert-enemy',
 'tennis-island-texas-tennessee',
 'fanta-maryland-washington-mockingbird',
 'oven-video-high-fourteen',
 'beer-coffee-beer-bravo',
 'oxygen-video-september-batman',
 'red-hawaii-zebra-harry',
 'magnesium-kansas-illinois-washington',
 'blossom-early-quiet-solar',
 'september-shade-cat-magazine',
 'mirror-carolina-whiskey-timing',
 'cat-ink-speaker-white',
 'hydrogen-sierra-charlie-butter',
 'carolina-ceiling-fish-bacon',
 'cold-kitten-robin-salami',
 'pizza-vermont-alanine-juliet',
 'hotel-burger-violet-hydrogen',
 'beer-texas-five-xray',
 'uniform-fanta-march-sierra',
 'eight-chicken-bakerloo-bravo',
 'friend-emma-beryllium-carpet',
 'march-wyoming-uranus-nineteen',
 'chicken-bacon-music-july',
 'charlie-princess-butter-bacon',
 'lamp-five-vegan-hamper',
 'thirteen-louisiana-monkey-march',
 'maryland-cat-seventeen-oscar',
 'september-triple-bacon-one',
 'victor-ohio-carolina-alanine',
 'timing-apart-football-johnny',
 'hawaii-moon-nine-crazy',
 'wisconsin-uncle-uncle-twenty',
 'texas-vermont-idaho-seven',
 'oscar-lima-tennessee-orange',
 'hot-timing-cup-louisiana',
 'fifteen-oranges-twelve-pip',
 'sad-winner-three-march',
 'enemy-carpet-pizza-grey',
 'green-grey-quebec-comet',
 'november-mississippi-floor-uncle',
 'shade-finch-blue-cardinal',
 'twenty-happy-bulldog-purple',
 'winner-tennessee-pip-april',
 'lithium-one-avocado-ink',
 'september-pluto-massachusetts-foxtrot',
 'washington-illinois-august-fruit',
 'quebec-twenty-spaghetti-oscar',
 'hamper-william-blue-nine',
 'eleven-river-spring-bravo',
 'tango-march-winter-green',
 'hydrogen-paris-quiet-vermont',
 'virginia-berlin-five-minnesota',
 'monkey-earth-quiet-hot',
 'batman-lake-freddie-kansas',
 'artist-red-india-butter',
 'kilo-cup-solar-sierra',
 'sierra-nineteen-cold-fanta',
 'maine-island-romeo-arizona',
 'bacon-pluto-pizza-mirror',
 'michigan-artist-march-zebra',
 'mountain-tennessee-whiskey-november',
 'early-football-sierra-pluto',
 'foxtrot-nevada-pluto-mobile',
 'blossom-wolfram-river-oscar',
 'winner-jupiter-yellow-five',
 'mike-idaho-tennessee-missouri',
 'california-zulu-vegan-november',
 'romeo-lithium-alanine-stairway',
 'california-georgia-football-bakerloo',
 'nebraska-oxygen-johnny-michigan',
 'bluebird-foxtrot-mirror-eighteen',
 'uncle-salami-delaware-seven',
 'illinois-stairway-robin-saturn',
 'zebra-steak-kitten-lemon',
 'arkansas-monkey-fifteen-wolfram',
 'mockingbird-east-lima-cold',
 'four-enemy-louisiana-cola',
 'india-may-bluebird-saturn',
 'lithium-freddie-network-pip',
 'arizona-quiet-utah-cola',
 'south-lactose-cola-pennsylvania',
 'mike-colorado-nevada-mobile',
 'hamper-fillet-wyoming-mountain',
 'don-nevada-lima-cup',
 'butter-speaker-neptune-sixteen',
 'jupiter-monkey-kentucky-london',
 'berlin-paris-mars-steak',
 'sixteen-johnny-red-three',
 'south-december-three-twelve',
 'nuts-video-oven-lactose',
 'lithium-snake-tennessee-comet',
 'shade-oxygen-maryland-four',
 'comet-don-six-july',
 'cola-arizona-five-alanine',
 'fourteen-oklahoma-washington-skylark',
 'arizona-july-mango-nineteen',
 'potato-mockingbird-yellow-michigan',
 'seventeen-may-ohio-equal',
 'wolfram-fillet-equal-xray',
 'red-east-fanta-three',
 'november-shade-salami-finch',
 'oscar-comet-south-delaware',
 'black-west-bakerloo-tennessee',
 'eleven-red-utah-pasta',
 'orange-oxygen-sodium-mexico',
 'summer-arkansas-salami-twelve',
 'carbon-ten-delta-sodium',
 'oscar-massachusetts-earth-florida',
 'august-helium-victor-timing',
 'potato-kilo-four-georgia',
 'rugby-network-dakota-green',
 'charlie-steak-speaker-delta',
 'utah-april-mountain-princess',
 'hawaii-island-snake-early',
 'minnesota-leopard-shade-sweet',
 'nine-mississippi-summer-montana',
 'potato-west-harry-georgia',
 'magnesium-skylark-march-yellow',
 'shade-nuts-early-stairway',
 'beryllium-football-moon-idaho',
 'pizza-illinois-montana-california',
 'oven-comet-pennsylvania-floor',
 'item-johnny-oxygen-eleven',
 'east-vermont-shade-solar',
 'lithium-leopard-seventeen-don',
 'hawaii-edward-winner-princess',
 'texas-queen-illinois-snake',
 'august-lima-washington-earth',
 'juliet-blue-missouri-blue',
 'vegan-vermont-oscar-robin',
 ...]

In [ ]:

Walk directory search for studies


In [55]:
import glob
display(input_path)
dirlist = glob.glob(op.join(input_path, "2018/**/"))
# dirlist = glob.glob(input_path + "/")
# dirlist


'E:data/medical/orig\\chk'

In [56]:
dirpath, trail = op.split(dirlist[0])
dirpath2, dirname = op.split(dirpath)

In [57]:
# df["Study ID"][:10]

In [58]:
def get_id(datadir, df):
    dirpath, trail = op.split(datadir)
    dirpath2, dirname = op.split(dirpath)
    found = df["Study ID"].astype(str) == dirname
    study_id = dirname
    
    if any(found):
#         display(df[found][["Simple Patient ID", "Study ID"]])
        patient_id = df[found][["Simple Patient ID"]].iat[0,0]
        return study_id, patient_id
        
    else:
        return study_id, None

In [59]:
for datadir in dirlist:
    study_id, patient_id = get_id(datadir, df)

In [60]:
def create_path(path_base, patient_id, study_id, series_id, ext=".raw"):
    patient_hex, patient_human = get_hexd_and_human_digest(patient_id, words_number=4)
    study_hex, study_human = get_hexd_and_human_digest(study_id, words_number=2)
    fn = patient_human + "_" + str(study_human) + "_" + str(series_id) + "_" + study_hex + "_v0" + ext
    fn_full = op.join(path_base, fn)
    return fn_full

Walk study directory


In [61]:
def export_study(datadir, outputdir, df, dry_read=False, dry_write=False, ext=".mhd", return_prefiltered=True, 
                 filter_no_patient_id=True, filter_min_count=None, filter_max_count=None
                ):
    
    study_id, patient_id = get_id(datadir, df)
    
    if filter_no_patient_id and patient_id is None:
        if return_prefiltered:
            return None, None
        else:
            return None
    
    dd = io3d.dcmreaddata.DicomDirectory(datadir)
    series_stats = dd.get_stats_of_series_in_dir()
    series_list = series_stats.keys()
    print(datadir, series_list)
    # get pandas df
    study_df = pd.DataFrame(series_stats).transpose()
    # filtration
    if return_prefiltered:
        study_df_all = study_df.copy()
        
    if filter_min_count is not None:
        study_df = study_df[study_df.Count > filter_min_count]
    if filter_max_count is not None:
        study_df = study_df[study_df.Count < filter_max_count]
    
    display(series_list)
    for i in range(len(study_df)):
        series_number = study_df.iloc[i]["SeriesNumber"]
        # for series_number in series_list:
        dr = io3d.DataReader()
        if dry_read:
            data3d = io3d.datasets.generate_face([50, 50, 50]).astype(np.int16) * 150
            metadata = {"voxelsize_mm": [1.0, 0.5, 0.5]}
            datap = {
                "data3d": data3d,
                "metadata": metadata
            }
        else:
            datap = dr.Get3DData(datapath=datadir, series_number=series_number)

        fn_full = create_path(path_base=outputdir, patient_id=patient_id, series_id=series_number, study_id=study_id, ext=ext)
        print(patient_id, study_id, series_number, datadir, fn_full)
        if not dry_write:
            io3d.write(path=fn_full, data3d=datap)
        
    if return_prefiltered:
        return study_df, study_df_all
    else:
        return study_df

In [ ]:

Export from dir list


In [62]:
# %debug
# def export_with_hash(datadir, output_path)
dry_read = True
dry_write = True
# dry_read = False
# dry_write = False
df
dfdir_filtered = []
dfdir_all = []
for datadir in dirlist:
#     print(datadir)
    try:
        dff, dfa = export_study(
            datadir, output_path, df, 
            filter_max_count=200, filter_min_count=10,
            return_prefiltered=True, dry_read=dry_read, dry_write=dry_write
        )
        if dff is not None:
            dfdir_filtered.append(dff)
            dfdir_all.append(dfa)
    except Exception as e:
        import traceback
        traceback.print_exc()
        print(e)
#     display(dfdir_all)


  File "<ipython-input-62-a03ee06d375a>", line 2
    def export_with_hash(datadir, output_path)
                                              ^
SyntaxError: invalid syntax

In [ ]:
pd.concat(dfdir_all, ignore_index=True)[["Count", "Modality", "SeriesNumber", "voxelsize_mm"]]

In [ ]:
pd.concat(dfdir_filtered, ignore_index=True)[["Count", "Modality", "SeriesNumber", "voxelsize_mm"]]
# dd = io3d.dcmreaddata.DicomDirectory(datadir)
# series_stats = dd.get_stats_of_series_in_dir()

In [ ]:
# dirlist