diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..36061f1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,121 @@ +*dblite +raw/* +build/* + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +© 2018 GitHub, Inc. +Terms +Privacy +Security +Status +Help +Contact GitHub +API +Training +Shop +Blog +About + diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..fb11842 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,20 @@ +Copyright 2018, Brown University, Providence, RI. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose other than its incorporation into a +commercial product is hereby granted without fee, provided that the +above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Brown University not be used in +advertising or publicity pertaining to distribution of the software +without specific, written prior permission. + +BROWN UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ANY +PARTICULAR PURPOSE. IN NO EVENT SHALL BROWN UNIVERSITY BE LIABLE FOR +ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..a78e00d --- /dev/null +++ b/README.md @@ -0,0 +1,144 @@ +# Worked example of Secure Infrastructure for Research with Administrative Data (SIRAD) + +`sirad` is an integration framework for data from administrative systems. It +deidentifies administrative data by removing and replacing personally +identifiable information (PII) with a global anonymized identifier, allowing +researchers to securely join data on an individual from multiple tables without +knowing the individual's identity. + +This is a simplified demonstration of how `sirad` works on simulated data; for +more details on how it is used in practice with real administrative data, +please see our manuscript preprint: + +> J.S. Hastings, M. Howison, T. Lawless, J. Ucles, P. White. 2018. +> Integrating Administrative Data for Policy Insights. +> (link to arXiv preprint) + +In this worked example, we simulate two administrative data sets: + +**1. IRS 1040 tax returns**, identified by social security number (SSN), first/last + name, and date of birth (DOB) +**2. Credit history**, identified by first/last name and date of birth (DOB) + +`sirad` uses a deterministic matching algorithm to match records across the two +data sets corresponding to the same individual. It then assigns an anonymized +identifier (the `sirad_id`) to each matched individual, and creates a +deidentified table for each data set where the SSNs, names, and DOBs have been +replaced with the `sirad_id`. Finally, we demonstrate an analysis that uses the +`sirad_id` to join adjusted gross income from the tax returns table to credit +scores in the credit history table. + +**Note**: the data are simulated by the `simulate.py` script using +[Faker](https://github.com/joke2k/faker), which creates realistic PII that does +not represent actual individuals. Any data in this example that looks +personally identifiable is not! + +## Installing dependencies + +Requires Python 3.6 or later. There are several options for installing the +dependencies (list in `requirements.txt`). + +You can use **pip** to install them globally with +`pip install -r requirements.txt`. + +If you do not have write access to install globally, you can install into your +home directory with +`pip install --user -r requirements.txt`. + +If you have Anaconda Python, you can use **conda** to install them in your +root environment with +`conda install -c riipl-org --file requirements.txt`. + +Or if you would prefer to create a named conda environment, use +`conda install -c riipl-org -n sirad-example --file requirements.txt` +and activate it with +`source activate sirad-example`. + +## Running the example + +### Step 1: Simulate data + +Command: `python simulate.py` + +### Step 2: Process the raw data into separate PII, data, and link files + +Command: `sirad process` + +`sirad` processes a set of **raw** data files specified by a set of **layout +files**. In this example, there are two simulated raw data files generated in +Step 1: tax records (`raw/tax.txt`) and credit history +(`raw/credit_scores.txt`). Their layouts are `layouts/tax.yaml` and +`layouts/credit_scores.yaml`. The layouts are YAML files that describe the +column layout and field types in the raw data files. + +The processing step uses the `pii` properties in the layout to split the PII +fields from the data fields in each row of the raw files. It randomly shuffles +the order of the PII rows when writing to the PII file. The data file has the +same row order as the raw data file. The link file provides a lookup table +that re-links the shuffled PII rows to the data rows. + +### Step 3: Stage the processed files in a database + +Command: `sirad stage` + +This step stages the PII, data, and link files in a relational database. + +### Step 4: Create a versioned research database + +Command: `sirad research --version 1` + +This step uses the PII database to construct a global anonymized identifier +(the `sirad_id`), then uses the link files to attach it to each data table in +the database. The result is a **research** database which contains no PII, but +in which individual-level data in different tables can be joined by the +anonymized identifier. Research databases are versioned to support reproducible +analysis. + +## Resulting database + +After the build finishes, an sqlite database called `research_v1.db` will be +created in the `build` directory. This database has two tables created from +the simulated data: + +### tax + +sirad_id | record_id | job | file_date | adjusted_gross_income | import_dt +-|-|-|-|-|- + +### credit_scores + +sirad_id | record_id | credit_score | import_dt +-|-|-|- + +Notes: +* `sirad_id` is an anonymized identifier created from the PII. +* `record_id` is a primary key for the research/data records, and `pii_id` is a + shuffled primary key for the PII records. +* `import_dt` is a timestamp for when the raw data were processed. +* All PII fields (SSN, first/last, DOB) have been removed from the research database. + +The results are organized in the following directory structure: +* `raw/`: the simulated raw data files +* `build/processed`: processed data files (organized by `data`, `pii`, and `link`) +* `build/db`: the staging databases for the processed files +* `build/research_v1.db`: the final research database + +In a real-world application, only the `research_v1.db` database would be +accessible to researchers. The `raw`, `processed`, and `db` directories should +be stored in a restricted location that is inaccessible to any individual +researcher, for example by using encryption with a multi-party key or +passphrase, auditing, real-time alerting, and/or other appropriate security +controls that ensure an individual researcher cannot access build files that +contain PII. + +## Example analysis + +`scatterplot.py` demonstrates an analysis that uses the `sirad_id` to +anonymously join records about individuals. It selects adjusted gross income +from the `tax` table joined to the corresponding credit score from the +`credit_scores` table, then generates this scatter plot: + +![scatterplot](scatterplot.png) + +**Note:** these variables are correlated by construction, and were drawn from a +joint distribution (with added noise) in the simulation. diff --git a/layouts/credit_scores.yaml b/layouts/credit_scores.yaml new file mode 100644 index 0000000..46f6b17 --- /dev/null +++ b/layouts/credit_scores.yaml @@ -0,0 +1,14 @@ +source: credit_scores.txt +type: csv +delimiter: "|" +fields: +- first: + pii: first_name +- last_name: + pii: last_name +- birth_date: + pii: dob + type: date + format: "%m-%d-%Y" +- credit_score: + type: int diff --git a/layouts/tax.yaml b/layouts/tax.yaml new file mode 100644 index 0000000..0bb7b08 --- /dev/null +++ b/layouts/tax.yaml @@ -0,0 +1,22 @@ +source: tax.txt +type: csv +delimiter: "|" +fields: +- first_name: + pii: first_name +- last_name: + pii: last_name +- ssn: + hash: true + pii: ssn + ssn: true +- job +- birth_date: + pii: dob + type: date + format: "%m-%d-%Y" +- file_date: + type: date + format: "%m/%d/%Y" +- adjusted_gross_income: + type: int diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..270c29c --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +faker +numpy +sirad diff --git a/scatterplot.png b/scatterplot.png new file mode 100644 index 0000000..2f094e6 Binary files /dev/null and b/scatterplot.png differ diff --git a/scatterplot.py b/scatterplot.py new file mode 100644 index 0000000..8d0a27a --- /dev/null +++ b/scatterplot.py @@ -0,0 +1,24 @@ +import matplotlib.pyplot as plt +import pandas as pd +import seaborn as sns +import sqlite3 + +sql = """ + SELECT t.sirad_id, + adjusted_gross_income, + credit_score + FROM tax t + INNER JOIN credit_scores cs + ON t.sirad_id=cs.sirad_id + """ + +with sqlite3.connect("build/research_v1.db") as cxn: + df = pd.read_sql(sql, cxn, index_col="sirad_id") + +print(df.head()) + +sns.set_style("whitegrid") +sns.regplot("adjusted_gross_income", "credit_score", data=df, truncate=True) +plt.tight_layout() +plt.savefig("scatterplot.png") + diff --git a/simulate.py b/simulate.py new file mode 100644 index 0000000..9d844d1 --- /dev/null +++ b/simulate.py @@ -0,0 +1,120 @@ +""" +Simulate data for IRS 1040 tax returns and credit history. +""" + +from faker import Faker +import csv +import math +import numpy as np +from pathlib import Path +import random +import os +from datetime import date + +from sirad import config + +N = 1000 +SEED = 1010 + +fake = Faker() +fake.seed(SEED) +random.seed(SEED) +np.random.seed(SEED) + +out = [] + +def get_birth_date(): + """ + Faker on Windows is not generating dates prior to 1970. + Work around this for now. + See: https://stackoverflow.com/a/35709408/758157 + Start year: 1950 + End year: 1999 + """ + return date( + random.randint(1949, 1999), + random.randint(1, 12), + random.randint(1, 28) + ) + +def simulate_tax(number): + perc_bad_ssn = 0.05 + for n in range(0, number): + d = {} + if n % 2 == 0: + d['first'] = fake.first_name_female() + else: + d['first'] = fake.first_name_male() + d['last'] = fake.last_name() + d['ssn'] = fake.ssn() + if (random.random() <= perc_bad_ssn): + d['ssn'] = '000-' + d['ssn'][4:] + d['job'] = fake.job() + bd = get_birth_date() + d['birth_date'] = bd.strftime("%m-%d-%Y") + d['file_date'] = fake.date_this_year().strftime("%m/%d/%Y") + d['agi'] = int(20000 * np.random.lognormal()) + out.append(d) + + return out + +def simulate_credit_scores(path): + """ + Create fake credit scores for subset of main person list. + + For some perc of people replace full first name with first initial + """ + perc_included = .60 + perc_first_intial = .10 + perc_drop_last = .005 + perc_drop_birth = .01 + out = [] + with open(path) as f: + reader = csv.DictReader(f, delimiter="|") + for row in reader: + d = {} + if random.random() <= perc_included: + for fld in ['first', 'last', 'birth_date']: + if (fld == 'first') and (random.random() <= perc_first_intial): + d[fld] = row[fld][0] + elif (fld == 'last') and (random.random() <= perc_drop_last): + d[fld] = "" + elif (fld == 'birth_date') and (random.random() <= perc_drop_birth): + d[fld] = "" + else: + d[fld] = row[fld] + # Simulate credit score as joint distribution with AGI with a normal error term + cscore = 300 + 225 * (math.log(float(row['agi']) / 20000.0) + 0.5 * np.random.normal()) + # Clamp score + cscore = np.clip(cscore, 300, 850) + d['credit_score'] = int(cscore) + out.append(d) + return out + +def write_file(records, path, separator="|"): + fieldnames = records[0].keys() + with open(path, "w") as outf: + writer = csv.DictWriter( + outf, + lineterminator='\n', + delimiter=separator, + fieldnames=fieldnames + ) + writer.writeheader() + writer.writerows(records) + return path + + +def main(tax_path, cscore_path): + tax = simulate_tax(N) + people = write_file(tax, tax_path) + cscores = simulate_credit_scores(people) + write_file(cscores, cscore_path) + + +if __name__ == '__main__': + outdir = config.get_option("RAW") + Path(outdir).mkdir(parents=True, exist_ok=True) + tax_path = os.path.join(outdir, 'tax.txt') + cscore_path = os.path.join(outdir, 'credit_scores.txt') + main(tax_path, cscore_path) diff --git a/sirad-id-validation.ipynb b/sirad-id-validation.ipynb new file mode 100644 index 0000000..320ff30 --- /dev/null +++ b/sirad-id-validation.ipynb @@ -0,0 +1,436 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 140, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 140, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#From: https://stackoverflow.com/a/28073228/758157\n", + "from IPython.display import HTML\n", + "\n", + "HTML('''\n", + "
''')" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "matplotlib.style.use('ggplot')\n", + "\n", + "import pandas as pd\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 142, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "from src.db import pii_eng" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Summary" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "total_pii_records = pii_eng.execute('SELECT COUNT(*) records FROM sirad_id').fetchone()[0]\n", + "records_with_valid_sirad_id = pii_eng.execute('SELECT COUNT(*) FROM sirad_id WHERE sirad_id <> 0').fetchone()[0]\n", + "unique_sirad_ids = pii_eng.execute('SELECT COUNT(DISTINCT sirad_id) FROM sirad_id WHERE sirad_id <> 0').fetchone()[0]\n", + "unique_sirad_ids_with_valid_ssn = pii_eng.execute('SELECT COUNT(*) FROM (SELECT MIN(valid_ssn) valid_ssn FROM sirad_id GROUP BY sirad_id) WHERE valid_ssn = 0').fetchone()[0]\n", + "q = \"\"\"\n", + "SELECT SUM(records)\n", + "FROM (\n", + " SELECT sirad_id, \n", + " COUNT(*) AS records,\n", + " CASE WHEN MIN(valid_ssn) = 0 THEN 1 ELSE 0 END valid_ssn\n", + " FROM sirad_id\n", + " GROUP BY sirad_id\n", + ")\n", + "WHERE VALID_SSN = 1\n", + "GROUP BY VALID_SSN\n", + "\"\"\"\n", + "recs_with_valid_ssn = pii_eng.execute(q).fetchone()[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "PII records: 1580\n", + "Records with valid SIRAD_ID: 1574\n", + "Unique SIRAD_IDs: 1383\n", + "Unique SIRAD_IDs with a valid SSN associated: 642\n", + "Total records with valid SSN attached: 642\n", + "\n" + ] + } + ], + "source": [ + "msg = \"\"\"\n", + "PII records: {total_pii}\n", + "Records with valid SIRAD_ID: {valid_sirad}\n", + "Unique SIRAD_IDs: {uniq_sirad}\n", + "Unique SIRAD_IDs with a valid SSN associated: {valid_ssn}\n", + "Total records with valid SSN attached: {total_valid_ssn}\n", + "\"\"\".format(\n", + " total_pii=total_pii_records, \n", + " valid_sirad=records_with_valid_sirad_id,\n", + " uniq_sirad=unique_sirad_ids,\n", + " valid_ssn=unique_sirad_ids_with_valid_ssn,\n", + " total_valid_ssn=recs_with_valid_ssn\n", + ")\n", + "print(msg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Dataset breakdown" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "q = \"\"\"\n", + "SELECT dsn AS dataset, \n", + " count(*) AS records,\n", + " SUM(CASE WHEN SIRAD_ID <> 0 THEN 1 ELSE 0 END) sirad_ids,\n", + " SUM(CASE WHEN valid_ssn = 0 THEN 1 ELSE 0 END) valid_ssn,\n", + " SUM(CASE WHEN valid_ssn = 1 AND ssn IS NOT NULL THEN 1 ELSE 0 END) invalid_ssn,\n", + " SUM(CASE WHEN valid_ssn = 2 THEN 1 ELSE 0 END) questionable_ssn,\n", + " SUM(CASE WHEN ssn IS null THEN 1 ELSE 0 END) missing_ssn,\n", + " SUM(CASE WHEN first_name IS NOT null THEN 1 ELSE 0 END) first_name,\n", + " SUM(CASE WHEN last_name IS NOT null THEN 1 ELSE 0 END) last_name,\n", + " SUM(CASE WHEN dob is NOT null THEN 1 ELSE 0 END) dob\n", + "from sirad_id\n", + "group by dsn\n", + "\"\"\"\n", + "dataset_breakdown = pd.read_sql(q, con=pii_eng, index_col='dataset')" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\nS2P8+PGULl2aunXrUq5cub/4yImIyO1YjDs5Lyd35GTnJo6OIGI3zp/FFLhdNyxo/qa8YcOeoqKi\nCjytGBoayoMPPuiARCIici+YurxCQkIICQlxdAwREbnHTPUJGyIiIqDyEhERE1J5iYiI6ai8RETE\ndFReIiJiOiovERExHZWXiIiYjspLRERMR+UlIiKmo/ISERHTUXmJiIjpqLxERMR0VF4iImI6Ki8R\nETEdlZeIiJiOyktERExH5SUiIqaj8hIREdNReYmIiOm4ODpASeL8WYyjIziEl5cXKSkpjo7hMCV9\n/iL2oJWXiIiYjspLRERMR+UlIiKmo/ISERHTUXmJiIjpqLxERMR0VF4iImI6Ki8RETEdlZeIiJiO\nyktERExH5SUiIqaj8hIREdNReYmIiOmovERExHRUXiIiYjoqLxERMR2Vl4iImI7KS0RETEflJSIi\npqPyEhER01F5iYiI6ai8RETEdFReIiJiOiovERExHZWXiIiYjspLRERMx2IYhuHoECIiIsWhlZeI\niJiOyktERExH5SUiIqaj8hIREdNReYmIiOmovERExHRUXiIiYjoujg7wv+5f//oXv//+OxaLhUGD\nBuHn5+foSHazZMkSDh48SG5uLk8//TS+vr7MnTuX3NxcKlasyIgRI3B1dWXz5s189913WCwW2rdv\nT7t27Rwd/S+RlZXF66+/Tq9evfD39y9Rc9+8eTMxMTE4OTnRp08fvL29S8z8MzMzmTt3Lunp6WRn\nZxMSEkLFihX5/PPPsVgseHt789JLLwEQExPD9u3bsVgshISE8PDDDzs4/Z1LSkrigw8+oHPnznTs\n2JELFy4U+Xuek5PD/PnzOX/+PE5OToSGhlK5cuXiBTDEbg4cOGBMnz7dMAzDOHnypPHPf/7TwYns\nJyEhwZg2bZphGIaRlpZmvPLKK8a8efOMbdu2GYZhGEuXLjXWrl1rXL9+3Rg5cqSRnp5u3Lhxw3jt\ntdeMq1evOjL6X2bZsmXGuHHjjA0bNpSouaelpRkjR440MjIyjNTUVGPBggUlav7ff/+9sXTpUsMw\nDOPixYvGqFGjjEmTJhm///67YRiGMWfOHGPv3r3G2bNnjTfffNPIzs42rly5YowaNcqwWq2OjH7H\nrl+/bkyaNMlYsGCB8f333xuGYRTre75hwwbjs88+MwzDMPbt22d89NFHxc6g04Z2lJCQQHBwMADV\nq1cnPT2djIwMB6eyjwYNGjBmzBgAypYty40bNzhw4ABNmjQBoEmTJsTHx3P48GF8fX1xd3fHzc2N\nunXrcujQIUdG/0ucOnWK5ORkAgMDAUrU3BMSEmjYsCFlypTBw8ODl19+uUTN/7777uPq1asApKen\nU65cOc6dO2c7yxIUFERCQgL79+8nMDAQFxcXypcvzwMPPEBycrIjo98xV1dXxo8fj4eHh21bcb7n\n+/fvp2nTpgA0bNiQxMTEYmdQednR5cuXKV++vO1x+fLluXz5sgMT2Y+TkxOlS5cGYP369QQGBnLj\nxg1cXV2B/z/3/9VjsnjxYgYOHGh7XJLmfu7cOW7cuMHMmTOZOHEiCQkJJWr+rVq14sKFC4wYMYKw\nsDAGDBhA2bJlbfsrVKjApUuXCpz/pUuXHBH5rjk7O+Pm5pZnW3G+53/c7uTkhMViIScnp1gZVF73\nkFECPkZy165drF+/niFDhjg6yj2zadMm6tSpw4MPPujoKA5z9epVxo4dS2hoKPPnzy8Rf9Zv+c9/\n/oOnpyfh4eFMnDiR8PDwPPtvdyxK0jH6b+7kWOiGDTvy8PDI8zfLS5cu5Vlm/6/Zt28fq1evZsKE\nCbi7u1O6dGmysrJwc3MjNTUVDw+PfMckNTWV2rVrOzD13du7dy/nzp1j7969XLx4EVdX1xIzd7i5\nsqhbty7Ozs5UqVKFMmXK4OzsXGLmn5iYSOPGjQHw8fEhKysLq9Vq239r/pUqVSIlJcW2/X/t50Fx\n/sz/cXtOTg6GYeDiUrw60srLjho3bkxcXBwAR48excPDgzJlyjg4lX1kZGSwZMkSxo0bR7ly5YCb\n57JvzT8uLo6AgABq167NkSNHSE9PJzMzk8TEROrXr+/I6HdtzJgxTJ8+nffee4927drRq1evEjN3\nuPnnfP/+/eTm5nL16lUyMzNL1PyrVKnC4cOHATh//jxlypShWrVqtut5O3fuJCAgAH9/f/bu3UtO\nTg6pqamkpqZSvXp1R0b/SxXne/7Hn4179uzhoYceKvb76Z9EsbOlS5dy8OBBLBYLQ4YMwcfHx9GR\n7OLHH38kMjKSqlWr2rYNHz6cBQsWkJ2djaenJ6Ghobi4uBAXF0dMTAwWi4WOHTvSpk0bByb/a61c\nuZIHH3yQxo0bM3fu3BIz9x9++IH169cD0KtXL9uvSZSE+WdmZjJ//nyuXLlCbm4uffr0oWLFiixc\nuBDDMPDz87NdD/3+++/ZsmULAH379qVhw4aOjH7Hjh49yuLFizl//jzOzs5UqlSJkSNHMm/evCJ9\nz3Nzc1nCmMbJAAAASElEQVSwYAGnT5/G1dWV0NBQPD09i5VB5SUiIqaj04YiImI6Ki8RETEdlZeI\niJiOyktERExH5SUiIqaj8hIREdNReYmIiOn8P0S0UUcRJRPQAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "dataset_breakdown['records'].plot(kind=\"barh\", title=\"SIRAD IDs by dataset\");" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n68vIyLCPw3HZlct3cXHRsGHD9NJLL2nFihVasWKFpk2bpkmTJikkJCTvDYMkx4tLLy8vBQQEqEWL\nFrnefJWIreEsAAAgAElEQVQvX97hQvL06dMaMWKE1q9fr3Pnztnb8fLF5bFjx/TQQw/Zv1+mTBnd\nf//9N1TO48ePOyxLunRgvXyT9MILL2j16tUKCgpSQECAGjRooMjISN1zzz03tD4rK1++vPz8/BQX\nF6cnn3xSK1euVNmyZeXn56cDBw5o1KhR2r59u8NrBc5uGHJrn8cffzzfN9qRkZH67rvvFBISonr1\n6ikwMFAtWrRQmTJl8rWPXrluFxcXFStWTBcuXMjXuv8q8qqjZs2aKS4uTi+++KKOHTum7du3218b\nSk9P10cffaT4+HidPXtWkpSZmel0n3D24MIZZ+3ev39/RUVFacGCBQoMDFRYWJhD2Ho33PhefX6T\nlOf4UVdOK1asmFxdXbVt27Zrjulzo+fHa52vrzxX5zWO0Mcff6wFCxZo0qRJstlscnNzU9OmTa+5\nLOn/6+LKNpOcX3c4U7RoUU2aNEl79uzRypUrFRsbqylTpujzzz+Xp6enevXqpTZt2ig+Pt7+Gs2Q\nIUP0/PPPO93Owubq6prn39fSqlUrNWrUSPHx8Vq1apW6deumLl26qF+/fqpVq5a+//57rV27VqtX\nr9bw4cP1xRdfaNasWfkqw2XZ2dlyc3NzaOf8lk9yfn2X1zZId3a7FYYrHypfGfhOnz5dAQEBioyM\n1JNPPnnDy8/reJufc8jlB6jS/weo1wrWDxw4oB9//FHz58+3TzfG6OGHH77h8ltFYmJintdwzs6b\n1ys/D0CWLl2qpKQkGWNytHvx4sXtD6gvX6+XL1/eYXmXx37cv3+/1q1bJ09PT/t0Y4yKFSt2w+VH\nTnnde+f3Xv7qY72V2okeX38h1atX14kTJxwGJk1PT7c/SahataqOHz/ucLBdvXq1Vq9ebX9q+vvv\nv9unpaam6siRIw7J8ZUefPBBZWVlObzffeX82dnZOnPmjKpUqaIuXbro888/V0REhL766qtbs8F/\nAZcvLuPi4tS0aVMlJCQoIiIi15uMK0NJSfrnP/+po0ePau7cudq5c2eOeTIzM3M8Kc7tRi8/MjIy\n8lxW5cqVtXjxYn388ceqUqWKJk+erL///e933Jg+d4qIiAjFxcVJutSbLiIiQtKlp/1FixbVokWL\n9PPPPzuMs5WX3NrnegaAvu+++/Tll19q5syZqlWrlmbPnq1mzZrp8OHD+dpHuclxLq86ioiI0Nat\nW3Xy5EnFxMSodu3a9oDp/fff18aNG/XJJ59o+/bt2rlzp/3GJC/OHlw446zdW7VqpdWrV6tXr15K\nTk5Wt27dHMYQuhv2ifLly1/zHFexYkVJcghwrwySq1evruzsbP3222/2z4wxSkxMlHRz58eHHnrI\n4VwrSX/88Ue+e6Nt27ZNQUFB8vX1lZubm86cOWMv12UZGRkOn/3vf/9TuXLlcgRfzq47nMnKylJK\nSooee+wx9ejRQ19//bVq1aqlb7/9VtKlwdwfeOABtW3bVlOnTlXPnj0tP7B3cnKySpcurWeffVbj\nxo3Tu+++ax/D5fLA/pfH65o3b562bNmSoyecM+XKlVNGRobDvr1jx458z+9s/81rG5DT1ddvvXr1\nUnx8vJ5//nnt27dPbdq0uan6y+t4m59zSG6h6NXh+GXFixdXz549tXPnTvv/fv75Zy1evPiGy28F\n2dnZTq/hnJ03r1d+HoCMGTNGW7du1c6dO3OEk7m1+7UC8uLFi6t58+Y52n3z5s03XH7klNe998MP\nP6zMzEyHNyr279+vzMxMh3v5K6enpqYqOTnZ4SHo3Yzg6y8kMDBQlStXVlRUlE6fPq3U1FR98MEH\n6t69uyQpKChIZcuW1b///W/7K2+DBg3SmTNnVK5cOYWEhGjy5Mk6efKk0tLS9K9//Uv33XefGjRo\nkOv6vL29VaZMGU2bNk0XLlzQ77//7jAg5tKlS9WiRQvt3r1bxhglJSXp4MGDPPW5Djdzc7Rt2zY9\n99xzqlq1qlxcXPTLL784TC9fvrx9sGnpUhfZU6dO3VA5H3zwQYdlSY4haFpamjIyMlS3bl0NGDBA\nS5Ys0YkTJ7R27dobWp/VhYWF6eDBg/r555/1008/qUWLFkpKStKhQ4fUsWNH+xO8n3/+OV/Lc9Y+\nzmRkZCg1NVVeXl7q06ePFi1apBIlSiguLo6AuwA8/PDDeuKJJ+w9Yi6/5ihd+u88IiJCHh4ecnV1\n1Z49e/LVm87Zgwtn/go3vl5eXnrggQfs57g9e/bYz3EuLi667777FBsbq6ysLO3evVvfffedfd7H\nHntMdevW1ciRI3X8+HGlp6dr8uTJat++vdLT052eH4sVK6ajR48qJSUlx1Pcli1baseOHVq0aJGy\nsrL0888/a968efl+VbVKlSr67bfflJqaqsTERL377ruqVKmSw77g7u6uyZMnKzU1VSdOnNDs2bPV\npEmTHMtydt3hTHR0tDp27GgfUuHw4cM6ceKEqlevrq1bt6phw4bauHGjsrOzde7cOe3du9fS1xDH\njh1TUFCQYmNjdfHiRV24cEG7d++2h5pt27bV+PHjlZaWpuzsbG3fvl1FixZVpUqVrms9tWvXVsmS\nJfWf//xH6enp2rFjh5YuXZrv+fPaf51tA5wryMD3Rs8h11KtWjXt2rXL4bPLP7j0V5afa7iCPG/m\n5wHI9cit3ZOTk6/rh5TgXF733lWqVJGHh4fGjh2rc+fO6ezZsxo7dqxq1qypWrVq2ZexZMkS/fbb\nb8rIyNB//vMflSxZUvXq1SusTbqlCL7+Qtzd3fXxxx/r7NmzCgkJUcOGDZWUlKTJkydLuvRKweef\nf66dO3eqXr166t69uzp37qxnn31WkjRy5EhVrlxZLVu2VEhIiA4dOqRZs2apRIkSua6vWLFimjp1\nqjZv3ix/f38NGjRIPXr0sE+PiIhQ27Zt1atXL3l7e+vZZ5/V448/rtdee+32V4ZF3Ex4WKVKFW3b\ntk2ZmZnatm2b5s+fL1dXV/vNzTPPPKOvv/5aiYmJSk1N1dixY2+4q2twcLA2btyodevWKSMjQ3Pm\nzHEY3+W1117T0KFDdfbsWRljtGvXrhxPIPD/ypQpo4CAAH344Yd66KGHVLNmTf3tb39TiRIltGXL\nFmVkZOjHH3+096658oY1N8HBwTpw4IAWL16sjIwMrVixIl+/BnXZ8OHD9dprr+nEiROSLj0tSklJ\nUfXq1Qm4C0izZs20ePFi7dy5094DUJJ9TI709HT98ccfGj9+vMqVK+d0n3D24MKZv8KNr7u7u/79\n738rISFB/v7+evvtt9W5c2dJ/9/jbcWKFapTp44+/PBD9erVy2H+MWPGqEyZMmratKkCAwOVkJCg\nGTNmqFixYk7Pj82bN9fJkycVHBycI5D08vLS2LFj9cknn8jPz099+/ZVjx491KVLl3xt18svv6wS\nJUqofv366tmzp9q3b6+uXbtqyZIl9l+ULV26tAICAtS8eXOFh4erevXq6tu3b651lNd1hzP/+Mc/\n5Ofnpw4dOsjLy0udOnVSkyZN1KFDB/n4+Khfv34aMmSIfHx81KRJE7m6umro0KH5WvbdqEKFChoz\nZowmTZokX19fBQcH6+DBg/ZeH//+97+1Y8cO1a9fX3Xq1NGnn36qSZMmXfd4mffee68mTZqk+Ph4\n+fv7a8KECerdu7ek/L3ymNf+62wbkDdngW+xYsWUlJSk5OTkWzJkwI2eQ67l8tAWS5YsUWZmpvbs\n2aOOHTvedQ8+bjVn13DOzpvFixfXhQsXdPjw4VsSJuXnAcj1aNeunfbu3atPP/1UFy5c0JEjR/Ty\nyy/zK963mLN77ylTpujixYtq3LixmjVrpiJFimjGjBkOPTRffPFFvffee/Lz89PKlSs1ceJEy7zq\nyK86Anex7OxsM3HiRPPMM88YT09PExgYaIYMGWLOnz9/zV/wu2zt2rWmcePGxtvb23Tu3NkcPnzY\nDBgwwHh6epq4uDhz7tw58+abbxpfX19Tv3598+WXX5rIyMgb+lXHy+UMDAw0Tz31lBk6dKh55513\n7NOPHDlievbsaXx9fY3NZjMRERHmm2++uYU1ZT0LFy40Hh4eZurUqfbPlixZYho0aGBsNpt59dVX\nTXJysuncubOx2Wxm+/btee4Ts2fPNiEhIcZms5nXXnvNTJw4Md+/DHX27FnTt29fU7duXePl5WUa\nN25s30/y2keNcfwlq8tsNpuZP3/+TdXP3e7qX/VyVkdHjhwxNWrUMF27dnX43q5du0yLFi2Ml5eX\nad26tdm1a5cZN26c8fT0NP/973+v+auOxhizZcsWh3m//fbbfP+qm7N2X7ZsmYmMjDTe3t6mbt26\npnv37mbv3r3GmNyPVz169DBvvfXW9VRhobi6DoG7VVZWlsOvQy5cuNB4e3sXYomsLa9fdbz6+D9r\n1izTuHFj4+XlZerVq2def/11c+LECWOMMfv27TMhISHG09PTLF++3Ol6nR1vr+ccYowxhw4dyvGL\ntldvw9y5c02TJk1M7dq1TUhIiJk0aZL910f/aq5sa2fXcHmdN5OTk01kZKSpVauWmTlzptP15vYr\nkO+9957p2LGjMebSNUWHDh2Mt7e3adasmVm7dq2ZM2eO/Zccc5v/ym0xJuevD3///femefPmpnbt\n2qZBgwYmKirK4ddbgdvNxZgbHLQHAAAAdhs2bFDnzp21bt06lS1btrCLA9yw8PBw1a1bV4MHD9bZ\ns2fVu3dvValS5aZ+RQ4AgMLCrzoCAACgQC1btkwDBgzI8zubN2/OMWA+Csb48eP1wQcfKCAgQMWK\nFVNAQIAGDRqkHTt26IUXXshz3kWLFvE6OwDgjkKPLwDXrUWLFtq/f/81p3fr1k1vvPFGAZYIt0t0\ndHSeT/gfeOABrVy5sgBLhMLGjS8A3PlefvllrVmz5prTmzZtqo8++qgAS4SCEBUVpblz515zure3\nt2bNmlWAJQLuDARfAAAAAAAAsCR+1REAAAAAAACWxBhfBejIkSOFXYSbVqlSJctuR6VKlW7Luqxa\nX3cj2v360fbXz6r1dTei3a8P7X79rFBfEm1/I6xaX3cj2v360O7Xzwr1Jf21254eXwAAAAAAALAk\ngi8AAAAAAABYEsEXAAAAAAAALIngCwAAAAAAAJZE8AUAAAAAAABLIvgCAAAAAACAJRF8AQAAAAAA\nwJIIvgAAAAAAAGBJBF8AAAAAAACwJIIvAAAAAAAAWBLBFwAAAAAAACyJ4AsAAAAAAACWRPAFAAAA\nAAAASyL4AgAAAAAAgCURfAEAAAAAAMCSCL4AAAAAAABgSQRfAAAAAAAAsCSCLwAAAAAAAFgSwRcA\nAAAAAAAsieALAAAAAAAAlkTwBQAAAAAAAEsi+AIAAAAAAIAlEXwBAAAAAADAkgi+AAAAAAAAYEkE\nXwAAAAAAALAkgi8AAAAAAABYEsEXAAAAAAAALIngCwAAAAAAAJZE8AUAAAAAAABLIvgCAAAAAACA\nJRF8AQAAAAAAwJIIvgAAAAAAAGBJBF8AAAAAAACwJIIvAAAAAAAAWBLBFwAAAAAAACyJ4AsAAAAA\nAACWRPAFAAAAAAAASyL4AgAAAAAAgCURfAEAAAAAAMCSCL4AAAAAAABgSQRfAAAAAAAAsCSCLwAA\nAAAAAFgSwRcAAAAAAAAsieALAAAAAAAAlkTwBQAAAAAAAEsi+AIAAAAAAIAlEXwBAAAAAADAkgi+\nAAAAAAAAYEkEXwAAAAAAALAkgi8AAAAAAABYEsEXAAAAAAAALIngCwAAAAAAAJZE8AUAAAAAAABL\nIvgCAAAAAACAJRF8AQAAAAAAwJIIvgAAAAAAAGBJBF8AAAAAAACwJIIvAAAAAAAAWBLBFwAAAAAA\nACyJ4AsAAAAAAACWRPAFAAAAAAAASyL4AgAAAAAAgCURfAEAAAAAAMCSCL4AAAAAAABgSQRfAAAA\nAAAAsCSCLwAAAAAAAFiSe2EX4K/kYvcWhV2Em3aosAtwq3yXUGCrevaL3QW2rtvHCtsgbepfqcDW\ntfirMwW2rtvrxrajebsyt7gcd48JEybY/92nT59CLAkKUvk9bxfKek88NrJQ1gv81VXatrOwi3Dz\ntu1UwV0Z3UaVCm4ruJ+7g3A/dwOssR03ck9Hjy8AAAAAAABYEsEXAAAAAAAALIngCwAAAAAAAJZE\n8AUAAAAAAABLIvgCAAAAAACAJRF8AQAAAAAAwJIIvgAAAAAAAGBJBF8AAAAAAACwJIIvAAAAAAAA\nWBLBFwAAAAAAACyJ4AsAAAAAAACWRPAFAAAAAAAASyL4AgAAAAAAgCURfAEAAAAAAMCSCL4AAAAA\nAABgSQRfAAAAAAAAsCSCLwAAAAAAAFgSwRcAAAAAAAAsieALAAAAAAAAlkTwBQAAAAAAAEsi+AIA\nAAAAAIAlEXwBAAAAAADAkgi+AAAAAAAAYEkEXwAAAAAAALAkgi8AAAAAAABYEsEXAAAAAAAALIng\nCwAAAAAAAJZE8AUAAAAAAABLIvgCAAAAAACAJRF8AQAAAAAAwJIIvgAAAAAAAGBJBF8AAAAAAACw\nJIIvAAAAAAAAWBLBFwAAAAAAACyJ4AsAAAAAAACWRPAFAAAAAAAASyL4AgAAAAAAgCURfAEAAAAA\nAMCSCL4AAAAAAABgSQRfAAAAAAAAsCSCLwAAAAAAAFgSwRcAAAAAAAAsieALAAAAAAAAlkTwBQAA\nAAAAAEsi+AIAAAAAAIAlEXwBAAAAAADAkgi+AAAAAAAAYEkEXwAAAAAAALAkgi8AAAAAAABYEsEX\nAAAAAAAALIngCwAAAAAAAJZE8AUAAAAAAABLIvgCAAAAAACAJRF8AQAAAAAAwJIIvgAAAAAAAGBJ\nBF8AAAAAAACwJIIvAAAAAAAAWBLBFwAAAAAAACyJ4AsAAAAAAACWRPAFAAAAAAAASyL4AgAAAAAA\ngCURfAEAAAAAAMCSCL4AAAAAAABgSQRfAAAAAAAAsCSCr2tYv359YRcBAAAAAAAAN4HgKxcnTpzQ\nmjVrCrsYAAAAAAAAuAnuhV2AO1F0dLT27Nmjr7/+Wr/88oskKSsrS6+88oqMMZo4caKGDx+uEydO\naPz48Ro+fLjc3alKAAAAAACAOwlpTS5atGihmJgY2Ww21axZU7Vr19bKlSsVFxenzp07y2azKT4+\nXtu3b9eLL75I6HWXqlSpUmEXAYWAdi8Yd2I9F0aZ7sR6yK+7uexXssp2XMut3j6r1FdBbYdV6kuy\nzrZYZTtwfWj3vyba/a/retuexCYPZcqU0aeffqp58+YpNTVVjzzyiCSpZcuWGjp0qKpVq6aaNWsW\ncilxo44cOeLwNwfOvwbavWBcXc+FrVKlSoXS9ndaPeRXbvV1Nyqsdi9It7KdaPfrZ4X6kmh73P1o\n978m2v2v63rbnuArD3PnzpW3t7eaNGmi9evXa/PmzZKk9PR0GWN09uzZQi4hAAAAAAAAroXB7XPh\n4uKiixcvKiUlRRUqVJAxRps2bVJWVpYk6csvv1Tbtm11//33a+3atYVcWgAAAAAAAOSG4CsXVapU\n0f79+5WcnKxPPvlEI0aMUGBgoH799VctXLhQp06dkq+vr9q1a6f58+crLS2tsIsMAAAAAACAq/Cq\nYy5Kly6tKVOm5Ph82rRpkqS///3vkqRSpUpp7NixBVo2AAAAAAAA5A89vgAAAAAAAGBJBF8AAAAA\nAACwJIIvAAAAAAAAWBLBFwAAAAAAACyJ4AsAAAAAAACWRPAFAAAAAAAASyL4AgAAAAAAgCURfAEA\nAAAAAMCSCL4AAAAAAABgSQRfAAAAAAAAsCSCLwAAAAAAAFgSwRcAAAAAAAAsieALAAAAAAAAlkTw\nBQAAAAAAAEsi+AIAAAAAAIAlEXwBAAAAAADAkgi+AAAAAAAAYEkEXwAAAAAAALAkgi8AAAAAAABY\nEsEXAAAAAAAALIngCwAAAAAAAJZE8AUAAAAAAABLIvgCAAAAAACAJRF8AQAAAAAAwJIIvgAAAAAA\nAGBJBF8AAAAAAACwJIIvAAAAAAAAWBLBFwAAAAAAACyJ4AsAAAAAAACWRPAFAAAAAAAASyL4AgAA\nAAAAgCURfAEAAAAAAMCSCL4AAAAAAABgSQRfAAAAAAAAsCSCLwAAAAAAAFgSwRcAAAAAAAAsieAL\nAAAAAAAAlkTwBQAAAAAAAEsi+AIAAAAAAIAlEXwBAAAAAADAkgi+AAAAAAAAYEkEXwAAAAAAALAk\ngi8AAAAAAABYEsEXAAAAAAAALIngCwAAAAAAAJZE8AUAAAAAAABLIvgCAAAAAACAJRF8AQAAAAAA\nwJIIvgAAAAAAAGBJBF8AAAAAAACwJIIvAAAAAAAAWBLBFwAAAAAAACyJ4AsAAAAAAACWRPAFAAAA\nAAAASyL4AgAAAAAAgCURfAEAAAAAAMCSCL4AAAAAAABgSQRfAAAAAAAAsCSCLwAAAAAAAFgSwRcA\nAAAAAAAsieALAAAAAAAAlkTwBQAAAAAAAEtyL+wC/JW4TV9U2EW4aZUqVdKRI0cKuxh3lW9fqFnY\nRbhptPv1a96uTGEX4Zag7a9fnz59CrsIKAQnHhtZ2EUAUICO2DwLuwg3zSrn+EoFuC7u5/6arHA/\nJ/21254eXwAAAAAAALAkgi8AAAAAAABYEsEXAAAAAAAALIngCwAAAAAAAJZE8AUAAAAAAABLIvgC\nAAAAAACAJRF8AQAAAAAAwJIIvgAAAAAAAGBJBF8AAAAAAACwJIIvAAAAAAAAWBLBFwAAAAAAACyJ\n4AsAAAAAAACWRPAFAAAAAAAASyL4AgAAAAAAgCURfAEAAAAAAMCSCL4AAAAAAABgSQRfAAAAAAAA\nsCSCLwAAAAAAAFgSwRcAAAAAAAAsieALAAAAAAAAlkTwBQAAAAAAAEsi+AIAAAAAAIAlEXwBAAAA\nAADAkgi+AAAAAAAAYEkEXwAAAAAAALAkgi8AAAAAAABYEsEXAAAAAAAALIngCwAAAAAAAJZE8AUA\nAAAAAABLIvgCAAAAAACAJRF8AQAAAMD/tXf/sVrX9f/HH+eHpEgSZswd5UdyUkFSrBD8Uc2Vabr8\nbnZmK/2oHdKJlOlmNVsIRv4ot5w50fnNaCjZ13RJ+jWnuclMBTRnEOLxB8mPUESBoQfwx+H6/NE6\niw7SuQ7n4hxe3G6bU6734bqe13nyfrtz33VdAFAk4QsAAACAIglfAAAAABRJ+AIAAACgSMIXAAAA\nAEUSvgAAAAAokvAFAAAAQJGELwAAAACKJHwBAAAAUCThCwAAAIAiCV8AAAAAFEn4AgAAAKBIwhcA\nAAAARRK+AAAAACiS8AUAAABAkYQvAAAAAIokfAEAAABQJOELAAAAgCIJXwAAAAAUSfgCAAAAoEjd\nCl9tbW3bvX3+/Pm9OgwAAAAA9JYdhq8tW7Zk3bp1mTlzZtavX59169Z1/rNq1arccsstu2pOAAAA\nAKhK444OPvPMM/nd736X1157LRdeeOE2x+rr63PsscfWdDgAAAAA6Kkdhq/jjjsuxx13XG6++eZM\nnjx5V80EAAAAADutW5/xNXny5KxatSr33HNP7rjjjiTJK6+8kq1bt9Z0OAAAAADoqW6Fr0cffTRX\nX3113nrrrTz55JNJknnz5mX27Nk1HQ4AAAAAeqpb4euee+7JT3/605x33nkZMGBAkuTss8/OX//6\n15oOBwAAAAA91a3wVV9fnw9/+MPb3NbQ0JBKpVKToQAAAABgZ3UrfH3iE5/IzJkzOz/Xa9WqVfnV\nr36V5ubmWs8HAAAAAD3SrfDV2tqaurq6XHXVVVm7dm2uueaa1NfXZ9KkSbWeDwAAAAB6pLE7XzRw\n4MBMnjy589dbtmxJfX195+d9AQAAAEB/061XfM2fPz+/+MUvkiQLFizIBRdckAsvvDB//vOfazoc\nAAAAAPRUt8LXXXfdlTPPPDNJ8pvf/CaXXXZZbrjhhtx77701HQ4AAAAAeqpbb3Wsq6vLgQcemNWr\nV+fdd9/NkUcemST+VkcAAAAA+q1uha/GxsYsXbo08+bNy/jx45MkGzZsEL4AAAAA6Le69VbHc889\nN7Nnz86GDRvS0tKSJLnhhhtyxhln1HQ4AAAAAOipbr3ia8yYMbnmmmu2ue1HP/pRnnrqqZoMBQAA\nAAA7q1vha+vWrXniiSeyZs2azrc3btmyJY888kgmTpxY0wEBAAAAoCe6Fb5mzpyZZcuWZdSoUXn6\n6adz9NFHp62tLZMnT671fAAAAADQI90KX21tbbn++uvT2NiYSy+9NBdffHFeeeWVPPTQQznmmGNq\nPSMAAAAAVK1bH27f0NCQ+vp/funWrVvT0dGRkSNH5vnnn6/pcAAAAADQU90KX2PHjs0PfvCDdHR0\n5OMf/3huvvnm/OEPf8h7771X6/kAAAAAoEe6Fb4mTZqUlpaWNDQ0pLW1NQMGDEhbW1umTJlS6/kA\nAAAAoEe69RlfDzzwQE477bQkyX777ZcLLrggSTJ79uwcfvjhtZsOAAAAAHpoh+FrxYoVWb58ee67\n774MHjx4m2Pt7e3505/+lHPOOaemAwIAAABAT+wwfL377rt5/vnn097enkceeWSbYw0NDTn77LNr\nOhwAAAAA9NQOw1dzc3Oam5szcuTInHTSSV2Ov/DCCzUbDAAAAAB2Rrc+4+ukk05KW1tb1qxZk0ql\nkiTZsmVL7rrrrtx22201HRAAAAAAeqJb4ev222/Po48+mmHDhmXZsmUZMWJEXnvttXzta1+r9XwA\nAAAA0CPdCl8LFy7MjTfemIEDB+bSSy/NjBkzsmjRoixdurTW8wEAAABAj9R354saGhoycODAJMnW\nrVuTJEceeWSeeuqp2k0GAAAAADuhW+FrxIgRufbaa9PR0ZGmpqbceeedmT9/ftrb22s9HwAAAAD0\nSLfC15QpUzJ27Ng0NDTk3HPPzbJly/L73/8+5513Xo3HAwAAAICe2eFnfE2ZMiV1dXWdv37wwQeT\npDx3tp0AABJfSURBVPNvdrz99tszYcKEGo4HAAAAAD2zw/D1ne98J0myaNGirFixIp/97Gez7777\nZuPGjXnssccyevToXTIkAAAAAFRrh+Hr8MMPT5LMmjUr11577Tav/po4cWIuv/zynH766bWdEAAA\nAAB6oFuf8bVx48a89dZb29zW3t6ejRs31mQoAAAAANhZO3zF17988YtfzCWXXJIxY8Zk4MCB2bRp\nU9ra2nLSSSfVej4AAAAA6JFuha+vfvWrmTBhQpYuXZq33347++67b1paWjJy5MgajwcAAAAAPdOt\n8JUkBx98cA4++OBazgIAAAAAvaZbn/EFAAAAALsb4QsAAACAIglfAAAAABRJ+AIAAACgSMIXAAAA\nAEUSvgAAAAAokvAFAAAAQJGELwAAAACKJHwBAAAAUCThCwAAAIAiCV8AAAAAFEn4AgAAAKBIwhcA\nAAAARRK+AAAAACiS8AUAAABAkYQvAAAAAIokfAEAAABQJOELAAAAgCIJXwAAAAAUSfgCAAAAoEjC\nFwAAAABFEr4AAAAAKJLwBQAAAECRhC8AAAAAiiR8AQAAAFAk4QsAAACAIglfAAAAABRJ+AIAAACg\nSMIXAAAAAEUSvgAAAAAokvAFAAAAQJGELwAAAACKJHwBAAAAUCThCwAAAIAiCV8AAAAAFEn4AgAA\nAKBIwhcAAAAARRK+AAAAACiS8AUAAABAkYQvAAAAAIokfAEAAABQJOELAAAAgCIJXwAAAAAUSfgC\nAAAAoEjCFwAAAABFauzrAfYkHeef3tcj7LSVfT1Ab/n/T++yh/o/c57fZY9VO7v/c5h71uF9PQIA\nhfl/S/6nr0foHUv6eoDecWnTI7vssZqeXbzLHqtmnl2cpr6eoTc07bpn4ee5fsTPcz2w+z+Pnv5M\n5xVfAAAAABRJ+AIAAACgSMIXAAAAAEUSvgAAAAAokvAFAAAAQJGELwAAAACKJHwBAAAAUCThCwAA\nAIAiCV8AAAAAFEn4AgAAAKBIwhcAAAAARRK+AAAAACiS8AUAAABAkYQvAAAAAIokfAEAAABQJOEL\nAAAAgCIJXwAAAAAUSfgCAAAAoEjCFwAAAABFEr4AAAAAKJLwBQAAAECRhC8AAAAAiiR8AQAAAFAk\n4QsAAACAIglfAAAAABRJ+AIAAACgSMIXAAAAAEUSvgAAAAAokvAFAAAAQJGELwAAAACKJHwBAAAA\nUCThCwAAAIAiCV8AAAAAFEn4AgAAAKBIwhcAAAAARRK+AAAAACiS8AUAAABAkYQvAAAAAIokfAEA\nAABQJOELAAAAgCIJXwAAAAAUSfgCAAAAoEjCFwAAAABFEr4AAAAAKJLwBQAAAECRhC8AAAAAiiR8\nAQAAAFAk4QsAAACAIglfAAAAABRJ+AIAAACgSMIXAAAAAEUSvgAAAAAokvAFAAAAQJGELwAAAACK\nJHwBAAAAUCThCwAAAIAiCV8AAAAAFEn4AgAAAKBIwhcAAAAARRK+AAAAACiS8AUAAABAkYQvAAAA\nAIokfAEAAABQJOELAAAAgCIJXwAAAAAUqd+HrxUrVmT69OlJkp/97GdJkuXLl2f16tV9OBUAAAAA\n/V2/D1//7vvf/36SZMGCBXn11Vf7eBoAAAAA+rPGWj/A+++/n5tuuilvvPFG9tprr4wdOzbLly/P\n+vXrc8kll2ThwoV5/PHHU1dXl/Hjx+crX/lK3nzzzfz85z/PXnvtlREjRnTe16RJkzJt2rQ8/PDD\nWbBgQQYPHpzm5uYuj7lp06Zcf/31ee+99/Lee+9l0qRJOeSQQzJr1qy89NJLqa+vz/nnn5/hw4fn\njjvuSFtbWzo6OnLKKafkc5/7XKZPn55hw4YlSb7xjW9k5syZaW9vT0dHR1pbWzNixIjce++9Wbhw\nYerq6vLpT386Z5xxRq2/lfSypqamvh6BXehf+95Vey/pz1cpz8Xuq+N59M/HqTXPg92d3e+Z7H3P\nZO97np7+TFfz8DVv3rx85CMfyXe/+908/vjjaW9vzxtvvJGf/OQnWbt2bRYsWJAf//jHSZKpU6fm\n2GOPzYMPPpjjjz8+p556au69994sX7688/6GDx+ecePGZeLEiduNXkmyePHi7L///pk8eXLWrFmT\nV199NYsWLcqbb76Zq666Ks8991yeeOKJvP3221m5cmVmzJiRLVu25Hvf+17Gjx+fJBk2bFi+9KUv\n5e677864cePyhS98IatWrcqsWbMyderU3Hfffbn11ltTX1+fhx9+uNbfRmrgP98u68JZttWrV6ep\nqWmX7b2Ut2Nv73u2O7L76th79Ur9fu2OduXe6X/sfs9k73sme9/z9PRnupqHr7///e8ZO3ZskuT4\n44/Po48+mlGjRqWuri4vvfRSXn311Vx55ZVJks2bN+f111/PqlWrMnHixCTJEUcckWeffbaqxzz0\n0EPz29/+NrfeemsmTJiQcePGZe7cuTnssMOSJGPGjMmYMWNy//33Z/To0UmSvffeOwcddFDnWyj/\nFdVeeOGFbNy4MY899liS5J133kmSTJw4MTNmzMgJJ5yQE044YWe+RQAAAADUQM3DV319fSqVyrYP\n2tjY+e9PfepTueCCC7Y5Pnfu3NTX//Pjx/7z93bHkCFDct1112XJkiV56KGH8uKLL+ZDH/rQf72v\njo6Ozsf99xlbW1tz6KGHbvO1559/fv7xj3/kySefzJVXXpmrr746DQ0NVc8KAAAAQG3U/MPtR40a\nlb/97W9Jkr/85S9Zt25d57FDDjkkS5YsyTvvvJNKpZJZs2bl3XffTVNTU15++eUk6fy9/66uri4d\nHR0f+JiLFi3K4sWLc9RRR6W1tTUvv/xyRo0alSVLliT556vQfvnLX6a5ubnzti1btuS1117LgQce\nuM19NTc3Z+HChUmSVatW5f7778+mTZty991356CDDkpLS0sGDRqUzZs378R3CQAAAIDeVvNXfB1/\n/PFZvHhxpk2blsbGxhxxxBGdxw444ICceuqpmTZtWurr6zN+/PgMGDAgp556aq6//vosXLgww4cP\n73Kfo0ePzqxZs7LPPvvkk5/8ZJfjBx54YG688cbMnTs3dXV1OfPMMzN69Og8/fTTueKKK5Ik3/rW\ntzJ8+PAccsghmTZtWt5///2cddZZ2Xvvvbe5ry9/+cu56aabcsUVV2Tr1q355je/mYEDB2bjxo25\n/PLLs/fee+ewww7LoEGDevk7BwAAAMDOqHn4amxszLe//e0PPH7yySfn5JNP3ua2j33sY7n66qu7\nfO1tt92WJDnxxBNz4oknfuB9Dh06NDNmzOhy+znnnNPltq9//etdbps+fXrnf++zzz657LLLunxN\na2vrBz4+AAAAAH2v5uGrlu6+++7tvhXyoosuytChQ/tgIgAAAAD6i906fLW0tKSlpaWvxwAAAACg\nH6r5h9sDAAAAQF8QvgAAAAAokvAFAAAAQJGELwAAAACKJHwBAAAAUCThCwAAAIAiCV8AAAAAFEn4\nAgAAAKBIwhcAAAAARRK+AAAAACiS8AUAAABAkYQvAAAAAIokfAEAAABQJOELAAAAgCIJXwAAAAAU\nSfgCAAAAoEjCFwAAAABFEr4AAAAAKJLwBQAAAECRhC8AAAAAiiR8AQAAAFAk4QsAAACAIglfAAAA\nABRJ+AIAAACgSMIXAAAAAEUSvgAAAAAokvAFAAAAQJGELwAAAACKJHwBAAAAUCThCwAAAIAiCV8A\nAAAAFEn4AgAAAKBIwhcAAAAARRK+AAAAACiS8AUAAABAkYQvAAAAAIokfAEAAABQJOELAAAAgCIJ\nXwAAAAAUSfgCAAAAoEjCFwAAAABFEr4AAAAAKJLwBQAAAECRhC8AAAAAiiR8AQAAAFAk4QsAAACA\nIglfAAAAABRJ+AIAAACgSMIXAAAAAEUSvgAAAAAokvAFAAAAQJGELwAAAACKJHwBAAAAUCThCwAA\nAIAiCV8AAAAAFEn4AgAAAKBIwhcAAAAARRK+AAAAACiS8AUAAABAkRr7eoA9ScP//UNfj7DTmpqa\nsnr16r4eY7cy96zD+3qEnWbvANDV1464va9H6BX+P1+91eM+2dcj7LRS9t60Cx/Lz3N7phJ+nkv2\n7N17xRcAAAAARRK+AAAAACiS8AUAAABAkYQvAAAAAIokfAEAAABQJOELAAAAgCIJXwAAAAAUSfgC\nAAAAoEjCFwAAAABFEr4AAAAAKJLwBQAAAECRhC8AAAAAiiR8AQAAAFAk4QsAAACAIglfAAAAABRJ\n+AIAAACgSMIXAAAAAEUSvgAAAAAokvAFAAAAQJGELwAAAACKJHwBAAAAUCThCwAAAIAiCV8AAAAA\nFEn4AgAAAKBIwhcAAAAARRK+AAAAACiS8AUAAABAkYQvAAAAAIokfAEAAABQJOELAAAAgCIJXwAA\nAAAUSfgCAAAAoEjCFwAAAABFEr4AAAAAKJLwBQAAAECRhC8AAAAAiiR8AQAAAFAk4QsAAACAIglf\nAAAAABRJ+AIAAACgSMIXAAAAAEUSvgAAAAAokvAFAAAAQJGELwAAAACKJHwBAAAAUCThCwAAAIAi\nCV8AAAAAFEn4AgAAAKBIwhcAAAAARRK+AAAAACiS8AUAAABAkYQvAAAAAIokfAEAAABQJOELAAAA\ngCIJXwAAAAAUSfgCAAAAoEjCFwAAAABFEr4AAAAAKJLwBQAAAECRhC8AAAAAiiR8AQAAAFAk4QsA\nAACAIglfAAAAABRJ+AIAAACgSMIXAAAAAEUSvgAAAAAokvAFAAAAQJHqKpVKpa+HAAAAAIDe5hVf\nAAAAABRJ+AIAAACgSMIXAAAAAEUSvgAAAAAokvAFAAAAQJGELwAAAACKJHwBAAAAUKTGvh6gNL/+\n9a/z4osvpq6uLuedd16am5s7jy1atCh33nln6uvrc/TRR6elpaUPJ92xHT2PKVOm5KMf/Wjq6//Z\nTS+++OLsv//+fTXqf7VixYpcd911Oe2003LKKadsc6y3dlLK3pNydr8r9p6Us3t7r4699z+u9dUp\nZffO+erYe3Xsvf9xra9OKbt3zlfH3rejQq9ZsmRJ5ZprrqlUKpXKypUrKz/84Q+3OX7JJZdU1q5d\nW+no6KhMnTq1snLlyr4Y87/6b8/joosuqmzevLkvRqva5s2bK9OnT6/ccsstlT/+8Y9djvfGTkrZ\ne6VSzu53xd4rlXJ2b+/Vsff+x7W+OqXs3jlfHXuvjr33P6711Sll98756tj79nmrYy9avHhxxo8f\nnyQ5+OCD097enk2bNiVJ1qxZk0GDBuWAAw7orJKLFy/uy3E/0I6ex+5mr732yuWXX54hQ4Z0OdZb\nOyll70k5u98Ve0/K2b29V8fe+x/X+uqUsnvnfHXsvTr23v+41lenlN0756tj79snfPWiDRs2ZL/9\n9uv89X777ZcNGzZs99jgwYOzfv36XT5jd+zoefzLrbfemqlTp2bOnDmpVCq7esRua2hoyIABA7Z7\nrLd2Usrek3J2vyv2vr372l13b+/Vsff+x7W+OqXs3jlfHXuvjr33P6711Sll98756tj79vmMrxra\n0R+i/voHbHv+c9Yzzzwz48aNy6BBg3LddddlwYIFmThxYh9N13t6ayel7D3ZM3bfmzspZff23nv3\nZe/9j2t9V3vC7p3zXdl7792Xvfc/rvVd7Qm7d853Ze//5BVfvWjIkCHb1NT169d3vjTvP4+tW7eu\n336I3I6eR5J8/vOfz+DBg9PQ0JCjjz46K1as6Isxd1pv7aSUvSd7xu57cyel7N7ed+6+7L1/c63v\nak/YvXO+K3vfufuy9/7Ntb6rPWH3zvmu7H37hK9edNRRR2X+/PlJkmXLlmXIkCHZZ599kiRDhw7N\n5s2b8/rrr6ejoyPPPPNMjjzyyL4c9wPt6Hls2rQpV111Vd5///0kyXPPPZdhw4b12aw7o7d2Usre\nkz1j9725k1J2b+/Vsffdi2t9V3vC7p3zXdl7dex99+Ja39WesHvnfFf2vn11ld3pdXq7gTlz5mTp\n0qWpq6vLpEmT8sorr2TgwIE55phj8txzz2XOnDlJkgkTJuT000/v42k/2I6exwMPPJB58+ZlwIAB\nGTlyZFpbW1NXV9fXI2/XsmXLMnv27KxduzYNDQ3Zf//985nPfCZDhw7t1Z2UsvekjN3vqr0n5eze\n3qtj7/2La331Sti9c7569l4de+9fXOurV8LunfPVs/euhC8AAAAAiuStjgAAAAAUSfgCAAAAoEjC\nFwAAAABFEr4AAAAAKJLwBQAAAECRhC8AAAAAiiR8AQAAAFCk/wWBS7kELJBtQwAAAABJRU5ErkJg\ngg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "dataset_breakdown_pct = dataset_breakdown.apply(lambda x: x / x['records'], axis=1)\n", + "dataset_breakdown_pct.plot(\n", + " kind=\"barh\",\n", + " subplots=True,\n", + " layout=(1,9),\n", + " sharey=True,\n", + " legend=False,\n", + " figsize=(20, 10),\n", + " title=\"Proportion of SIRAD ID by dataset\"\n", + ");" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\nDsONiIgk5/8ABXrxtDQ0rw8AAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "q = \"\"\"\n", + "WITH t AS\n", + "(\n", + "SELECt dsn, COUNT(*) as records\n", + "FROM sirad_id\n", + "GROUP BY dsn\n", + "), SID as (\n", + "SELECT dsn, COUNT(*) AS records_with_sid\n", + "FROM sirad_id\n", + "WHERE sirad_id <> 0\n", + "GROUP BY dsn\n", + ")\n", + "SELECT dsn as dataset, (CAST(records_with_sid AS FLOAT) / records) * 100 as perc\n", + "FROM t\n", + "JOIN sid USING(dsn) \n", + "\"\"\"\n", + "dsn_perc = pd.read_sql(q, con=pii_eng, index_col='dataset')\n", + "dsn_perc.plot(kind=\"barh\", title=\"Percentage of records with valid SIRAD IDs by dataset\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Birth year histogram" + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\nwjopKxU+JwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "q = \"\"\"\n", + "SELECT dsn AS dataset, CAST(STRFTIME('%Y', dob) AS INT) dob, COUNT(*) AS records\n", + "FROM sirad_id\n", + "GROUP BY DSN, STRFTIME('%Y', dob) ;\n", + "\"\"\"\n", + "dob_df = pd.read_sql(q, con=pii_eng)\n", + "pivoted_dob = dob_df.pivot(index='dob', columns='dataset', values='records')\n", + "pivoted_dob = pivoted_dob[pd.Series(index=pivoted_dob.index, data=np.isfinite(pivoted_dob.index))]\n", + "pivoted_dob.fillna(0, inplace=True)\n", + "pivoted_dob[1:].plot(kind='area', xlim=[1940, 2040]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Missing data" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "q = \"\"\"\n", + "select \n", + " sum(case when first_name is null then 1 else 0 end) first_name,\n", + " sum(case when last_name is null then 1 else 0 end) last_name,\n", + " sum(case when dob is null then 1 else 0 end) dob\n", + "from sirad_id\n", + "where sirad_id=0\n", + "\"\"\"\n", + "missing_df = pd.read_sql(q, con=pii_eng)\n", + "missing_series = missing_df.loc[0]\n", + "missing_series.plot(kind=\"bar\", title=\"Types of missing data in records without SIRAD ID\");" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 169, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXUAAAFICAYAAACvGW67AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlcVPX+x/HXsINIYKaGayKSW4GCAhaYYbikYS4ttnhT\n24z8WTfTX1JmobdbaguaZWV5U9OozGtqRSliRYS54o4rmnp1REFlkeH3Rz/nisqSDI5zeD8fDx8P\n5syZ73y+Z8b3fOd7zpxjKi0tLUVERAzByd4FiIiI7SjURUQMRKEuImIgCnUREQNRqIuIGIhCXUTE\nQBTqtcyXX35JSEgIADk5OQQFBbFx40Y7V1V11al57NixPPbYYzVQlWM6f3ssWrSILl26lLvu+e+b\nAwcO0KFDB7Kysq5InfLXKNQNaM+ePdx4440MHDjQ3qUY2r59+3juueeIioqiQ4cOhIWF8eSTT7Jt\n27Yy6y1btoz77ruPzp070759e7p3784bb7xBUVGRdZ2goCD69u3L2bNnyzz23IdYTYuLi+PXX3+t\n0rqNGzdm48aNtGvXDoAtW7aQmppak+XJX6BQN6AFCxbQo0cPtm/fztatW+1djiGdPn2aBx54AA8P\nD5KTk9mwYQNLly7Fz8+Phx56iJMnTwKQkpLC2LFjGTp0KKmpqaxfv54333yTb7/9lpdeeqlMm0eP\nHmX27Nn26E61JCcnK9SvIgp1gykqKuKrr75i0KBBdOvWjQULFlx2W927d2f69On07t2bRx99FIAj\nR47w9NNP07VrV0JCQhg2bBh79+61PubgwYM8/vjjdOzYkVtuuYVJkyZZR59FRUW8/vrr3H777dx0\n003069ePH374wfrYBx98kH/84x/cc8893HnnnQDs37+fBx98kJCQEPr06cPatWvL1Lhq1Sr69+9P\nSEgIXbp04dlnn7UGanmmTZtGly5diIyM5LXXXqOkpISvvvqKsLCwMqPnkpISIiIi+PLLLy9qY8eO\nHRw+fJgRI0bQoEEDTCYT1113HS+++CLjxo2jpKQEgLS0NNq1a0dsbCyenp44Oztz00038dZbb9Gz\nZ88ybY4ZM4YZM2aQk5NT6WsDMHr0aOLj48ss++2332jTpg1HjhyhqKiIV155haioKEJCQujXr1+5\n4Xv+9ArA6tWr6d27N8HBwfztb3/j6NGj1vvOnwIbP348c+fO5bPPPiMkJISkpCR69+5dpu3jx4/T\n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\nA3z66afW+9euXcvtt99ORkYGFouFvLw8srOzueGGG8rtg9ls5l//+hfFxcWsX7+e1NTUMvPFcXFx\nbNq0ieXLl1c4ZeDp6clbb73F+++/bx1tnzhxgtmzZ7N7925iY2NxcnLi8OHDPP/88/zyyy8UFhZi\nsVjYtWsX06ZNo23btrRs2fKS7QcEBPDII48wadKkCl8TZ2dnYmNjef/99zlz5gxRUVHW+5o0acK6\ndesoLi5m3bp1fPHFF9aaKhIZGUlxcTEff/wxRUVFZGZmltmBfCF3d3dycnI4efKk9aifAQMG8OOP\nP7J+/Xp69epV4fOJbSnUDWLBggX06tWLunXrXnTfnXfeSXFxcZV2vlXmjTfewNfXl169etG1a1cy\nMzP54IMPrFMY7733HmfOnCE6OpqBAwdy6623MmLECODPnYAREREMHTqUyMhIUlNT+de//lVmpHyh\nt99+G7PZzC233MKjjz7K3/72N+t9ISEh/P3vf2f8+PGEhIRwxx134OTkREJCQrnt3Xrrrfzxxx90\n7dqVJ554ggcffLBM6DRo0ICuXbsSEBBQbuACdO3alffee49ff/2VO++8k/bt29OjRw9Wr17Nxx9/\nTIcOHQBITExk0KBBTJo0icjISG6++WaGDx9OixYt+OijjyrcefjEE0/g6elZ7v3n9OnTh4yMDHr2\n7FlmHvzFF1/k119/JSwsjGnTpjF27Fj69evH+PHj+f7778ttr2HDhrz55pt88cUXhIWFkZSUZH0N\nL2XAgAGsWbOG22+/3frN46abbqJx48Z069YNHx+fSvsgtmPSlY9Eyurfvz9DhgzRL3KroaioiO7d\nu/P6668TERFh73JqFRd7FyBytSgpKWHWrFnk5eWVmZuWv6aoqIjExESaNm2qQLcDTb+I8OfO2ODg\nYJYvX05SUpJ1Okn+mszMTDp16kR2djZvvPGGvcuplTT9IiJiIBqpi4gYiEJdRMRAFOoiIgZi96Nf\nzv+14NXK39/fIep0FNqetqNtaVuOsj39/f3LvU8jdRERA1Goi4gYiEJdRMRAFOoiIgaiUBcRMRCF\nuoiIgSjURUQMRKEuImIgdv/xkVzdSkb0s3mb+ytf5S9znrW4BloVR1Pd9+uF701HfF8p1EVEquHw\n4cNMmjQJJycnSkpK+N///V8mT55c5va5i7Xn5uayf/9+7rnnHvr06cP8+fNZtWoVTk5ORERE8MAD\n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\nRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "q = \"\"\"\n", + "SELECT \n", + " CASE WHEN valid_ssn IS null THEN \"missing\"\n", + " WHEN valid_ssn IS 1 THEN \"invalid\"\n", + " WHEN valid_ssn IS 2 THEN \"questionable\"\n", + " WHEN valid_ssn IS 0 THEN \"valid\"\n", + " END as ssn_flag, count(*) as ssns\n", + "FROM sirad_id\n", + "GROUP BY valid_ssn\n", + "\"\"\"\n", + "ssn_v = pd.read_sql(q, con=pii_eng, index_col=\"ssn_flag\")\n", + "ssn_v.plot(kind=\"bar\", title=\"All records by SSN validity\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/sirad_config.py b/sirad_config.py new file mode 100644 index 0000000..6637867 --- /dev/null +++ b/sirad_config.py @@ -0,0 +1,12 @@ +""" +Sample configuration file for the sirad command line tool and API. + +See https://github.com/riipl-org/sirad#Configuration +""" +LAYOUTS = "layouts" +RAW = "raw" +PROCESSED = "build/processed" +STAGED = "build/staged" +RESEARCH = "build/research_v{}.db" +PII_SALT = "pii-secret" +DATA_SALT = "data-secret"