2323
2424
2525class ActivityAggregator (SimpleAggregator ):
26- pass
26+
27+ def _accumulator (self , field : str ) -> Accumulator | None :
28+ if field in ('activity_id' , 'document_id' , 'source_datarepo_row_ids' ):
29+ return None
30+ else :
31+ return super ()._accumulator (field )
2732
2833
2934class BiosampleAggregator (SimpleAggregator ):
3035
3136 def _accumulator (self , field : str ) -> Accumulator | None :
32- if field == 'donor_age_at_collection' :
37+ if field in ('biosample_id' , 'document_id' , 'source_datarepo_row_ids' ):
38+ return None
39+ elif field == 'donor_age_at_collection' :
3340 return SetOfDictAccumulator (max_size = 100 ,
3441 key = compose_keys (none_safe_tuple_key (none_last = True ),
3542 itemgetter ('lte' , 'gte' )))
@@ -38,13 +45,23 @@ def _accumulator(self, field: str) -> Accumulator | None:
3845
3946
4047class DatasetAggregator (SimpleAggregator ):
41- pass
48+
49+ def _accumulator (self , field : str ) -> Accumulator | None :
50+ if field == 'source_datarepo_row_ids' :
51+ return None
52+ # Aggregation of `document_id` is required for the creation of manifests
53+ elif field == 'document_id' :
54+ return super ()._accumulator (field )
55+ else :
56+ return super ()._accumulator (field )
4257
4358
4459class DiagnosisAggregator (SimpleAggregator ):
4560
4661 def _accumulator (self , field : str ) -> Accumulator | None :
47- if field in ('diagnosis_age' , 'onset_age' ):
62+ if field in ('diagnosis_id' , 'document_id' , 'source_datarepo_row_ids' ):
63+ return None
64+ elif field in ('diagnosis_age' , 'onset_age' ):
4865 return SetOfDictAccumulator (max_size = 100 ,
4966 key = compose_keys (none_safe_tuple_key (none_last = True ),
5067 itemgetter ('lte' , 'gte' )))
@@ -53,7 +70,12 @@ def _accumulator(self, field: str) -> Accumulator | None:
5370
5471
5572class DonorAggregator (SimpleAggregator ):
56- pass
73+
74+ def _accumulator (self , field : str ) -> Accumulator | None :
75+ if field in ('document_id' , 'donor_id' , 'source_datarepo_row_ids' ):
76+ return None
77+ else :
78+ return super ()._accumulator (field )
5779
5880
5981class FileAggregator (GroupingAggregator ):
@@ -72,7 +94,17 @@ def _group_keys(self, entity) -> tuple[Any, ...]:
7294 return entity ['file_format' ],
7395
7496 def _accumulator (self , field : str ) -> Accumulator | None :
75- if field in ('count' , 'file_size' ):
97+ if field in (
98+ 'document_id' ,
99+ 'drs_uri' ,
100+ 'file_id' ,
101+ 'file_md5sum' ,
102+ 'file_name' ,
103+ 'source_datarepo_row_ids' ,
104+ 'version' ,
105+ ):
106+ return None
107+ elif field in ('count' , 'file_size' ):
76108 return DistinctAccumulator (SumAccumulator ())
77109 else :
78110 return super ()._accumulator (field )
0 commit comments