Skip to content

Commit b0c9b4a

Browse files
committed
updated growth charts for peds, including pct/z smoothing, tweaked adults, tests to match, closes #77
1 parent 5ad3fa5 commit b0c9b4a

8 files changed

+543
-227
lines changed

GrowthViz-adults.ipynb

+23-15
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@
378378
"cell_type": "code",
379379
"execution_count": null,
380380
"metadata": {
381-
"scrolled": true
381+
"scrolled": false
382382
},
383383
"outputs": [],
384384
"source": [
@@ -415,13 +415,15 @@
415415
{
416416
"cell_type": "code",
417417
"execution_count": null,
418-
"metadata": {},
418+
"metadata": {
419+
"scrolled": false
420+
},
419421
"outputs": [],
420422
"source": [
421423
"mdf = sumstats.add_mzscored_to_merged_df_adults(merged_df, percentiles_wide) \n",
422424
"mdf['wtz'] = (mdf['weight'] - mdf['Mean_weight'])/mdf['sd_weight']\n",
423425
"mdf['htz'] = (mdf['height'] - mdf['Mean_height'])/mdf['sd_height']\n",
424-
"mdf['BMIz'] = (mdf['bmi'] - mdf['Mean_bmi'])/mdf['sd_bmi']\n",
426+
"mdf['bmiz'] = (mdf['bmi'] - mdf['Mean_bmi'])/mdf['sd_bmi']\n",
425427
"mdf.head()\n",
426428
"\n",
427429
"col_opt = {\n",
@@ -438,7 +440,7 @@
438440
" 'weight_cat': { 'width': 80 },\n",
439441
" 'wtz': { 'width': 50 },\n",
440442
" 'bmi': { 'width': 40 },\n",
441-
" 'BMIz': { 'width': 30 },\n",
443+
" 'bmiz': { 'width': 30 },\n",
442444
"}\n",
443445
"g = qgrid.show_grid(charts.top_ten(mdf, 'weight'), precision=3, column_options=col_opt, column_definitions=col_def)\n",
444446
"ind_out = widgets.Output()\n",
@@ -458,7 +460,7 @@
458460
" charts.overlap_view_adults(obs, subjid, 'WEIGHTKG', True, True, wt_percentiles, bmi_percentiles, ht_percentiles)\n",
459461
" display(plt.show()) \n",
460462
"g.on('selection_changed', handle_selection_change) \n",
461-
"widgets.VBox([g, ind_out])\n"
463+
"widgets.VBox([g, ind_out])"
462464
]
463465
},
464466
{
@@ -496,7 +498,7 @@
496498
"cell_type": "code",
497499
"execution_count": null,
498500
"metadata": {
499-
"scrolled": true
501+
"scrolled": false
500502
},
501503
"outputs": [],
502504
"source": [
@@ -628,17 +630,22 @@
628630
"def edge25(obs, category, group, sort_order, param):\n",
629631
" filtered_by_cat = obs[(obs.clean_cat == category) & (obs.param == param)]\n",
630632
" # get list of relevant IDs\n",
631-
" filtered_sum = filtered_by_cat.groupby('subjid', as_index=False).agg(max_measure=('measurement', 'max'), min_measure=('measurement', 'min'), start_age=('age', 'min'), axis_range=('range', 'mean'))\n",
633+
" filtered_sum = filtered_by_cat.groupby('subjid', as_index=False).agg(max_measure=('measurement', 'max'), \n",
634+
" min_measure=('measurement', 'min'), \n",
635+
" start_age=('ageyears', 'min'), \n",
636+
" axis_range=('range', 'mean'))\n",
632637
" if group == 'largest':\n",
633638
" filtered_sum = filtered_sum.nlargest(25, 'max_measure')\n",
634639
" else:\n",
635640
" filtered_sum = filtered_sum.nsmallest(25, 'min_measure')\n",
636641
" filtered_sum.sort_values(by=[sort_order, 'subjid'], inplace=True)\n",
637-
" fig = charts.five_by_five_view(obs, filtered_sum.subjid.values, param, wt_percentiles, ht_percentiles, bmi_percentiles, 'dotted')\n",
642+
" fig = charts.five_by_five_view(obs, filtered_sum.subjid.values, param, wt_percentiles, ht_percentiles, \n",
643+
" bmi_percentiles, 'dotted')\n",
638644
" plt.show()\n",
639645
" \n",
640-
"interact(edge25, obs = fixed(obs_wbmi_mult), category = obs.clean_cat.unique(), \n",
641-
" group = ['largest', 'smallest'], sort_order = ['max_measure', 'min_measure', 'start_age', 'axis_range'], param = ['WEIGHTKG', 'HEIGHTCM', 'BMI'])"
646+
"interact(edge25, obs=fixed(obs_wbmi_mult), category=obs.clean_cat.unique(), \n",
647+
" group=['largest', 'smallest'], sort_order=['max_measure', 'min_measure', 'start_age', 'axis_range'], \n",
648+
" param=['WEIGHTKG', 'HEIGHTCM', 'BMI']);"
642649
]
643650
},
644651
{
@@ -658,10 +665,11 @@
658665
"source": [
659666
"all_ids = obs_wbmi['subjid'].unique()\n",
660667
"val = 2431 if 2431 in all_ids else np.random.choice(all_ids, size=1, replace=False)\n",
661-
"interact(charts.param_with_percentiles, merged_df = fixed(obs_wbmi),\n",
662-
" subjid = widgets.Dropdown(options=all_ids, value=val,\n",
663-
" description='Subject ID:',disabled=False), \n",
664-
" param = ['BMI', 'WEIGHTKG', 'HEIGHTCM'], wt_df = fixed(wt_percentiles), ht_df = fixed(ht_percentiles), bmi_df = fixed(bmi_percentiles))"
668+
"interact(charts.param_with_percentiles, merged_df=fixed(obs_wbmi),\n",
669+
" subjid=widgets.Dropdown(options=all_ids, value=val,\n",
670+
" description='Subject ID:', disabled=False), \n",
671+
" param=['BMI', 'WEIGHTKG', 'HEIGHTCM'], wt_df=fixed(wt_percentiles), \n",
672+
" ht_df=fixed(ht_percentiles), bmi_df=fixed(bmi_percentiles));"
665673
]
666674
},
667675
{
@@ -833,7 +841,7 @@
833841
"name": "python",
834842
"nbconvert_exporter": "python",
835843
"pygments_lexer": "ipython3",
836-
"version": "3.9.9"
844+
"version": "3.9.16"
837845
}
838846
},
839847
"nbformat": 4,

GrowthViz-adults.py

+16-10
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@
253253
mdf = sumstats.add_mzscored_to_merged_df_adults(merged_df, percentiles_wide)
254254
mdf['wtz'] = (mdf['weight'] - mdf['Mean_weight'])/mdf['sd_weight']
255255
mdf['htz'] = (mdf['height'] - mdf['Mean_height'])/mdf['sd_height']
256-
mdf['BMIz'] = (mdf['bmi'] - mdf['Mean_bmi'])/mdf['sd_bmi']
256+
mdf['bmiz'] = (mdf['bmi'] - mdf['Mean_bmi'])/mdf['sd_bmi']
257257
mdf.head()
258258

259259
col_opt = {
@@ -270,7 +270,7 @@
270270
'weight_cat': { 'width': 80 },
271271
'wtz': { 'width': 50 },
272272
'bmi': { 'width': 40 },
273-
'BMIz': { 'width': 30 },
273+
'bmiz': { 'width': 30 },
274274
}
275275
g = qgrid.show_grid(charts.top_ten(mdf, 'weight'), precision=3, column_options=col_opt, column_definitions=col_def)
276276
ind_out = widgets.Output()
@@ -397,17 +397,22 @@ def all_charts(subjid=val):
397397
def edge25(obs, category, group, sort_order, param):
398398
filtered_by_cat = obs[(obs.clean_cat == category) & (obs.param == param)]
399399
# get list of relevant IDs
400-
filtered_sum = filtered_by_cat.groupby('subjid', as_index=False).agg(max_measure=('measurement', 'max'), min_measure=('measurement', 'min'), start_age=('age', 'min'), axis_range=('range', 'mean'))
400+
filtered_sum = filtered_by_cat.groupby('subjid', as_index=False).agg(max_measure=('measurement', 'max'),
401+
min_measure=('measurement', 'min'),
402+
start_age=('ageyears', 'min'),
403+
axis_range=('range', 'mean'))
401404
if group == 'largest':
402405
filtered_sum = filtered_sum.nlargest(25, 'max_measure')
403406
else:
404407
filtered_sum = filtered_sum.nsmallest(25, 'min_measure')
405408
filtered_sum.sort_values(by=[sort_order, 'subjid'], inplace=True)
406-
fig = charts.five_by_five_view(obs, filtered_sum.subjid.values, param, wt_percentiles, ht_percentiles, bmi_percentiles, 'dotted')
409+
fig = charts.five_by_five_view(obs, filtered_sum.subjid.values, param, wt_percentiles, ht_percentiles,
410+
bmi_percentiles, 'dotted')
407411
plt.show()
408412

409-
interact(edge25, obs = fixed(obs_wbmi_mult), category = obs.clean_cat.unique(),
410-
group = ['largest', 'smallest'], sort_order = ['max_measure', 'min_measure', 'start_age', 'axis_range'], param = ['WEIGHTKG', 'HEIGHTCM', 'BMI'])
413+
interact(edge25, obs=fixed(obs_wbmi_mult), category=obs.clean_cat.unique(),
414+
group=['largest', 'smallest'], sort_order=['max_measure', 'min_measure', 'start_age', 'axis_range'],
415+
param=['WEIGHTKG', 'HEIGHTCM', 'BMI']);
411416

412417

413418
# # Visualizing Changes in Trajectory
@@ -419,10 +424,11 @@ def edge25(obs, category, group, sort_order, param):
419424

420425
all_ids = obs_wbmi['subjid'].unique()
421426
val = 2431 if 2431 in all_ids else np.random.choice(all_ids, size=1, replace=False)
422-
interact(charts.param_with_percentiles, merged_df = fixed(obs_wbmi),
423-
subjid = widgets.Dropdown(options=all_ids, value=val,
424-
description='Subject ID:',disabled=False),
425-
param = ['BMI', 'WEIGHTKG', 'HEIGHTCM'], wt_df = fixed(wt_percentiles), ht_df = fixed(ht_percentiles), bmi_df = fixed(bmi_percentiles))
427+
interact(charts.param_with_percentiles, merged_df=fixed(obs_wbmi),
428+
subjid=widgets.Dropdown(options=all_ids, value=val,
429+
description='Subject ID:', disabled=False),
430+
param=['BMI', 'WEIGHTKG', 'HEIGHTCM'], wt_df=fixed(wt_percentiles),
431+
ht_df=fixed(ht_percentiles), bmi_df=fixed(bmi_percentiles));
426432

427433

428434
# # Summary Statistics

0 commit comments

Comments
 (0)