@@ -190,7 +190,7 @@ def load_betas_files(betas_file, verbose=True):
190
190
191
191
#subset SNPs according to extract file
192
192
if args .extract is not None :
193
- df_extract = pd .read_csv (args .extract , header = None , squeeze = True )
193
+ df_extract = pd .read_csv (args .extract , header = None ). squeeze ( )
194
194
df_betas = df_betas .loc [df_betas ['SNP' ].isin (df_extract )]
195
195
if df_betas .shape [0 ]== 0 :
196
196
raise ValueError ('No SNPs remained after applying --extract' )
@@ -250,10 +250,12 @@ def computs_prs_all_files(args, betas_file, disable_jackknife=False, keep_file=N
250
250
df_prs_sum = df_prs_file
251
251
else :
252
252
assert np .all (df_prs_sum .index == df_prs_file .index )
253
- for c in df_prs_file .columns :
254
- if not c .startswith ('SCORESUM' ): continue
255
- if not c in df_prs_sum .columns : df_prs_sum [c ] = 0
256
- df_prs_sum [c ] += df_prs_file [c ]
253
+ list_shared_columns = [c for c in df_prs_sum .columns .intersection (df_prs_file .columns ).tolist () if c .startswith ('SCORESUM' )]
254
+ list_new_columns = [c for c in df_prs_file .columns if c not in list_shared_columns and c .startswith ('SCORESUM' )]
255
+ if len (list_shared_columns ) > 0 :
256
+ df_prs_sum [list_shared_columns ] += df_prs_file [list_shared_columns ]
257
+ if len (list_new_columns ) > 0 :
258
+ df_prs_sum = pd .concat ([df_prs_sum , df_prs_file [list_new_columns ]], axis = 1 )
257
259
258
260
#compute jackknife-block PRS
259
261
if args .num_jk > 0 and not disable_jackknife :
@@ -354,7 +356,7 @@ def compute_prs(args):
354
356
#if there's more than one beta, take the linear combination
355
357
else :
356
358
mixweights_file = args .mixweights_prefix + '.mixweights'
357
- s_mixweights = pd .read_csv (mixweights_file , delim_whitespace = True , squeeze = True )
359
+ s_mixweights = pd .read_csv (mixweights_file , delim_whitespace = True ). squeeze ( )
358
360
if np .any (s_mixweights .index [:- 1 ] != args .betas .split (',' )):
359
361
raise ValueError ('The provided betas file do not match the mix weights file' )
360
362
assert s_mixweights .index [- 1 ] == 'intercept'
@@ -369,7 +371,7 @@ def compute_prs(args):
369
371
370
372
#handle jackknife
371
373
set_jk_columns = set ([c for c in df_prs_all .columns if '.jk' in c ])
372
- df_prs_sum_jk = pd .DataFrame (index = df_prs_all .index , columns = set_jk_columns )
374
+ df_prs_sum_jk = pd .DataFrame (index = df_prs_all .index , columns = list ( set_jk_columns ) )
373
375
if df_prs_sum_jk .shape [1 ] > 1 :
374
376
for jk_column in set_jk_columns :
375
377
if args .betas .count (',' ) == 0 :
0 commit comments