@@ -36,18 +36,20 @@ def create_sample_lineage_graph(sampleId):
3636 errors .append (f"Sample with id ${ sampleId } does not exist" )
3737
3838 if not errors :
39- derivedBySample = DerivedBySample .objects .filter (sample__id = sampleId ) \
40- .values_list ("derived_sample__biosample_id" , flat = True )
39+ biosampleIds = DerivedBySample .objects .filter (sample__id = sampleId ) \
40+ .values_list ("derived_sample__biosample_id" , flat = True )
4141
42- sampleIds = DerivedBySample .objects .filter (derived_sample__biosample__id__in = derivedBySample ) \
43- .values_list ("sample__id" , flat = True )
44- samples = Sample .objects .filter (id__in = sampleIds )
42+ derivedBySamples = DerivedBySample .objects .filter (derived_sample__biosample__id__in = biosampleIds ) \
43+ .annotate (name = F ("sample__name" )) \
44+ .annotate (quality_flag = F ("sample__quality_flag" )) \
45+ .annotate (quantity_flag = F ("sample__quantity_flag" )) \
4546
47+ sampleIds = derivedBySamples .values_list ("sample__id" , flat = True )
4648 process_measurements = ProcessMeasurement .objects .filter (source_sample__in = sampleIds ) \
4749 .select_related ("process__lineage" ).annotate (child_sample = F ("lineage__child" )) \
4850 .select_related ("process_protocol" ).annotate (protocol_name = F ("process__protocol__name" ))
4951
50- nodes = list (samples .values ("id" , " name" , "quality_flag" , "quantity_flag" ))
52+ nodes = list (derivedBySamples .values ("name" , "quality_flag" , "quantity_flag" ). annotate ( id = F ( "sample_id" ) ))
5153 edges = list (process_measurements .values ("id" , "source_sample" , "child_sample" , "protocol_name" ))
5254
5355 return (nodes , edges , errors )
0 commit comments