def get_conflicts(leg):
"""Find irreconcilable connected components of leg."""
conflicts = set() # connected components with conflict
for cc in nx.connected_components(leg):
# key = species, val = set of loci in species for this cc
loci_dct = collections.defaultdict(set)
for label in cc:
species, locus = label
loci_dct[species].add(locus)
for sp, loci in loci_dct.iteritems():
# conflict if a species has more than one loci in this cc
if len(loci) >= 2:
conflicts.add(tuple(cc))
break
return conflicts
评论列表
文章目录