Skip to content

feat: handle cases where liftover is ambiguous #198

@jennifer-bowser

Description

@jennifer-bowser

Feature description

In Issue #147 we made it so that AnyVar automatically detects the reference assembly (either GRCh37 or GRCh38) of new variants when they are registered and lifts them over to the opposite assembly. To ease development, we shortcutted the conversion of variant coordinates by assuming that all variants will always lift over unambiguously between assemblies. However, in reality some variants will map to multiple start/end coordinates or coordinate ranges in the opposing assembly. We need to handle these cases.

NOTE: We still need to decide how we want to handle these cases. The proposed solution is to register each possible lifted-over variant, but this could be technically challenging. See "Implementation Details" for more.

Use case

If we don't handle these edge cases, AnyVar won't always be precise; and it is critical that AnyVar be a precise as possible in order to ultimately gain widespread adoption.

Acceptance Criteria

  • AnyVar handles cases of ambiguous liftover intentionally and precisely.

Proposed solution

No response

Alternatives considered

No response

Implementation details

We use AGCT for our coordinate liftover conversions. With this method, a variant's start and end coordinates must be converted separately. The liftover conversion for each position return a list that may contain multiple results. However, if the conversion for both the start and the end coordinates return lists of multiple results, how do we know which lifted-over start result pairs with which lifted-over end result? This gets even messier for variants with Ranged start/end positions, since the problem doubles.

UPDATE - We have decided to just not handle cases where liftover is ambiguous for now, and raise an error.

Potential Impact

No response

Additional context

No response

Contribution

None

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions