diff --git a/misc-scripts/xref_mapping/XrefMapper/BasicMapper.pm b/misc-scripts/xref_mapping/XrefMapper/BasicMapper.pm index fe9728c3343c7b75ca4bc0e40283ad0a993f5e37..7baf5eac4f51f6f777acaf4b220069e47a12b956 100644 --- a/misc-scripts/xref_mapping/XrefMapper/BasicMapper.pm +++ b/misc-scripts/xref_mapping/XrefMapper/BasicMapper.pm @@ -514,12 +514,28 @@ sub get_alt_alleles { foreach my $aag (@$aa_list) { my $ref_gene = $aag->rep_Gene_id(); + # Representative gene not guaranteed, try to find an alternative best fit + if (!$ref_gene) { + my $genes = $aag->get_all_Genes; + foreach my $gene (@$genes) { + if ($gene->slice->is_reference) { + $ref_gene = $gene->dbID; + } + } + } + if (!$ref_gene) { + warning('Tried very hard but failed to select a representative gene for alt-allele-group '.$aag->dbID); + next; + } $is_reference{$ref_gene} = 1; my $others = $aag->get_all_Gene_ids('no rep'); + # Extra step in place to handle non-ref situations + my @cleaned_others = grep {!/$ref_gene/} @$others; + $insert_sth->execute($aag->dbID,$ref_gene,1); $num_of_genes++; $alt_added++; - foreach my $aa (@$others) { + foreach my $aa (@cleaned_others) { $insert_sth->execute($aag->dbID,$aa,0); $num_of_genes++; }