@@ -274,7 +274,7 @@ def makelist(thing):
274
274
return thing
275
275
276
276
def filter_df (metadf = pd .DataFrame (),samples = None ,range = None ,peptide_ranges = None ,
277
- charge = None ,index = None ,timept = None ,timeidx = None ,peptides = None ,rep = None ,data_ids = None ,quiet = True ):
277
+ charge = None ,index = None ,timept = None ,timeidx = None ,peptides = None ,rep = None ,data_ids = None ,s_ids = None , quiet = True ):
278
278
''' Utility function to Filter metadf (or any other dataframe) based on user specified values
279
279
samples = ['sample1','sample2'] or 'sample1'
280
280
range = [start,end]
@@ -331,6 +331,14 @@ def filter_df(metadf=pd.DataFrame(),samples=None,range=None,peptide_ranges=None,
331
331
if not filtered .empty and (rep or rep == 0 ):
332
332
try : filtered = filtered [filtered ['rep' ].isin (makelist (rep ))]
333
333
except : print ("no column named rep" )
334
+
335
+ if not filtered .empty and s_ids :
336
+ s_ids = makelist (s_ids )
337
+ for s_id in s_ids :
338
+ d , t , r = [float (s ) for s in s_id .split ('-' )]
339
+ try :
340
+ filtered = filtered [(filtered ['data_id' ] == d ) & (filtered ['time' ] == t ) & (filtered ['rep' ]== r )]
341
+ except : print ("no s_id" ,s_id )
334
342
335
343
if quiet == False :
336
344
print ("Dataframe filtered to" ,len (filtered ),"from" ,len (metadf ),"total entries" )
0 commit comments