Data Binning

Following script is used to bin the data and check stats of participants


In [1]:
import pandas as pd
import numpy as np
import json
import string

In [2]:
df = pd.read_csv('/home1/varunk/data/ABIDE1/RawDataBIDs/composite_phenotypic_file.csv') # , index_col='SUB_ID'

df = df.sort_values(['SUB_ID'])

In [8]:
df


Out[8]:
SITE_ID SUB_ID DX_GROUP DSM_IV_TR AGE_AT_SCAN SEX HANDEDNESS_CATEGORY HANDEDNESS_SCORES FIQ VIQ ... WISC_IV_BLK_DSN_SCALED WISC_IV_PIC_CON_SCALED WISC_IV_MATRIX_SCALED WISC_IV_DIGIT_SPAN_SCALED WISC_IV_LET_NUM_SCALED WISC_IV_CODING_SCALED WISC_IV_SYM_SCALED EYE_STATUS_AT_SCAN AGE_AT_MPRAGE BMI
489 PITT 50002 1 1 16.77 1 Ambi NaN 103.0 116.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
490 PITT 50003 1 1 24.45 1 R NaN 124.0 128.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
491 PITT 50004 1 1 19.09 1 R NaN 113.0 108.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
492 PITT 50005 1 1 13.73 2 R NaN 119.0 117.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
493 PITT 50006 1 1 13.37 1 L NaN 109.0 99.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
494 PITT 50007 1 1 17.78 1 R NaN 110.0 106.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
495 PITT 50008 1 1 32.45 1 R NaN 123.0 123.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
496 PITT 50009 1 1 33.86 1 R NaN 126.0 118.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
497 PITT 50010 1 1 35.20 1 L NaN 81.0 81.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
498 PITT 50011 1 1 16.93 1 L NaN 111.0 101.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
499 PITT 50012 1 1 21.48 1 R NaN 128.0 119.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
500 PITT 50013 1 1 9.33 1 R NaN 86.0 89.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
501 PITT 50014 1 1 14.20 1 R NaN 96.0 97.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
502 PITT 50015 1 1 14.20 1 R NaN 99.0 98.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
503 PITT 50016 1 1 21.82 1 R NaN 123.0 120.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
504 PITT 50017 1 1 22.70 1 R NaN 87.0 91.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
505 PITT 50019 1 1 27.81 1 R NaN 100.0 89.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
506 PITT 50020 1 1 20.83 1 R NaN 100.0 120.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
507 PITT 50022 1 1 16.99 1 R NaN 119.0 110.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
508 PITT 50023 1 1 12.64 2 R NaN 97.0 83.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
509 PITT 50024 1 1 22.64 1 R NaN 127.0 121.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
510 PITT 50025 1 1 31.72 1 R NaN 131.0 132.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
511 PITT 50026 1 1 16.28 1 R NaN 87.0 90.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
512 PITT 50027 1 1 12.24 1 R NaN 98.0 98.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
513 PITT 50028 1 1 12.74 1 R NaN 126.0 112.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
514 PITT 50029 1 1 11.40 2 R NaN 106.0 109.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
519 PITT 50030 2 0 25.12 1 -9999 NaN 105.0 100.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
520 PITT 50031 2 0 12.92 1 R NaN 106.0 102.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
521 PITT 50032 2 0 19.80 1 R NaN 119.0 116.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
522 PITT 50033 2 0 12.15 1 R NaN 98.0 98.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
548 SBL 51558 2 0 27.00 1 NaN 80.0 -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
549 SBL 51559 2 0 27.00 1 NaN 100.0 -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
550 SBL 51560 2 0 27.00 1 NaN 70.0 -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
551 SBL 51561 2 0 36.00 1 NaN 100.0 -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
552 SBL 51562 2 0 37.00 1 NaN 90.0 -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
553 SBL 51563 2 0 38.00 1 NaN 80.0 -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
554 SBL 51564 2 0 39.00 1 NaN 90.0 -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
555 SBL 51565 2 0 39.00 1 NaN 100.0 -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
556 SBL 51566 2 0 41.00 1 NaN 70.0 -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
557 SBL 51567 2 0 34.00 1 NaN 100.0 -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
558 SBL 51568 2 0 37.00 1 NaN 100.0 -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
559 SBL 51569 2 0 36.00 1 NaN 100.0 -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
560 SBL 51570 2 0 42.00 1 NaN -100.0 -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
561 SBL 51571 1 1 22.00 1 NaN -90.0 -9999.0 101.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN 22.45
562 SBL 51572 1 2 28.00 1 NaN 60.0 -9999.0 93.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN 22.33
563 SBL 51573 1 3 30.00 1 L -9999.0 -9999.0 108.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN 18.81
564 SBL 51574 1 2 30.00 1 NaN 100.0 -9999.0 105.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN 30.79
565 SBL 51575 1 2 31.00 1 NaN 100.0 -9999.0 100.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN 30.61
566 SBL 51576 1 3 31.00 1 NaN 80.0 -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
567 SBL 51577 1 3 31.00 1 NaN -40.0 -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
568 SBL 51578 1 2 33.00 1 NaN -100.0 125.0 129.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
569 SBL 51579 1 3 41.00 1 NaN 100.0 110.0 NaN ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
570 SBL 51580 1 3 42.00 1 NaN 60.0 -9999.0 117.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN 23.85
571 SBL 51581 1 3 64.00 1 NaN 100.0 120.0 119.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
572 SBL 51582 1 2 31.00 1 NaN 80.0 -9999.0 116.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN 28.68
573 SBL 51583 1 2 35.00 1 NaN 100.0 95.0 105.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
574 SBL 51584 1 2 49.00 1 NaN 100.0 -9999.0 133.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN 23.24
575 SBL 51585 1 1 27.00 1 NaN 90.0 96.0 99.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00
184 MAX_MUN 51606 1 2 29.00 2 R NaN 118.0 NaN ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
185 MAX_MUN 51607 1 2 26.00 1 R NaN 110.0 NaN ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN

1112 rows × 74 columns


In [ ]:

Reading scan json files and extracting scan parameters


In [9]:
# saving the file paths
!find /home1/varunk/data/ABIDE1/RawDataBIDs/ -name 'task-rest_bold.json' > scan_params_file.txt

In [10]:
# read the above created file paths:

with open('scan_params_file.txt', 'r') as f:
    scan_param_paths = f.read().split('\n')[0:-1]

In [11]:
scan_param_paths


Out[11]:
['/home1/varunk/data/ABIDE1/RawDataBIDs/UM_1/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/Caltech/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/Max_Mun_c/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/Max_Mun_d/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/UM_2/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/Max_Mun_b/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/CMU_a/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/NYU/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/Stanford/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/CMU_b/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/Max_Mun_a/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/Leuven_1/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/KKI/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/USM/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/Olin/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/Yale/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/SBL/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/Trinity/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/Pitt/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/UCLA_1/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/OHSU/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/SDSU/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/Leuven_2/task-rest_bold.json',
 '/home1/varunk/data/ABIDE1/RawDataBIDs/UCLA_2/task-rest_bold.json']

In [12]:
# for json_path in scan_param_paths:   
#     with open(json_path, 'rt') as fp:
#         task_info = json.load(fp)

#     # Accessing the contents:

#     tr = task_info['RepetitionTime']
#     volumes = task_info['NumberofMeasurements']
#     xdim_mm, ydim_mm = task_info['PixelSpacing'].split('x')
#     zdim_mm = task_info['SpacingBetweenSlices']
    
#     xdim_voxels, ydim_voxels = task_info['AcquisitionMatrix'].split('x')
#     zdim_voxels = task_info['NumberOfSlices']

In [ ]:

Convention:

DX_GROUP : 1=Autism, 2= Control

DSM_IV_TR : 0=TD,1=Autism,2=Asperger's, 3= PDD-NOS, 4=Asperger's or PDD-NOS

SEX : 1=Male, 2=Female


In [13]:
SITES = np.unique(df.as_matrix(['SITE_ID']).squeeze())
data_frame = pd.DataFrame({
'SITE_NAME': [] ,
'TR': [],
'VOLUMES': [],
'xdim_mm': [],
'ydim_mm': [],
'zdim_mm': [],
'xdim_voxels': [],
'ydim_voxels': [],
'zdim_voxels': [],    
'NUM_AUT_DSM_V': [] , 
'NUM_AUT_MALE_DSM_V': [] ,
'NUM_AUT_FEMALE_DSM_V': [],
'NUM_AUT_AGE_lte12_DSM_V' : [],
'NUM_AUT_AGE_12_18_DSM_V' : [],
'NUM_AUT_AGE_18_24_DSM_V': [],
'NUM_AUT_AGE_24_34_DSM_V' :[],
'NUM_AUT_AGE_34_50_DSM_V' : [],
'NUM_AUT_AGE_gt50_DSM_V' : [],
'NUM_AUT_DSM_IV' : [],
'NUM_AUT_MALE_DSM_IV' : [],
'NUM_AUT_FEMALE_DSM_IV' : [],
'NUM_ASP_DSM_IV' : [],
'NUM_ASP_MALE_DSM_IV' : [],
'NUM_ASP_FEMALE_DSM_IV' : [],
'NUM_PDDNOS_DSM_IV' : [],
'NUM_PDDNOS_MALE_DSM_IV' : [],
'NUM_PDDNOS_FEMALE_DSM_IV' : [],
'NUM_ASP_PDDNOS_DSM_IV' : [],
'NUM_ASP_PDDNOS_MALE_DSM_IV' : [],
'NUM_ASP_PDDNOS_FEMALE_DSM_IV' : [],
'NUM_TD' : [],
'NUM_TD_MALE' : [],
'NUM_TD_FEMALE' : [],
'NUM_TD_AGE_lte12' : [],
'NUM_TD_AGE_12_18' : [],
'NUM_TD_AGE_18_24' : [],
'NUM_TD_AGE_24_34' : [],
'NUM_TD_AGE_34_50' : [],
'NUM_TD_AGE_gt50' : []
                       
})

In [14]:
# NUM_AUT = 
# df.loc[(df['DSM_IV_TR'] != 0) & (df['DSM_IV_TR'] != 1) & (df['DSM_IV_TR'] != 2) & (df['DSM_IV_TR'] != 3) & (df['DSM_IV_TR'] != 4)]


for SITE in SITES:
    NUM_AUT_DSM_V = df.loc[(df['DX_GROUP'] == 1) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_AUT_MALE_DSM_V = df.loc[(df['DX_GROUP'] == 1) & (df['SEX'] == 1) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_AUT_FEMALE_DSM_V = df.loc[(df['DX_GROUP'] == 1) & (df['SEX'] == 2) & (df['SITE_ID'] == SITE)].shape[0]

    NUM_AUT_AGE_lte12_DSM_V = df.loc[(df['DX_GROUP'] == 1) & (df['AGE_AT_SCAN'] <= 12) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_AUT_AGE_12_18_DSM_V = df.loc[(df['DX_GROUP'] == 1) & (df['AGE_AT_SCAN'] > 12) & (df['AGE_AT_SCAN'] <= 18) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_AUT_AGE_18_24_DSM_V = df.loc[(df['DX_GROUP'] == 1) & (df['AGE_AT_SCAN'] > 18) & (df['AGE_AT_SCAN'] <= 24) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_AUT_AGE_24_34_DSM_V = df.loc[(df['DX_GROUP'] == 1) & (df['AGE_AT_SCAN'] > 24) & (df['AGE_AT_SCAN'] <= 34) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_AUT_AGE_34_50_DSM_V = df.loc[(df['DX_GROUP'] == 1) & (df['AGE_AT_SCAN'] > 34) & (df['AGE_AT_SCAN'] <= 50) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_AUT_AGE_gt50_DSM_V = df.loc[(df['DX_GROUP'] == 1) & (df['AGE_AT_SCAN'] > 50 ) & (df['SITE_ID'] == SITE)].shape[0]


    NUM_AUT_DSM_IV = df.loc[(df['DSM_IV_TR'] == 1) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_AUT_MALE_DSM_IV = df.loc[(df['DSM_IV_TR'] == 1) & (df['SEX'] == 1) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_AUT_FEMALE_DSM_IV = df.loc[(df['DSM_IV_TR'] == 1) & (df['SEX'] == 2) & (df['SITE_ID'] == SITE)].shape[0]


    NUM_ASP_DSM_IV = df.loc[(df['DSM_IV_TR'] == 2) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_ASP_MALE_DSM_IV = df.loc[(df['DSM_IV_TR'] == 2) & (df['SEX'] == 1) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_ASP_FEMALE_DSM_IV = df.loc[(df['DSM_IV_TR'] == 2) & (df['SEX'] == 2) & (df['SITE_ID'] == SITE)].shape[0]

    NUM_PDDNOS_DSM_IV = df.loc[(df['DSM_IV_TR'] == 3) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_PDDNOS_MALE_DSM_IV = df.loc[(df['DSM_IV_TR'] == 3) & (df['SEX'] == 1) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_PDDNOS_FEMALE_DSM_IV = df.loc[(df['DSM_IV_TR'] == 3) & (df['SEX'] == 2) & (df['SITE_ID'] == SITE)].shape[0]

    NUM_ASP_PDDNOS_DSM_IV = df.loc[(df['DSM_IV_TR'] == 4) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_ASP_PDDNOS_MALE_DSM_IV = df.loc[(df['DSM_IV_TR'] == 4) & (df['SEX'] == 1) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_ASP_PDDNOS_FEMALE_DSM_IV = df.loc[(df['DSM_IV_TR'] == 4) & (df['SEX'] == 2) & (df['SITE_ID'] == SITE)].shape[0]



    NUM_TD = df.loc[(df['DX_GROUP'] == 2) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_TD_MALE = df.loc[(df['DX_GROUP'] == 2) & (df['SEX'] == 1) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_TD_FEMALE = df.loc[(df['DX_GROUP'] == 2) & (df['SEX'] == 2) & (df['SITE_ID'] == SITE)].shape[0]

    NUM_TD_AGE_lte12 = df.loc[(df['DX_GROUP'] == 2) & (df['AGE_AT_SCAN'] <= 12) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_TD_AGE_12_18 = df.loc[(df['DX_GROUP'] == 2) & (df['AGE_AT_SCAN'] > 12) & (df['AGE_AT_SCAN'] <= 18) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_TD_AGE_18_24 = df.loc[(df['DX_GROUP'] == 2) & (df['AGE_AT_SCAN'] > 18) & (df['AGE_AT_SCAN'] <= 24) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_TD_AGE_24_34 = df.loc[(df['DX_GROUP'] == 2) & (df['AGE_AT_SCAN'] > 24) & (df['AGE_AT_SCAN'] <= 34) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_TD_AGE_34_50 = df.loc[(df['DX_GROUP'] == 2) & (df['AGE_AT_SCAN'] > 34) & (df['AGE_AT_SCAN'] <= 50) & (df['SITE_ID'] == SITE)].shape[0]
    NUM_TD_AGE_gt50 = df.loc[(df['DX_GROUP'] == 2) & (df['AGE_AT_SCAN'] > 50 ) & (df['SITE_ID'] == SITE)].shape[0]

    tr = 0
    volumes = 0
    xdim_mm = 0
    ydim_mm = 0
    zdim_mm = 0
    xdim_voxels = 0
    ydim_voxels = 0
    zdim_voxels = 0
    
    # Accessing scan details
    for json_path in scan_param_paths:
        extracted_site = json_path.split('/')[-2]
        
        if (SITE).lower() in (extracted_site).lower():    
            with open(json_path, 'rt') as fp:
                print('Site matched with ',json_path)
                task_info = json.load(fp)

    # Accessing the contents:

                tr = task_info['RepetitionTime']
                volumes = task_info['NumberofMeasurements']
                xdim_mm, ydim_mm = task_info['PixelSpacing'].split('x')
                zdim_mm = task_info['SpacingBetweenSlices']

                xdim_voxels, ydim_voxels = task_info['AcquisitionMatrix'].split('x')
                zdim_voxels = task_info['NumberOfSlices']
    
    
    _df = pd.DataFrame({
    'SITE_NAME': SITE ,
    'TR': tr ,
    'VOLUMES': volumes,
    'xdim_mm':xdim_mm,
    'ydim_mm':ydim_mm,
    'zdim_mm':zdim_mm,
    'xdim_voxels':xdim_voxels,
    'ydim_voxels':ydim_voxels,
    'zdim_voxels':zdim_voxels,
        
    'NUM_AUT_DSM_V': NUM_AUT_DSM_V , 
    'NUM_AUT_MALE_DSM_V': NUM_AUT_MALE_DSM_V ,
    'NUM_AUT_FEMALE_DSM_V': NUM_AUT_FEMALE_DSM_V,
    'NUM_AUT_AGE_lte12_DSM_V' : NUM_AUT_AGE_lte12_DSM_V,
    'NUM_AUT_AGE_12_18_DSM_V' : NUM_AUT_AGE_12_18_DSM_V,
    'NUM_AUT_AGE_18_24_DSM_V': NUM_AUT_AGE_18_24_DSM_V,
    'NUM_AUT_AGE_24_34_DSM_V' :NUM_AUT_AGE_24_34_DSM_V,
    'NUM_AUT_AGE_34_50_DSM_V' : NUM_AUT_AGE_34_50_DSM_V,
    'NUM_AUT_AGE_gt50_DSM_V' : NUM_AUT_AGE_gt50_DSM_V,
    'NUM_AUT_DSM_IV' : NUM_AUT_DSM_IV,
    'NUM_AUT_MALE_DSM_IV' : NUM_AUT_MALE_DSM_IV,
    'NUM_AUT_FEMALE_DSM_IV' : NUM_AUT_FEMALE_DSM_IV,
    'NUM_ASP_DSM_IV' : NUM_ASP_DSM_IV,
    'NUM_ASP_MALE_DSM_IV' : NUM_ASP_MALE_DSM_IV,
    'NUM_ASP_FEMALE_DSM_IV' : NUM_ASP_FEMALE_DSM_IV,
    'NUM_PDDNOS_DSM_IV' : NUM_PDDNOS_DSM_IV,
    'NUM_PDDNOS_MALE_DSM_IV' : NUM_PDDNOS_MALE_DSM_IV,
    'NUM_PDDNOS_FEMALE_DSM_IV' : NUM_PDDNOS_FEMALE_DSM_IV,
    'NUM_ASP_PDDNOS_DSM_IV' : NUM_ASP_PDDNOS_DSM_IV,
    'NUM_ASP_PDDNOS_MALE_DSM_IV' : NUM_ASP_PDDNOS_MALE_DSM_IV,
    'NUM_ASP_PDDNOS_FEMALE_DSM_IV' : NUM_ASP_PDDNOS_FEMALE_DSM_IV,
    'NUM_TD' : NUM_TD,
    'NUM_TD_MALE' : NUM_TD_MALE,
    'NUM_TD_FEMALE' : NUM_TD_FEMALE,
    'NUM_TD_AGE_lte12' : NUM_TD_AGE_lte12,
    'NUM_TD_AGE_12_18' : NUM_TD_AGE_12_18,
    'NUM_TD_AGE_18_24' : NUM_TD_AGE_18_24,
    'NUM_TD_AGE_24_34' : NUM_TD_AGE_24_34,
    'NUM_TD_AGE_34_50' : NUM_TD_AGE_34_50,
    'NUM_TD_AGE_gt50' : NUM_TD_AGE_gt50

    },index=[0],columns = [ 'SITE_NAME',
                            'TR',
                            'VOLUMES',
                            'xdim_mm',
                            'ydim_mm',
                            'zdim_mm',
                            'xdim_voxels',
                            'ydim_voxels',
                            'zdim_voxels',
                            'NUM_AUT_DSM_V',
                            'NUM_AUT_MALE_DSM_V',
                            'NUM_AUT_FEMALE_DSM_V',
                            'NUM_AUT_AGE_lte12_DSM_V',
                            'NUM_AUT_AGE_12_18_DSM_V',
                            'NUM_AUT_AGE_18_24_DSM_V',
                            'NUM_AUT_AGE_24_34_DSM_V',
                            'NUM_AUT_AGE_34_50_DSM_V',
                            'NUM_AUT_AGE_gt50_DSM_V',
                            'NUM_AUT_DSM_IV',
                            'NUM_AUT_MALE_DSM_IV',
                            'NUM_AUT_FEMALE_DSM_IV',
                            'NUM_ASP_DSM_IV',
                            'NUM_ASP_MALE_DSM_IV',
                            'NUM_ASP_FEMALE_DSM_IV',
                            'NUM_PDDNOS_DSM_IV',
                            'NUM_PDDNOS_MALE_DSM_IV',
                            'NUM_PDDNOS_FEMALE_DSM_IV',
                            'NUM_ASP_PDDNOS_DSM_IV',
                            'NUM_ASP_PDDNOS_MALE_DSM_IV',
                            'NUM_ASP_PDDNOS_FEMALE_DSM_IV',
                            'NUM_TD',
                            'NUM_TD_MALE',
                            'NUM_TD_FEMALE',
                            'NUM_TD_AGE_lte12',
                            'NUM_TD_AGE_12_18',
                            'NUM_TD_AGE_18_24',
                            'NUM_TD_AGE_24_34',
                            'NUM_TD_AGE_34_50',
                            'NUM_TD_AGE_gt50'])
    data_frame = data_frame.append(_df, ignore_index=True)[_df.columns.tolist()] 
    
    
#     df = pd.DataFrame(raw_data, columns = [])

# Sanity Check
# NUM_AUT_DSM_V.shape[0] + NUM_TD.shape[0]    
# df.loc[(df['DSM_IV_TR'] == 0)].shape[0] + NUM_AUT_DSM_V.shape[0] # Not exhaustive


Site matched with  /home1/varunk/data/ABIDE1/RawDataBIDs/Caltech/task-rest_bold.json
Site matched with  /home1/varunk/data/ABIDE1/RawDataBIDs/CMU_a/task-rest_bold.json
Site matched with  /home1/varunk/data/ABIDE1/RawDataBIDs/CMU_b/task-rest_bold.json
Site matched with  /home1/varunk/data/ABIDE1/RawDataBIDs/KKI/task-rest_bold.json
Site matched with  /home1/varunk/data/ABIDE1/RawDataBIDs/Leuven_1/task-rest_bold.json
Site matched with  /home1/varunk/data/ABIDE1/RawDataBIDs/Leuven_2/task-rest_bold.json
Site matched with  /home1/varunk/data/ABIDE1/RawDataBIDs/Max_Mun_c/task-rest_bold.json
Site matched with  /home1/varunk/data/ABIDE1/RawDataBIDs/Max_Mun_d/task-rest_bold.json
Site matched with  /home1/varunk/data/ABIDE1/RawDataBIDs/Max_Mun_b/task-rest_bold.json
Site matched with  /home1/varunk/data/ABIDE1/RawDataBIDs/Max_Mun_a/task-rest_bold.json
-------------------------------------------------------------
KeyboardInterrupt           Traceback (most recent call last)
<ipython-input-14-64462cd97937> in <module>()
      4 
      5 for SITE in SITES:
----> 6     NUM_AUT_DSM_V = df.loc[(df['DX_GROUP'] == 1) & (df['SITE_ID'] == SITE)].shape[0]
      7     NUM_AUT_MALE_DSM_V = df.loc[(df['DX_GROUP'] == 1) & (df['SEX'] == 1) & (df['SITE_ID'] == SITE)].shape[0]
      8     NUM_AUT_FEMALE_DSM_V = df.loc[(df['DX_GROUP'] == 1) & (df['SEX'] == 2) & (df['SITE_ID'] == SITE)].shape[0]

~/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py in __getitem__(self, key)
   1326         else:
   1327             key = com._apply_if_callable(key, self.obj)
-> 1328             return self._getitem_axis(key, axis=0)
   1329 
   1330     def _is_scalar_access(self, key):

~/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py in _getitem_axis(self, key, axis)
   1506             return self._get_slice_axis(key, axis=axis)
   1507         elif is_bool_indexer(key):
-> 1508             return self._getbool_axis(key, axis=axis)
   1509         elif is_list_like_indexer(key):
   1510 

~/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py in _getbool_axis(self, key, axis)
   1342         inds, = key.nonzero()
   1343         try:
-> 1344             return self.obj.take(inds, axis=axis, convert=False)
   1345         except Exception as detail:
   1346             raise self._exception(detail)

~/anaconda3/lib/python3.6/site-packages/pandas/core/generic.py in take(self, indices, axis, convert, is_copy, **kwargs)
   1926         new_data = self._data.take(indices,
   1927                                    axis=self._get_block_manager_axis(axis),
-> 1928                                    convert=True, verify=True)
   1929         result = self._constructor(new_data).__finalize__(self)
   1930 

~/anaconda3/lib/python3.6/site-packages/pandas/core/internals.py in take(self, indexer, axis, verify, convert)
   4009         new_labels = self.axes[axis].take(indexer)
   4010         return self.reindex_indexer(new_axis=new_labels, indexer=indexer,
-> 4011                                     axis=axis, allow_dups=True)
   4012 
   4013     def merge(self, other, lsuffix='', rsuffix=''):

~/anaconda3/lib/python3.6/site-packages/pandas/core/internals.py in reindex_indexer(self, new_axis, indexer, axis, fill_value, allow_dups, copy)
   3895             new_blocks = [blk.take_nd(indexer, axis=axis, fill_tuple=(
   3896                 fill_value if fill_value is not None else blk.fill_value,))
-> 3897                 for blk in self.blocks]
   3898 
   3899         new_axes = list(self.axes)

~/anaconda3/lib/python3.6/site-packages/pandas/core/internals.py in <listcomp>(.0)
   3895             new_blocks = [blk.take_nd(indexer, axis=axis, fill_tuple=(
   3896                 fill_value if fill_value is not None else blk.fill_value,))
-> 3897                 for blk in self.blocks]
   3898 
   3899         new_axes = list(self.axes)

~/anaconda3/lib/python3.6/site-packages/pandas/core/internals.py in take_nd(self, indexer, axis, new_mgr_locs, fill_tuple)
   1044             fill_value = fill_tuple[0]
   1045             new_values = algos.take_nd(values, indexer, axis=axis,
-> 1046                                        allow_fill=True, fill_value=fill_value)
   1047 
   1048         if new_mgr_locs is None:

~/anaconda3/lib/python3.6/site-packages/pandas/core/algorithms.py in take_nd(arr, indexer, axis, out, fill_value, mask_info, allow_fill)
   1469     func = _get_take_nd_function(arr.ndim, arr.dtype, out.dtype, axis=axis,
   1470                                  mask_info=mask_info)
-> 1471     func(arr, indexer, out, fill_value)
   1472 
   1473     if flip_order:

KeyboardInterrupt: 

In [ ]:
# 'MAX_MUN'.lower() in '/home1/varunk/data/ABIDE1/RawDataBIDs/MaxMun_a/task-rest_bold.json'.lower()

In [ ]:
_df

In [ ]:
data_frame

In [ ]:
# Save the csv file
data_frame.to_csv('demographics.csv')

Group Stats

  • The follwoing section checks the stats of participants lying in the ollwoing bins:
    • Autistic(DSM-IV), Males, Age <=18, Eyes Closed
    • Autistic(DSM-IV), Males, Age <=18, Eyes Open

In [15]:
# df = pd.read_csv('/home1/varunk/data/ABIDE1/RawDataBIDs/composite_phenotypic_file.csv') # , index_col='SUB_ID'

# df = df.sort_values(['SUB_ID'])

# df_td_lt18_m_eyesopen = df.loc[(df['SEX'] == 1) & (df['AGE_AT_SCAN'] <=18) & (df['DSM_IV_TR'] == 0) & (df['EYE_STATUS_AT_SCAN'] == 1)]
# df_td_lt18_m_eyesopen;

# df_td_lt18_m_eyesclosed = df.loc[(df['SEX'] == 1) & (df['AGE_AT_SCAN'] <=18) & (df['DSM_IV_TR'] == 0) & (df['EYE_STATUS_AT_SCAN'] == 2)]
# df_td_lt18_m_eyesclosed;

In [16]:
# df_td_lt18_m_eyesopen;
# df_td_lt18_m_eyesclosed;

In [17]:
# Reading TR values
tr_path = '/home1/varunk/results_again_again/ABIDE1_Preprocess_Datasink/tr_paths/tr_list.npy'
tr = np.load(tr_path)

In [18]:
np.unique(tr)


Out[18]:
array([ 1.5  ,  1.667,  2.   ,  2.2  ,  2.5  ,  3.   ])

In [19]:
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt

bins = np.arange(0,3.5,0.1)
res = plt.hist(tr, rwidth=0.3, align='left', bins= bins)
# plt.xticks([0,0.5,1,1.5,2,2.5,3])

plt.xlabel('TR')
plt.ylabel('Number of participants')
plt.title('Frequency distribution of TRs')
# plt.text(60, .025, r'$\mu=100,\ \sigma=15$')


Out[19]:
<matplotlib.text.Text at 0x7ff02272f3c8>

In [20]:
np.unique(tr)


Out[20]:
array([ 1.5  ,  1.667,  2.   ,  2.2  ,  2.5  ,  3.   ])

In [21]:
df = pd.read_csv('/home1/varunk/data/ABIDE1/RawDataBIDs/composite_phenotypic_file.csv') # , index_col='SUB_ID'

df = df.sort_values(['SUB_ID'])

df_td_lt18_m_eyesopen = df.loc[(df['SEX'] == 1) & (df['AGE_AT_SCAN'] <=18) & (df['DSM_IV_TR'] == 0) & (df['EYE_STATUS_AT_SCAN'] == 1)]
df_td_lt18_m_eyesopen;

df_td_lt18_m_eyesclosed = df.loc[(df['SEX'] == 1) & (df['AGE_AT_SCAN'] <=18) & (df['DSM_IV_TR'] == 0) & (df['EYE_STATUS_AT_SCAN'] == 2)]
df_td_lt18_m_eyesclosed;

df_aut_lt18_m_eyesopen = df.loc[(df['SEX'] == 1) & (df['AGE_AT_SCAN'] <=18) & (df['DSM_IV_TR'] == 1) & (df['EYE_STATUS_AT_SCAN'] == 1)]
df_aut_lt18_m_eyesopen;

df_aut_lt18_m_eyesclosed = df.loc[(df['SEX'] == 1) & (df['AGE_AT_SCAN'] <=18) & (df['DSM_IV_TR'] == 1) & (df['EYE_STATUS_AT_SCAN'] == 2)]
df_aut_lt18_m_eyesclosed;

In [22]:
df_td_lt18_m_eyesopen_sub_id = df_td_lt18_m_eyesopen.as_matrix(['SUB_ID']).squeeze()
df_td_lt18_m_eyesclosed_sub_id = df_td_lt18_m_eyesclosed.as_matrix(['SUB_ID']).squeeze()

df_aut_lt18_m_eyesopen_sub_id = df_aut_lt18_m_eyesopen.as_matrix(['SUB_ID']).squeeze()
df_aut_lt18_m_eyesclosed_sub_id = df_aut_lt18_m_eyesclosed.as_matrix(['SUB_ID']).squeeze()

In [23]:
import re
sub_id = []
atlas_paths = np.load('/home1/varunk/results_again_again/ABIDE1_Preprocess_Datasink/atlas_paths/atlas_file_list.npy')

for path in atlas_paths:
    sub_id_extracted = re.search('.+_subject_id_(\d+)', path).group(1)
    sub_id.append(sub_id_extracted)

In [24]:
sub_id = list(map(int, sub_id))

In [25]:
# df_sub_id = df.as_matrix(['SUB_ID']).squeeze()

In [26]:
# Number of TD subjects with Age 12 to 18 

df_td_lt18_m_eyesopen = df.loc[(df['SEX'] == 1) & (df['AGE_AT_SCAN'] >=12) &(df['AGE_AT_SCAN'] <=18) & (df['DSM_IV_TR'] == 0) & (df['EYE_STATUS_AT_SCAN'] == 1)]
df_td_lt18_m_eyesopen.shape


Out[26]:
(150, 74)

In [27]:
# Number of Autistic subjects with Age 12 to 18 
df_aut_lt18_m_eyesopen = df.loc[(df['SEX'] == 1) & (df['AGE_AT_SCAN'] >=12) &(df['AGE_AT_SCAN'] <=18) & (df['DSM_IV_TR'] == 1) & (df['EYE_STATUS_AT_SCAN'] == 1)]
df_aut_lt18_m_eyesopen.shape


Out[27]:
(105, 74)

In [28]:
# tr[np.where(df_sub_id == df_td_lt18_m_eyesopen_sub_id)]

In [29]:
# np.isin(sub_id,df_td_lt18_m_eyesopen_sub_id)

In [30]:
tr1 = tr[np.isin(sub_id, df_aut_lt18_m_eyesopen_sub_id)]

bins = np.arange(0,3.5,0.1)
res = plt.hist(tr1, rwidth=0.3, align='left', bins= bins)
# plt.xticks([0,0.5,1,1.5,2,2.5,3])

plt.xlabel('TR')
plt.ylabel('Number of participants')
plt.title('Frequency distribution of TRs')


Out[30]:
<matplotlib.text.Text at 0x7ff0225c63c8>

In [31]:
tr2 = tr[np.isin(sub_id, df_td_lt18_m_eyesopen_sub_id)]
bins = np.arange(0,3.5,0.1)
res = plt.hist(tr2, rwidth=0.3, align='left', bins= bins)
# plt.xticks([0,0.5,1,1.5,2,2.5,3])

plt.xlabel('TR')
plt.ylabel('Number of participants')
plt.title('Frequency distribution of TRs')


Out[31]:
<matplotlib.text.Text at 0x7ff022477ef0>

In [ ]:


In [ ]:


In [32]:
tr3 = tr[np.isin(sub_id, df_aut_lt18_m_eyesclosed_sub_id)]

bins = np.arange(0,3.5,0.1)
res = plt.hist(tr3, rwidth=0.3, align='left', bins= bins)
# plt.xticks([0,0.5,1,1.5,2,2.5,3])

plt.xlabel('TR')
plt.ylabel('Number of participants')
plt.title('Frequency distribution of TRs')


Out[32]:
<matplotlib.text.Text at 0x7ff0223376a0>

In [33]:
tr4 = tr[np.isin(sub_id, df_td_lt18_m_eyesclosed_sub_id)]

bins = np.arange(0,3.5,0.1)
res = plt.hist(tr4, rwidth=0.3, align='left', bins= bins)
# plt.xticks([0,0.5,1,1.5,2,2.5,3])

plt.xlabel('TR')
plt.ylabel('Number of participants')
plt.title('Frequency distribution of TRs')


Out[33]:
<matplotlib.text.Text at 0x7ff0221f4be0>

AGE


In [34]:
df_td_lt18_m_eyesopen_age = df_td_lt18_m_eyesopen.as_matrix(['AGE_AT_SCAN']).squeeze() 
df_td_lt18_m_eyesclosed_age = df_td_lt18_m_eyesclosed.as_matrix(['AGE_AT_SCAN']).squeeze()

df_aut_lt18_m_eyesopen_age = df_aut_lt18_m_eyesopen.as_matrix(['AGE_AT_SCAN']).squeeze()
df_aut_lt18_m_eyesclosed_age = df_aut_lt18_m_eyesclosed.as_matrix(['AGE_AT_SCAN']).squeeze()

bins = np.arange(0,20,1)
# res = plt.hist(df_td_lt18_m_eyesopen_age, rwidth=0.3, align='left')
# res2 = plt.hist(df_aut_lt18_m_eyesopen_age, rwidth=0.3, align='left', bins= bins)
# # plt.xticks([0,0.5,1,1.5,2,2.5,3])

# plt.xlabel('TR')
# plt.ylabel('Number of participants')
# plt.title('Frequency distribution of TRs')


# import random
# import numpy
from matplotlib import pyplot

# x = [random.gauss(3,1) for _ in range(400)]
# y = [random.gauss(4,2) for _ in range(400)]

# bins = numpy.linspace(-10, 10, 100)

pyplot.hist(df_td_lt18_m_eyesopen_age, alpha=0.5,bins=bins, label='TD',rwidth=0.1, align='left')
pyplot.hist(df_aut_lt18_m_eyesopen_age,alpha=0.5, bins=bins, label='AUT',rwidth=0.1,align='right')
pyplot.legend(loc='upper right')
pyplot.xlabel('AGE')
pyplot.show()



In [35]:
pyplot.hist(df_td_lt18_m_eyesclosed_age, alpha=0.5,bins=bins, label='TD',rwidth=0.1, align='left')
pyplot.hist(df_aut_lt18_m_eyesclosed_age,alpha=0.5, bins=bins, label='AUT',rwidth=0.1,align='right')
pyplot.legend(loc='upper right')
pyplot.xlabel('AGE')
pyplot.show()



In [36]:
pyplot.yticks(np.arange(0,20,1))
res = pyplot.boxplot([df_td_lt18_m_eyesopen_age,df_aut_lt18_m_eyesopen_age])



In [37]:
pyplot.yticks(np.arange(0,20,1))
res = pyplot.boxplot([df_td_lt18_m_eyesclosed_age, df_aut_lt18_m_eyesclosed_age])


Eyes Open vs Closed


In [38]:
eyes_open_age = np.concatenate((df_td_lt18_m_eyesopen_age,df_aut_lt18_m_eyesopen_age))
eyes_closed_age = np.concatenate((df_td_lt18_m_eyesclosed_age,df_aut_lt18_m_eyesclosed_age))
pyplot.yticks(np.arange(0,20,1))
res = pyplot.boxplot([eyes_open_age, eyes_closed_age])


Stats: Differences in Ages of closed vs open


In [50]:
from scipy import stats
print(stats.ttest_ind(eyes_open_age,eyes_closed_age, equal_var = False))
print('Mean: ',np.mean(eyes_open_age), np.mean(eyes_closed_age))
print('Std: ',np.std(eyes_open_age), np.std(eyes_closed_age))


Ttest_indResult(statistic=3.0741555100729001, pvalue=0.0025712061303415756)
Mean:  14.8247094118 13.9759789474
Std:  1.74147449758 2.45817876091

Result:

Mean Age is significantly different in two groups. That may be the reason for discrepancies in regions.

Stats: Differences in TR of closed vs open


In [49]:
# stats.ttest_ind(eyes_open_age,eyes_closed_age, equal_var = False)

eyes_open_tr = np.concatenate((tr1,tr2))
eyes_closed_tr = np.concatenate((tr3,tr4))
print(stats.ttest_ind(eyes_open_tr,eyes_closed_tr, equal_var = False))
print('Mean: ',np.mean(eyes_open_tr), np.mean(eyes_closed_tr))
print('Std: ',np.std(eyes_open_tr), np.std(eyes_closed_tr))


Ttest_indResult(statistic=13.635287744840932, pvalue=2.5595564163248784e-32)
Mean:  2.24466502463 1.77904210526
Std:  0.454637360069 0.248275649686

Result:

TRs of two groups are also significantly different

Age differences in AUT vs TD

Eyes Open


In [46]:
print(stats.ttest_ind(df_aut_lt18_m_eyesopen_age, df_td_lt18_m_eyesopen_age, equal_var = False))
print('Mean: ',np.mean(df_aut_lt18_m_eyesopen_age), np.mean(df_td_lt18_m_eyesopen_age))
print('Std: ',np.std(df_aut_lt18_m_eyesopen_age), np.std(df_td_lt18_m_eyesopen_age))


Ttest_indResult(statistic=-0.56392638197286737, pvalue=0.57335267358997277)
Mean:  14.7515761905 14.8759026667
Std:  1.69009891739 1.77476142096

Result:

Age difference not significant for eyes open

Eyes Closed


In [47]:
print(stats.ttest_ind(df_aut_lt18_m_eyesclosed_age, df_td_lt18_m_eyesclosed_age, equal_var = False))
print('Mean: ',np.mean(df_aut_lt18_m_eyesclosed_age),np.mean(df_td_lt18_m_eyesclosed_age))
print('Std: ',np.std(df_aut_lt18_m_eyesclosed_age),np.std(df_td_lt18_m_eyesclosed_age))


Ttest_indResult(statistic=-0.2086765109659752, pvalue=0.83524394640461863)
Mean:  13.91245 14.0221818182
Std:  2.61631077999 2.33537592139

Result:

Age difference not significant for eyes closed

Motion Parameters

https://www.jiscmail.ac.uk/cgi-bin/webadmin?A2=fsl;cda6e2ea.1112

Format: rot_x, rot_y, rot_z, trans_x, trans_y, trans_z


In [48]:
motion_params_npy = '/home1/varunk/results_again_again/ABIDE1_Preprocess_Datasink/motion_params_paths/motion_params_file_list.npy'
mot_params_paths = np.load(motion_params_npy)

In [ ]:
in_file = mot_params_paths[0]

trans_x = [] 
trans_y = []
trans_z = []
rot_x = []
rot_y = []
rot_z = []

# for in_file in mot_params_paths:
with open(in_file) as f: 
    for line in f:
        line = line.split(' ')
        print(line)
        trans_x.append(float(line[6]))
        trans_y.append(float(line[8]))
        trans_z.append(float(line[10]))
        rot_x.append(float(line[0]))
        rot_y.append(float(line[2]))
        rot_z.append(float(line[4]))

In [ ]:
float('0.0142863')

In [ ]:
max(rot_y)

Matching based on Volumes

  • Volume bins
    • 100 - 150
    • 150 - 200
    • 200 - 250
    • 250 - 300

In [172]:
# Load demographics file
df_demographics = pd.read_csv('/home1/varunk/Autism-Connectome-Analysis-brain_connectivity/notebooks/demographics.csv')
# df_demographics
df_demographics_volumes = df_demographics.as_matrix(['SITE_NAME','VOLUMES']).squeeze()
df_demographics_volumes


Out[172]:
array([['CALTECH', 150.0],
       ['CMU', 240.0],
       ['KKI', 156.0],
       ['LEUVEN_1', 250.0],
       ['LEUVEN_2', 250.0],
       ['MAX_MUN', 120.0],
       ['NYU', 180.0],
       ['OHSU', 82.0],
       ['OLIN', 210.0],
       ['PITT', 200.0],
       ['SBL', 200.0],
       ['SDSU', 180.0],
       ['STANFORD', 180.0],
       ['TRINITY', 150.0],
       ['UCLA_1', 120.0],
       ['UCLA_2', 120.0],
       ['UM_1', 300.0],
       ['UM_2', 300.0],
       ['USM', 240.0],
       ['YALE', 200.0]], dtype=object)

In [175]:
df_phenotype = pd.read_csv('/home1/varunk/data/ABIDE1/RawDataBIDs/composite_phenotypic_file.csv') # , index_col='SUB_ID'
df_phenotype = df_phenotype.sort_values(['SUB_ID'])

volumes_bins = np.array([[0,150],[151,200],[201,250],[251,300]])

bins_volumes_AUT = []
bins_volumes_TD = []

for counter, _bin in enumerate(volumes_bins):
    df_demographics_volumes_selected_bin = df_demographics_volumes[np.where(np.logical_and((df_demographics_volumes[:,1] >= _bin[0]),(df_demographics_volumes[:,1] <= _bin[1])))]


    selected_AUT = pd.DataFrame()
    selected_TD = pd.DataFrame()
    for site in df_demographics_volumes_selected_bin:
        print(site[0])
        selected_AUT = pd.concat([selected_AUT,df_phenotype.loc[(df_phenotype['SEX'] == 1) & (df_phenotype['DSM_IV_TR'] == 1) & (df_phenotype['SITE_ID'] == site[0])]])  
        selected_TD = pd.concat([selected_AUT,df_phenotype.loc[(df_phenotype['SEX'] == 1) & (df_phenotype['DSM_IV_TR'] == 0) & (df_phenotype['SITE_ID'] == site[0])]])  

    bins_volumes_AUT.append(selected_AUT)
    bins_volumes_TD.append(selected_TD)


CALTECH
MAX_MUN
OHSU
TRINITY
UCLA_1
UCLA_2
KKI
NYU
PITT
SBL
SDSU
STANFORD
YALE
CMU
LEUVEN_1
LEUVEN_2
OLIN
USM
UM_1
UM_2

In [176]:
f = bins_volumes_AUT[0]
# f.loc[[2,3,4,5]]
f


Out[176]:
SITE_ID SUB_ID DX_GROUP DSM_IV_TR AGE_AT_SCAN SEX HANDEDNESS_CATEGORY HANDEDNESS_SCORES FIQ VIQ ... WISC_IV_BLK_DSN_SCALED WISC_IV_PIC_CON_SCALED WISC_IV_MATRIX_SCALED WISC_IV_DIGIT_SPAN_SCALED WISC_IV_LET_NUM_SCALED WISC_IV_CODING_SCALED WISC_IV_SYM_SCALED EYE_STATUS_AT_SCAN AGE_AT_MPRAGE BMI
2 CALTECH 51458 1 1 39.20 1 R NaN 93.0 80.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
3 CALTECH 51459 1 1 22.80 1 R NaN 106.0 94.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
8 CALTECH 51464 1 1 20.90 1 Ambi NaN 101.0 118.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
9 CALTECH 51465 1 1 20.20 1 R NaN 96.0 99.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
10 CALTECH 51466 1 1 27.60 1 Ambi NaN 106.0 111.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
11 CALTECH 51467 1 1 23.40 1 R NaN 93.0 89.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
12 CALTECH 51468 1 1 20.10 1 R NaN 100.0 89.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
16 CALTECH 51472 1 1 17.50 1 Ambi NaN 125.0 123.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
17 CALTECH 51473 1 1 21.20 1 R NaN -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
18 CALTECH 51474 1 1 20.90 1 R NaN 100.0 90.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
217 MAX_MUN 51350 1 1 11.00 1 R NaN 79.0 NaN ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
218 MAX_MUN 51351 1 1 11.00 1 R NaN 79.0 NaN ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
659 TRINITY 50239 1 1 17.03 1 R NaN 97.0 92.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
661 TRINITY 50241 1 1 17.17 1 R NaN 89.0 95.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
662 TRINITY 50242 1 1 12.75 1 R NaN 117.0 116.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
663 TRINITY 50243 1 1 13.75 1 R NaN 90.0 98.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
665 TRINITY 50245 1 1 21.58 1 R NaN 72.0 85.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
666 TRINITY 50246 1 1 19.50 1 R NaN 105.0 108.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
668 TRINITY 50248 1 1 13.58 1 R NaN 117.0 112.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
669 TRINITY 50249 1 1 13.83 1 R NaN 98.0 98.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
670 TRINITY 50250 1 1 13.91 1 R NaN 99.0 99.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
671 TRINITY 50251 1 1 17.25 1 R NaN 122.0 119.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
701 UCLA_1 51201 1 1 13.52 1 R NaN 104.0 98.0 ... NaN NaN NaN NaN NaN NaN NaN 1 13.52 NaN
702 UCLA_1 51202 1 1 11.56 1 R NaN 98.0 110.0 ... NaN NaN NaN NaN NaN NaN NaN 1 11.56 NaN
703 UCLA_1 51203 1 1 13.37 1 R NaN 103.0 91.0 ... NaN NaN NaN NaN NaN NaN NaN 1 13.37 NaN
704 UCLA_1 51204 1 1 14.57 1 R NaN 98.0 110.0 ... NaN NaN NaN NaN NaN NaN NaN 1 14.57 NaN
705 UCLA_1 51205 1 1 17.94 1 R NaN 102.0 105.0 ... NaN NaN NaN NaN NaN NaN NaN 1 17.94 NaN
706 UCLA_1 51206 1 1 15.78 1 R NaN 102.0 98.0 ... NaN NaN NaN NaN NaN NaN NaN 1 15.78 NaN
708 UCLA_1 51208 1 1 16.98 1 L NaN 113.0 116.0 ... NaN NaN NaN NaN NaN NaN NaN 1 15.27 NaN
709 UCLA_1 51209 1 1 9.99 1 R NaN 128.0 119.0 ... NaN NaN NaN NaN NaN NaN NaN 1 9.99 NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
732 UCLA_1 51232 1 1 15.79 1 R NaN 89.0 94.0 ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
733 UCLA_1 51233 1 1 12.75 1 R NaN 79.0 90.0 ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
734 UCLA_1 51234 1 1 10.91 1 R NaN 87.0 93.0 ... NaN NaN NaN NaN NaN NaN NaN 1 10.91 NaN
735 UCLA_1 51235 1 1 10.67 1 R NaN 132.0 130.0 ... NaN NaN NaN NaN NaN NaN NaN 1 10.67 NaN
736 UCLA_1 51236 1 1 12.42 1 R NaN 89.0 85.0 ... NaN NaN NaN NaN NaN NaN NaN 1 12.42 NaN
737 UCLA_1 51237 1 1 17.40 1 R NaN 100.0 112.0 ... NaN NaN NaN NaN NaN NaN NaN 1 17.40 NaN
738 UCLA_1 51238 1 1 10.85 1 R NaN 73.0 67.0 ... NaN NaN NaN NaN NaN NaN NaN 1 10.64 NaN
739 UCLA_1 51239 1 1 13.67 1 R NaN 86.0 98.0 ... NaN NaN NaN NaN NaN NaN NaN 1 13.67 NaN
740 UCLA_1 51240 1 1 14.96 1 R NaN 121.0 106.0 ... NaN NaN NaN NaN NaN NaN NaN 1 15.40 NaN
741 UCLA_1 51241 1 1 10.90 1 R NaN 95.0 87.0 ... NaN NaN NaN NaN NaN NaN NaN 1 11.03 NaN
743 UCLA_1 51243 1 1 11.69 1 R NaN 101.0 96.0 ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
744 UCLA_1 51244 1 1 13.09 1 R NaN -9999.0 83.0 ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
745 UCLA_1 51245 1 1 14.98 1 R NaN 64.0 59.0 ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
746 UCLA_1 51246 1 1 13.10 1 R NaN 84.0 85.0 ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
747 UCLA_1 51247 1 1 11.97 1 R NaN 118.0 108.0 ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
748 UCLA_1 51248 1 1 13.50 1 R NaN 110.0 99.0 ... NaN NaN NaN NaN NaN NaN NaN 1 13.50 NaN
749 UCLA_1 51249 1 1 8.49 1 R NaN 107.0 112.0 ... NaN NaN NaN NaN NaN NaN NaN 1 8.49 NaN
783 UCLA_2 51291 1 1 16.47 1 R NaN 86.0 83.0 ... NaN NaN NaN NaN NaN NaN NaN 1 16.63 NaN
784 UCLA_2 51292 1 1 12.24 1 R NaN 75.0 83.0 ... NaN NaN NaN NaN NaN NaN NaN 1 12.24 NaN
785 UCLA_2 51293 1 1 13.08 1 R NaN 92.0 102.0 ... NaN NaN NaN NaN NaN NaN NaN 1 13.08 NaN
786 UCLA_2 51294 1 1 11.70 1 R NaN 87.0 89.0 ... NaN NaN NaN NaN NaN NaN NaN 1 12.06 NaN
787 UCLA_2 51295 1 1 10.04 1 L NaN 108.0 95.0 ... NaN NaN NaN NaN NaN NaN NaN 1 10.33 NaN
788 UCLA_2 51296 1 1 11.16 1 R NaN 77.0 71.0 ... NaN NaN NaN NaN NaN NaN NaN 1 11.16 NaN
789 UCLA_2 51297 1 1 14.27 1 L NaN 88.0 98.0 ... NaN NaN NaN NaN NaN NaN NaN 1 14.27 NaN
790 UCLA_2 51298 1 1 10.57 1 R NaN 118.0 104.0 ... NaN NaN NaN NaN NaN NaN NaN 1 10.69 NaN
791 UCLA_2 51299 1 1 14.77 1 R NaN 104.0 106.0 ... NaN NaN NaN NaN NaN NaN NaN 1 14.77 NaN
792 UCLA_2 51300 1 1 14.08 1 L NaN 92.0 104.0 ... NaN NaN NaN NaN NaN NaN NaN 1 14.08 NaN
793 UCLA_2 51301 1 1 13.28 1 R NaN 91.0 108.0 ... NaN NaN NaN NaN NaN NaN NaN 1 13.28 NaN
794 UCLA_2 51302 1 1 10.85 1 R NaN 87.0 75.0 ... NaN NaN NaN NaN NaN NaN NaN 1 10.85 NaN
809 UCLA_2 51317 1 1 12.82 1 R NaN 102.0 99.0 ... NaN NaN NaN NaN NaN NaN NaN 1 12.82 NaN

77 rows × 74 columns


In [177]:
f.iloc[[2,3,4,5,7]]


Out[177]:
SITE_ID SUB_ID DX_GROUP DSM_IV_TR AGE_AT_SCAN SEX HANDEDNESS_CATEGORY HANDEDNESS_SCORES FIQ VIQ ... WISC_IV_BLK_DSN_SCALED WISC_IV_PIC_CON_SCALED WISC_IV_MATRIX_SCALED WISC_IV_DIGIT_SPAN_SCALED WISC_IV_LET_NUM_SCALED WISC_IV_CODING_SCALED WISC_IV_SYM_SCALED EYE_STATUS_AT_SCAN AGE_AT_MPRAGE BMI
8 CALTECH 51464 1 1 20.9 1 Ambi NaN 101.0 118.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
9 CALTECH 51465 1 1 20.2 1 R NaN 96.0 99.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
10 CALTECH 51466 1 1 27.6 1 Ambi NaN 106.0 111.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
11 CALTECH 51467 1 1 23.4 1 R NaN 93.0 89.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
16 CALTECH 51472 1 1 17.5 1 Ambi NaN 125.0 123.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN

5 rows × 74 columns


In [178]:
# num_bins = 4
print('Range    ','TD ','AUT ','Ratio TD/AUT')
ratio = np.zeros((len(bins_volumes_AUT)))
for i in range(len(bins_volumes_AUT)):
    ratio[i] = bins_volumes_TD[i].shape[0]/bins_volumes_AUT[i].shape[0]
    print(volumes_bins[i],bins_volumes_TD[i].shape[0],bins_volumes_AUT[i].shape[0], ratio[i])


Range     TD  AUT  Ratio TD/AUT
[  0 150] 89 77 1.15584415584
[151 200] 110 90 1.22222222222
[201 250] 137 94 1.45744680851
[251 300] 69 48 1.4375

In [179]:
min_ratio = np.min(ratio)
min_index = np.argmin(ratio)

In [180]:
new_TD = np.zeros((len(bins_volumes_AUT)))
print('Range    ','TD ','AUT ')
for i in range(len(bins_volumes_AUT)):
    new_TD[i] = np.ceil(bins_volumes_AUT[i].shape[0] * min_ratio)
    print(volumes_bins[i],new_TD[i],bins_volumes_AUT[i].shape[0])


Range     TD  AUT 
[  0 150] 89.0 77
[151 200] 105.0 90
[201 250] 109.0 94
[251 300] 56.0 48

In [182]:
# Now loop over all the bins created and select the specific number of subjects randomly from each TD bin

TD_idx_list = []
selected_df_TD = pd.DataFrame()

for i in range(len(bins_volumes_TD)):
    idx = np.arange(len(bins_volumes_TD[i]))
    np.random.shuffle(idx)
    idx = idx[0:int(new_TD[i])]
    TD_idx_list.append(idx)
    selected_df_TD = pd.concat([selected_df_TD, bins_volumes_TD[i].iloc[idx]])
    
selected_df_TD= selected_df_TD.sort_values(['SUB_ID'])
    
    
    
#     print(idx)

In [184]:
# Sanity check to see of no subjects are repeated
# subid = selected_df_TD.sort_values(['SUB_ID']).as_matrix(['SUB_ID']).squeeze()
# len(np.unique(subid)) == len(subid)


Out[184]:
True

In [185]:
# Sanity check to see of the number of subjects are same as expected
# len(subid) == (89 + 105 + 109 + 56)


Out[185]:
True

In [189]:
#  Sanity check so that no subject index is repeated
# len(np.unique(TD_idx_list[3]))  == len(TD_idx_list[3] )

# sanity check to check the new number of TD subjects in each Volumes bin
# len(TD_idx_list[3]) == 56

In [191]:
selected_df_TD


Out[191]:
SITE_ID SUB_ID DX_GROUP DSM_IV_TR AGE_AT_SCAN SEX HANDEDNESS_CATEGORY HANDEDNESS_SCORES FIQ VIQ ... WISC_IV_BLK_DSN_SCALED WISC_IV_PIC_CON_SCALED WISC_IV_MATRIX_SCALED WISC_IV_DIGIT_SPAN_SCALED WISC_IV_LET_NUM_SCALED WISC_IV_CODING_SCALED WISC_IV_SYM_SCALED EYE_STATUS_AT_SCAN AGE_AT_MPRAGE BMI
489 PITT 50002 1 1 16.77 1 Ambi NaN 103.0 116.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
490 PITT 50003 1 1 24.45 1 R NaN 124.0 128.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
491 PITT 50004 1 1 19.09 1 R NaN 113.0 108.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
493 PITT 50006 1 1 13.37 1 L NaN 109.0 99.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
494 PITT 50007 1 1 17.78 1 R NaN 110.0 106.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
495 PITT 50008 1 1 32.45 1 R NaN 123.0 123.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
496 PITT 50009 1 1 33.86 1 R NaN 126.0 118.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
497 PITT 50010 1 1 35.20 1 L NaN 81.0 81.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
498 PITT 50011 1 1 16.93 1 L NaN 111.0 101.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
499 PITT 50012 1 1 21.48 1 R NaN 128.0 119.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
500 PITT 50013 1 1 9.33 1 R NaN 86.0 89.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
501 PITT 50014 1 1 14.20 1 R NaN 96.0 97.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
502 PITT 50015 1 1 14.20 1 R NaN 99.0 98.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
503 PITT 50016 1 1 21.82 1 R NaN 123.0 120.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
504 PITT 50017 1 1 22.70 1 R NaN 87.0 91.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
505 PITT 50019 1 1 27.81 1 R NaN 100.0 89.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
506 PITT 50020 1 1 20.83 1 R NaN 100.0 120.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
509 PITT 50024 1 1 22.64 1 R NaN 127.0 121.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
510 PITT 50025 1 1 31.72 1 R NaN 131.0 132.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
511 PITT 50026 1 1 16.28 1 R NaN 87.0 90.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
513 PITT 50028 1 1 12.74 1 R NaN 126.0 112.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
515 PITT 50053 1 1 12.03 1 R NaN 122.0 119.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
516 PITT 50055 1 1 16.99 1 R NaN 111.0 108.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
517 PITT 50056 1 1 13.59 1 R NaN 113.0 101.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
577 SDSU 50183 1 1 14.14 1 R NaN 139.0 128.0 ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
586 SDSU 50192 1 1 12.99 1 R NaN 85.0 93.0 ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
659 TRINITY 50239 1 1 17.03 1 R NaN 97.0 92.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
661 TRINITY 50241 1 1 17.17 1 R NaN 89.0 95.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
662 TRINITY 50242 1 1 12.75 1 R NaN 117.0 116.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
663 TRINITY 50243 1 1 13.75 1 R NaN 90.0 98.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
792 UCLA_2 51300 1 1 14.08 1 L NaN 92.0 104.0 ... NaN NaN NaN NaN NaN NaN NaN 1 14.08 NaN
793 UCLA_2 51301 1 1 13.28 1 R NaN 91.0 108.0 ... NaN NaN NaN NaN NaN NaN NaN 1 13.28 NaN
794 UCLA_2 51302 1 1 10.85 1 R NaN 87.0 75.0 ... NaN NaN NaN NaN NaN NaN NaN 1 10.85 NaN
796 UCLA_2 51304 2 0 10.53 1 R NaN 120.0 120.0 ... NaN NaN NaN NaN NaN NaN NaN 1 10.53 NaN
798 UCLA_2 51306 2 0 11.66 1 R NaN 119.0 115.0 ... NaN NaN NaN NaN NaN NaN NaN 1 11.66 NaN
799 UCLA_2 51307 2 0 12.15 1 R NaN 128.0 127.0 ... NaN NaN NaN NaN NaN NaN NaN 1 12.15 NaN
800 UCLA_2 51308 2 0 9.79 1 R NaN 124.0 125.0 ... NaN NaN NaN NaN NaN NaN NaN 1 10.08 NaN
801 UCLA_2 51309 2 0 11.90 1 R NaN 107.0 116.0 ... NaN NaN NaN NaN NaN NaN NaN 1 11.93 NaN
802 UCLA_2 51310 2 0 11.70 1 R NaN 87.0 90.0 ... NaN NaN NaN NaN NaN NaN NaN 1 -9999.00 NaN
803 UCLA_2 51311 2 0 11.95 1 R NaN 103.0 96.0 ... NaN NaN NaN NaN NaN NaN NaN 1 11.95 NaN
804 UCLA_2 51312 2 0 12.90 1 R NaN 123.0 123.0 ... NaN NaN NaN NaN NaN NaN NaN 1 12.90 NaN
805 UCLA_2 51313 2 0 13.36 1 R NaN 112.0 112.0 ... NaN NaN NaN NaN NaN NaN NaN 1 13.36 NaN
806 UCLA_2 51314 2 0 13.12 1 R NaN 97.0 106.0 ... NaN NaN NaN NaN NaN NaN NaN 1 13.12 NaN
807 UCLA_2 51315 2 0 13.63 1 R NaN 118.0 115.0 ... NaN NaN NaN NaN NaN NaN NaN 1 13.63 NaN
808 UCLA_2 51316 2 0 12.66 1 L NaN 94.0 87.0 ... NaN NaN NaN NaN NaN NaN NaN 1 12.66 NaN
809 UCLA_2 51317 1 1 12.82 1 R NaN 102.0 99.0 ... NaN NaN NaN NaN NaN NaN NaN 1 12.82 NaN
217 MAX_MUN 51350 1 1 11.00 1 R NaN 79.0 NaN ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
218 MAX_MUN 51351 1 1 11.00 1 R NaN 79.0 NaN ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
2 CALTECH 51458 1 1 39.20 1 R NaN 93.0 80.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
3 CALTECH 51459 1 1 22.80 1 R NaN 106.0 94.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
8 CALTECH 51464 1 1 20.90 1 Ambi NaN 101.0 118.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
9 CALTECH 51465 1 1 20.20 1 R NaN 96.0 99.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
10 CALTECH 51466 1 1 27.60 1 Ambi NaN 106.0 111.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
11 CALTECH 51467 1 1 23.40 1 R NaN 93.0 89.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
12 CALTECH 51468 1 1 20.10 1 R NaN 100.0 89.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
16 CALTECH 51472 1 1 17.50 1 Ambi NaN 125.0 123.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
17 CALTECH 51473 1 1 21.20 1 R NaN -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
18 CALTECH 51474 1 1 20.90 1 R NaN 100.0 90.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
561 SBL 51571 1 1 22.00 1 NaN -90.0 -9999.0 101.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN 22.45
575 SBL 51585 1 1 27.00 1 NaN 90.0 96.0 99.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00

359 rows × 74 columns

Matching based on Age

  • Age bins
    • 6 - 9
    • 9 -12
    • 12 - 15
    • 15 - 18

In [193]:
age_bins = np.array([[0,9],[9,12],[12,15],[15,18]])

bins_age_AUT = []
bins_age_TD = []

# for counter, _bin in enumerate(age_bins):



for age in age_bins:
    
    selected_AUT = pd.DataFrame()
    selected_TD = pd.DataFrame()

    
    print(age[0], age[1])
    selected_AUT = pd.concat([selected_AUT,df_phenotype.loc[(df_phenotype['SEX'] == 1) 
                                                            & (df_phenotype['DSM_IV_TR'] == 1)
                                                            & (df_phenotype['AGE_AT_SCAN'] > age[0])
                                                            & (df_phenotype['AGE_AT_SCAN'] <= age[1]) ]])  
    selected_TD = pd.concat([selected_TD,selected_df_TD.loc[(selected_df_TD['SEX'] == 1)
                                                            & (selected_df_TD['DSM_IV_TR'] == 0)
                                                            & (selected_df_TD['AGE_AT_SCAN'] > age[0])
                                                            & (selected_df_TD['AGE_AT_SCAN'] <= age[1]) ]])  

    bins_age_AUT.append(selected_AUT)
    bins_age_TD.append(selected_TD)


0 9
9 12
12 15
15 18

In [194]:
bins_age_TD[0]


Out[194]:
SITE_ID SUB_ID DX_GROUP DSM_IV_TR AGE_AT_SCAN SEX HANDEDNESS_CATEGORY HANDEDNESS_SCORES FIQ VIQ ... WISC_IV_BLK_DSN_SCALED WISC_IV_PIC_CON_SCALED WISC_IV_MATRIX_SCALED WISC_IV_DIGIT_SPAN_SCALED WISC_IV_LET_NUM_SCALED WISC_IV_CODING_SCALED WISC_IV_SYM_SCALED EYE_STATUS_AT_SCAN AGE_AT_MPRAGE BMI
976 USM 50453 2 0 8.7721 1 NaN 85.19 121.0 104.0 ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
1069 YALE 50564 2 0 7.6600 1 R NaN 140.0 126.0 ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN

2 rows × 74 columns


In [195]:
# num_bins = 4
print('Original data stats')
print('Age Range    ','TD ','AUT ','Ratio TD/AUT')
ratio = np.zeros((len(bins_age_TD)))
for i in range(len(bins_age_TD)):
    ratio[i] = bins_age_TD[i].shape[0]/bins_age_AUT[i].shape[0]
    print(age_bins[i],bins_age_TD[i].shape[0],bins_age_AUT[i].shape[0], ratio[i])


Age Range     TD  AUT  Ratio TD/AUT
[0 9] 2 15 0.133333333333
[ 9 12] 16 59 0.271186440678
[12 15] 25 85 0.294117647059
[15 18] 17 55 0.309090909091

In [168]:
min_ratio = np.min(ratio)
min_index = np.argmin(ratio)

In [169]:
new_TD = np.zeros((len(bins_age_AUT)))
print('Matched data stats')
print('Age Range    ','TD ','AUT ')
for i in range(len(bins_age_AUT)):
    new_TD[i] = np.ceil(bins_age_AUT[i].shape[0] * min_ratio)
    print(age_bins[i],new_TD[i],bins_age_AUT[i].shape[0])


Age Range     TD  AUT 
[0 9] 17.0 14
[ 9 12] 71.0 58
[12 15] 95.0 78
[15 18] 61.0 50

In [170]:
# Now loop over all the bins created and select the specific number of subjects randomly from each TD bin

TD_idx_list = []
selected_df_TD = pd.DataFrame()

for i in range(len(bins_age_TD)):
    idx = np.arange(len(bins_age_TD[i]))
    np.random.shuffle(idx)
    idx = idx[0:int(new_TD[i])]
    TD_idx_list.append(idx)
    selected_df_TD = pd.concat([selected_df_TD, bins_age_TD[i].iloc[idx]])
    
selected_df_TD = selected_df_TD.sort_values(['SUB_ID'])
    
    
    
#     print(idx)

In [215]:
selected_df_TD

# selected_df_TD.as_matrix(['SUB_ID']).squeeze()


Out[215]:
SITE_ID SUB_ID DX_GROUP DSM_IV_TR AGE_AT_SCAN SEX HANDEDNESS_CATEGORY HANDEDNESS_SCORES FIQ VIQ ... WISC_IV_BLK_DSN_SCALED WISC_IV_PIC_CON_SCALED WISC_IV_MATRIX_SCALED WISC_IV_DIGIT_SPAN_SCALED WISC_IV_LET_NUM_SCALED WISC_IV_CODING_SCALED WISC_IV_SYM_SCALED EYE_STATUS_AT_SCAN AGE_AT_MPRAGE BMI
489 PITT 50002 1 1 16.77 1 Ambi NaN 103.0 116.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
490 PITT 50003 1 1 24.45 1 R NaN 124.0 128.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
491 PITT 50004 1 1 19.09 1 R NaN 113.0 108.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
493 PITT 50006 1 1 13.37 1 L NaN 109.0 99.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
494 PITT 50007 1 1 17.78 1 R NaN 110.0 106.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
495 PITT 50008 1 1 32.45 1 R NaN 123.0 123.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
496 PITT 50009 1 1 33.86 1 R NaN 126.0 118.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
497 PITT 50010 1 1 35.20 1 L NaN 81.0 81.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
498 PITT 50011 1 1 16.93 1 L NaN 111.0 101.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
499 PITT 50012 1 1 21.48 1 R NaN 128.0 119.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
500 PITT 50013 1 1 9.33 1 R NaN 86.0 89.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
501 PITT 50014 1 1 14.20 1 R NaN 96.0 97.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
502 PITT 50015 1 1 14.20 1 R NaN 99.0 98.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
503 PITT 50016 1 1 21.82 1 R NaN 123.0 120.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
504 PITT 50017 1 1 22.70 1 R NaN 87.0 91.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
505 PITT 50019 1 1 27.81 1 R NaN 100.0 89.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
506 PITT 50020 1 1 20.83 1 R NaN 100.0 120.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
509 PITT 50024 1 1 22.64 1 R NaN 127.0 121.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
510 PITT 50025 1 1 31.72 1 R NaN 131.0 132.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
511 PITT 50026 1 1 16.28 1 R NaN 87.0 90.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
513 PITT 50028 1 1 12.74 1 R NaN 126.0 112.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
515 PITT 50053 1 1 12.03 1 R NaN 122.0 119.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
516 PITT 50055 1 1 16.99 1 R NaN 111.0 108.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
517 PITT 50056 1 1 13.59 1 R NaN 113.0 101.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
577 SDSU 50183 1 1 14.14 1 R NaN 139.0 128.0 ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
586 SDSU 50192 1 1 12.99 1 R NaN 85.0 93.0 ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
659 TRINITY 50239 1 1 17.03 1 R NaN 97.0 92.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
661 TRINITY 50241 1 1 17.17 1 R NaN 89.0 95.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
662 TRINITY 50242 1 1 12.75 1 R NaN 117.0 116.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
663 TRINITY 50243 1 1 13.75 1 R NaN 90.0 98.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
792 UCLA_2 51300 1 1 14.08 1 L NaN 92.0 104.0 ... NaN NaN NaN NaN NaN NaN NaN 1 14.08 NaN
793 UCLA_2 51301 1 1 13.28 1 R NaN 91.0 108.0 ... NaN NaN NaN NaN NaN NaN NaN 1 13.28 NaN
794 UCLA_2 51302 1 1 10.85 1 R NaN 87.0 75.0 ... NaN NaN NaN NaN NaN NaN NaN 1 10.85 NaN
796 UCLA_2 51304 2 0 10.53 1 R NaN 120.0 120.0 ... NaN NaN NaN NaN NaN NaN NaN 1 10.53 NaN
798 UCLA_2 51306 2 0 11.66 1 R NaN 119.0 115.0 ... NaN NaN NaN NaN NaN NaN NaN 1 11.66 NaN
799 UCLA_2 51307 2 0 12.15 1 R NaN 128.0 127.0 ... NaN NaN NaN NaN NaN NaN NaN 1 12.15 NaN
800 UCLA_2 51308 2 0 9.79 1 R NaN 124.0 125.0 ... NaN NaN NaN NaN NaN NaN NaN 1 10.08 NaN
801 UCLA_2 51309 2 0 11.90 1 R NaN 107.0 116.0 ... NaN NaN NaN NaN NaN NaN NaN 1 11.93 NaN
802 UCLA_2 51310 2 0 11.70 1 R NaN 87.0 90.0 ... NaN NaN NaN NaN NaN NaN NaN 1 -9999.00 NaN
803 UCLA_2 51311 2 0 11.95 1 R NaN 103.0 96.0 ... NaN NaN NaN NaN NaN NaN NaN 1 11.95 NaN
804 UCLA_2 51312 2 0 12.90 1 R NaN 123.0 123.0 ... NaN NaN NaN NaN NaN NaN NaN 1 12.90 NaN
805 UCLA_2 51313 2 0 13.36 1 R NaN 112.0 112.0 ... NaN NaN NaN NaN NaN NaN NaN 1 13.36 NaN
806 UCLA_2 51314 2 0 13.12 1 R NaN 97.0 106.0 ... NaN NaN NaN NaN NaN NaN NaN 1 13.12 NaN
807 UCLA_2 51315 2 0 13.63 1 R NaN 118.0 115.0 ... NaN NaN NaN NaN NaN NaN NaN 1 13.63 NaN
808 UCLA_2 51316 2 0 12.66 1 L NaN 94.0 87.0 ... NaN NaN NaN NaN NaN NaN NaN 1 12.66 NaN
809 UCLA_2 51317 1 1 12.82 1 R NaN 102.0 99.0 ... NaN NaN NaN NaN NaN NaN NaN 1 12.82 NaN
217 MAX_MUN 51350 1 1 11.00 1 R NaN 79.0 NaN ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
218 MAX_MUN 51351 1 1 11.00 1 R NaN 79.0 NaN ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
2 CALTECH 51458 1 1 39.20 1 R NaN 93.0 80.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
3 CALTECH 51459 1 1 22.80 1 R NaN 106.0 94.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
8 CALTECH 51464 1 1 20.90 1 Ambi NaN 101.0 118.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
9 CALTECH 51465 1 1 20.20 1 R NaN 96.0 99.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
10 CALTECH 51466 1 1 27.60 1 Ambi NaN 106.0 111.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
11 CALTECH 51467 1 1 23.40 1 R NaN 93.0 89.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
12 CALTECH 51468 1 1 20.10 1 R NaN 100.0 89.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
16 CALTECH 51472 1 1 17.50 1 Ambi NaN 125.0 123.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
17 CALTECH 51473 1 1 21.20 1 R NaN -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
18 CALTECH 51474 1 1 20.90 1 R NaN 100.0 90.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
561 SBL 51571 1 1 22.00 1 NaN -90.0 -9999.0 101.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN 22.45
575 SBL 51585 1 1 27.00 1 NaN 90.0 96.0 99.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00

359 rows × 74 columns


In [ ]:


In [104]:
x = np.arange(10)
np.random.shuffle(x)

In [105]:
x


Out[105]:
array([2, 0, 5, 6, 8, 3, 1, 9, 7, 4])

In [80]:
48 * min_ratio


Out[80]:
55.480519480519483

In [ ]:
#     selected = selected.loc[(selected['SEX'] == 1) & (selected['DSM_IV_TR'] == 0) & (selected['SITE_ID'] == site[0]) & (selected['EYE_STATUS_AT_SCAN'] == 1)]

In [196]:
selected;

In [44]:
df_phenotype.loc[(df_phenotype['SEX'] == 1) & (df_phenotype['DSM_IV_TR'] == 0) & (df_phenotype['SITE_ID'] == 'TRINITY') & (df_phenotype['EYE_STATUS_AT_SCAN'] == 1)]


Out[44]:
SITE_ID SUB_ID DX_GROUP DSM_IV_TR AGE_AT_SCAN SEX HANDEDNESS_CATEGORY HANDEDNESS_SCORES FIQ VIQ ... WISC_IV_BLK_DSN_SCALED WISC_IV_PIC_CON_SCALED WISC_IV_MATRIX_SCALED WISC_IV_DIGIT_SPAN_SCALED WISC_IV_LET_NUM_SCALED WISC_IV_CODING_SCALED WISC_IV_SYM_SCALED EYE_STATUS_AT_SCAN AGE_AT_MPRAGE BMI

0 rows × 74 columns

Create a function to do volumes matching


In [225]:
def volumes_matching(volumes_bins, demographics_file_path, phenotype_file_path):
    # Load demographics file
    
#     demographics_file_path = '/home1/varunk/Autism-Connectome-Analysis-brain_connectivity/notebooks/demographics.csv'
#     phenotype_file_path = '/home1/varunk/data/ABIDE1/RawDataBIDs/composite_phenotypic_file.csv'
#     volumes_bins = np.array([[0,150],[151,200],[201,250],[251,300]])
    
    
    df_demographics = pd.read_csv(demographics_file_path)
    df_demographics_volumes = df_demographics.as_matrix(['SITE_NAME','VOLUMES']).squeeze()


    
    df_phenotype = pd.read_csv(phenotype_file_path) 
    df_phenotype = df_phenotype.sort_values(['SUB_ID'])

    

    bins_volumes_AUT_data = []
    bins_volumes_TD_data = []

    for counter, _bin in enumerate(volumes_bins):
        df_demographics_volumes_selected_bin = df_demographics_volumes[np.where(np.logical_and((df_demographics_volumes[:,1] >= _bin[0]),(df_demographics_volumes[:,1] <= _bin[1])))]


        selected_AUT = pd.DataFrame()
        selected_TD = pd.DataFrame()
        for site in df_demographics_volumes_selected_bin:
#             print(site[0])
            selected_AUT = pd.concat([selected_AUT,df_phenotype.loc[(df_phenotype['SEX'] == 1) & (df_phenotype['DSM_IV_TR'] == 1) & (df_phenotype['SITE_ID'] == site[0])]])  
            selected_TD = pd.concat([selected_AUT,df_phenotype.loc[(df_phenotype['SEX'] == 1) & (df_phenotype['DSM_IV_TR'] == 0) & (df_phenotype['SITE_ID'] == site[0])]])  

        bins_volumes_AUT_data.append(selected_AUT)
        bins_volumes_TD_data.append(selected_TD)
        
    selected_df_TD = matching(volumes_bins, bins_volumes_TD_data, bins_volumes_AUT_data)
#     sub_ids = selected_df_TD.as_matrix(['SUB_ID']).squeeze()
    selected_df_TD.to_csv('selected_TD.csv')
    return selected_df_TD

In [226]:
def matching(bins, bins_TD_data, bins_AUT_data):
    # num_bins = 4
    print('Original data stats')
    print('Range    ','TD ','AUT ','Ratio TD/AUT')
    ratio = np.zeros((len(bins_TD_data)))
    for i in range(len(bins_TD_data)):
        ratio[i] = bins_TD_data[i].shape[0]/bins_AUT_data[i].shape[0]
        print(bins[i],bins_TD_data[i].shape[0],bins_AUT_data[i].shape[0], ratio[i])

    min_ratio = np.min(ratio)
    min_index = np.argmin(ratio)

    new_TD = np.zeros((len(bins_TD_data)))
    print('Matched data stats')
    print('Range    ','TD ','AUT ')
    for i in range(len(bins_TD_data)):
        new_TD[i] = np.ceil(bins_AUT_data[i].shape[0] * min_ratio)
        print(bins[i],new_TD[i],bins_AUT_data[i].shape[0])

    # Now loop over all the bins created and select the specific number of subjects randomly from each TD bin

    TD_idx_list = []
    selected_df_TD = pd.DataFrame()

    for i in range(len(bins_TD_data)):
        idx = np.arange(len(bins_TD_data[i]))
        np.random.shuffle(idx)
        idx = idx[0:int(new_TD[i])]
        TD_idx_list.append(idx)
        selected_df_TD = pd.concat([selected_df_TD, bins_TD_data[i].iloc[idx]])

    selected_df_TD = selected_df_TD.sort_values(['SUB_ID'])

    return selected_df_TD

In [222]:
demographics_file_path = '/home1/varunk/Autism-Connectome-Analysis-brain_connectivity/notebooks/demographics.csv'
phenotype_file_path = '/home1/varunk/data/ABIDE1/RawDataBIDs/composite_phenotypic_file.csv'
volumes_bins = np.array([[0,150],[151,200],[201,250],[251,300]])

volumes_matching(volumes_bins, demographics_file_path, phenotype_file_path)


Original data stats
Range     TD  AUT  Ratio TD/AUT
[  0 150] 89 77 1.15584415584
[151 200] 110 90 1.22222222222
[201 250] 137 94 1.45744680851
[251 300] 69 48 1.4375
Matched data stats
Range     TD  AUT 
[  0 150] 89.0 77
[151 200] 105.0 90
[201 250] 109.0 94
[251 300] 56.0 48
Out[222]:
SITE_ID SUB_ID DX_GROUP DSM_IV_TR AGE_AT_SCAN SEX HANDEDNESS_CATEGORY HANDEDNESS_SCORES FIQ VIQ ... WISC_IV_BLK_DSN_SCALED WISC_IV_PIC_CON_SCALED WISC_IV_MATRIX_SCALED WISC_IV_DIGIT_SPAN_SCALED WISC_IV_LET_NUM_SCALED WISC_IV_CODING_SCALED WISC_IV_SYM_SCALED EYE_STATUS_AT_SCAN AGE_AT_MPRAGE BMI
489 PITT 50002 1 1 16.77 1 Ambi NaN 103.0 116.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
490 PITT 50003 1 1 24.45 1 R NaN 124.0 128.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
491 PITT 50004 1 1 19.09 1 R NaN 113.0 108.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
494 PITT 50007 1 1 17.78 1 R NaN 110.0 106.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
495 PITT 50008 1 1 32.45 1 R NaN 123.0 123.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
496 PITT 50009 1 1 33.86 1 R NaN 126.0 118.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
497 PITT 50010 1 1 35.20 1 L NaN 81.0 81.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
498 PITT 50011 1 1 16.93 1 L NaN 111.0 101.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
499 PITT 50012 1 1 21.48 1 R NaN 128.0 119.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
500 PITT 50013 1 1 9.33 1 R NaN 86.0 89.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
501 PITT 50014 1 1 14.20 1 R NaN 96.0 97.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
502 PITT 50015 1 1 14.20 1 R NaN 99.0 98.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
503 PITT 50016 1 1 21.82 1 R NaN 123.0 120.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
504 PITT 50017 1 1 22.70 1 R NaN 87.0 91.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
505 PITT 50019 1 1 27.81 1 R NaN 100.0 89.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
506 PITT 50020 1 1 20.83 1 R NaN 100.0 120.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
507 PITT 50022 1 1 16.99 1 R NaN 119.0 110.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
509 PITT 50024 1 1 22.64 1 R NaN 127.0 121.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
510 PITT 50025 1 1 31.72 1 R NaN 131.0 132.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
511 PITT 50026 1 1 16.28 1 R NaN 87.0 90.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
512 PITT 50027 1 1 12.24 1 R NaN 98.0 98.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
513 PITT 50028 1 1 12.74 1 R NaN 126.0 112.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
515 PITT 50053 1 1 12.03 1 R NaN 122.0 119.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
516 PITT 50055 1 1 16.99 1 R NaN 111.0 108.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
517 PITT 50056 1 1 13.59 1 R NaN 113.0 101.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
577 SDSU 50183 1 1 14.14 1 R NaN 139.0 128.0 ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
586 SDSU 50192 1 1 12.99 1 R NaN 85.0 93.0 ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
659 TRINITY 50239 1 1 17.03 1 R NaN 97.0 92.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
661 TRINITY 50241 1 1 17.17 1 R NaN 89.0 95.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
662 TRINITY 50242 1 1 12.75 1 R NaN 117.0 116.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
792 UCLA_2 51300 1 1 14.08 1 L NaN 92.0 104.0 ... NaN NaN NaN NaN NaN NaN NaN 1 14.08 NaN
793 UCLA_2 51301 1 1 13.28 1 R NaN 91.0 108.0 ... NaN NaN NaN NaN NaN NaN NaN 1 13.28 NaN
794 UCLA_2 51302 1 1 10.85 1 R NaN 87.0 75.0 ... NaN NaN NaN NaN NaN NaN NaN 1 10.85 NaN
796 UCLA_2 51304 2 0 10.53 1 R NaN 120.0 120.0 ... NaN NaN NaN NaN NaN NaN NaN 1 10.53 NaN
798 UCLA_2 51306 2 0 11.66 1 R NaN 119.0 115.0 ... NaN NaN NaN NaN NaN NaN NaN 1 11.66 NaN
799 UCLA_2 51307 2 0 12.15 1 R NaN 128.0 127.0 ... NaN NaN NaN NaN NaN NaN NaN 1 12.15 NaN
800 UCLA_2 51308 2 0 9.79 1 R NaN 124.0 125.0 ... NaN NaN NaN NaN NaN NaN NaN 1 10.08 NaN
801 UCLA_2 51309 2 0 11.90 1 R NaN 107.0 116.0 ... NaN NaN NaN NaN NaN NaN NaN 1 11.93 NaN
802 UCLA_2 51310 2 0 11.70 1 R NaN 87.0 90.0 ... NaN NaN NaN NaN NaN NaN NaN 1 -9999.00 NaN
803 UCLA_2 51311 2 0 11.95 1 R NaN 103.0 96.0 ... NaN NaN NaN NaN NaN NaN NaN 1 11.95 NaN
804 UCLA_2 51312 2 0 12.90 1 R NaN 123.0 123.0 ... NaN NaN NaN NaN NaN NaN NaN 1 12.90 NaN
805 UCLA_2 51313 2 0 13.36 1 R NaN 112.0 112.0 ... NaN NaN NaN NaN NaN NaN NaN 1 13.36 NaN
806 UCLA_2 51314 2 0 13.12 1 R NaN 97.0 106.0 ... NaN NaN NaN NaN NaN NaN NaN 1 13.12 NaN
807 UCLA_2 51315 2 0 13.63 1 R NaN 118.0 115.0 ... NaN NaN NaN NaN NaN NaN NaN 1 13.63 NaN
808 UCLA_2 51316 2 0 12.66 1 L NaN 94.0 87.0 ... NaN NaN NaN NaN NaN NaN NaN 1 12.66 NaN
809 UCLA_2 51317 1 1 12.82 1 R NaN 102.0 99.0 ... NaN NaN NaN NaN NaN NaN NaN 1 12.82 NaN
217 MAX_MUN 51350 1 1 11.00 1 R NaN 79.0 NaN ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
218 MAX_MUN 51351 1 1 11.00 1 R NaN 79.0 NaN ... NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN
2 CALTECH 51458 1 1 39.20 1 R NaN 93.0 80.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
3 CALTECH 51459 1 1 22.80 1 R NaN 106.0 94.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
8 CALTECH 51464 1 1 20.90 1 Ambi NaN 101.0 118.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
9 CALTECH 51465 1 1 20.20 1 R NaN 96.0 99.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
10 CALTECH 51466 1 1 27.60 1 Ambi NaN 106.0 111.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
11 CALTECH 51467 1 1 23.40 1 R NaN 93.0 89.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
12 CALTECH 51468 1 1 20.10 1 R NaN 100.0 89.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
16 CALTECH 51472 1 1 17.50 1 Ambi NaN 125.0 123.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
17 CALTECH 51473 1 1 21.20 1 R NaN -9999.0 -9999.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
18 CALTECH 51474 1 1 20.90 1 R NaN 100.0 90.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN
561 SBL 51571 1 1 22.00 1 NaN -90.0 -9999.0 101.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN 22.45
575 SBL 51585 1 1 27.00 1 NaN 90.0 96.0 99.0 ... NaN NaN NaN NaN NaN NaN NaN 2 NaN -9999.00

359 rows × 74 columns


In [ ]:

Recycle Bin


In [197]:
df_phenotype.loc[(df_phenotype['SITE_ID'] == 'TRINITY')];

In [25]:
df_demographics_volumes_selected_bin


Out[25]:
array([['CALTECH', 150.0],
       ['TRINITY', 150.0]], dtype=object)

Extract the sub_id where volume lies in a particular bin


In [15]:
df_phenotype = pd.read_csv('/home1/varunk/data/ABIDE1/RawDataBIDs/composite_phenotypic_file.csv') # , index_col='SUB_ID'

# df_phenotype = df.as_matrix(['SITE_ID']).squeeze()
df = df.sort_values(['SUB_ID'])


df_td_lt18_m_eyesopen_vol_100_150 = df.loc[(df['SEX'] == 1) & (df['AGE_AT_SCAN'] <=18) & (df['DSM_IV_TR'] == 0) & (df['EYE_STATUS_AT_SCAN'] == 1)]
df_td_lt18_m_eyesopen_vol_100_150;

In [16]:
np.unique(df_phenotype)


Out[16]:
array(['CALTECH', 'CMU', 'KKI', 'LEUVEN_1', 'LEUVEN_2', 'MAX_MUN', 'NYU',
       'OHSU', 'OLIN', 'PITT', 'SBL', 'SDSU', 'STANFORD', 'TRINITY',
       'UCLA_1', 'UCLA_2', 'UM_1', 'UM_2', 'USM', 'YALE'], dtype=object)

In [ ]:


In [ ]:


In [ ]:
np.mean(eyes_open_tr), np.mean(eyes_closed_tr)

In [ ]:
df_td_lt18_m_eyesopen_age

In [ ]:
df_td_lt18_m_eyesopen_sub_id

In [ ]:
tr[637]

In [ ]:
'50003' in X[1]

In [ ]:


In [ ]:


In [ ]: