exomiser / svart

API for use in representing and manipulating genomic variation
7 stars 1 forks source link

UnknownContig should have length 1 #18

Closed julesjacobsen closed 3 years ago

julesjacobsen commented 3 years ago

There is one thing I stumbled across when incorporating this into Exomiser:

@Test
public void emptyRegionUnknownChromosomeToOppositeStrand() {
    GenomicRegion empty = GenomicRegion.zeroBased(Contig.unknown(), 0, 1);
    System.out.println(empty.toOppositeStrand());
}

should return

GenomicRegion{contig=0, strand=-, coordinateSystem=ZERO_BASED, startPosition=0, endPosition=1}

instead it throws an error:

java.lang.IllegalArgumentException: Cannot create position `-1` with negative value

    at org.monarchitiative.variant.api@1.0-SNAPSHOT/org.monarchinitiative.variant.api.PrecisePosition.<init>(PrecisePosition.java:14)
    at org.monarchitiative.variant.api@1.0-SNAPSHOT/org.monarchinitiative.variant.api.PrecisePosition.invert(PrecisePosition.java:68)
    at org.monarchitiative.variant.api@1.0-SNAPSHOT/org.monarchinitiative.variant.api.BaseGenomicRegion.withStrand(BaseGenomicRegion.java:86)
    at org.monarchitiative.variant.api@1.0-SNAPSHOT/org.monarchinitiative.variant.api.BaseGenomicRegion.toOppositeStrand(BaseGenomicRegion.java:92)
    at org.monarchitiative.variant.api@1.0-SNAPSHOT/org.monarchinitiative.variant.api.BaseGenomicRegion.toOppositeStrand(BaseGenomicRegion.java:9)
    at org.monarchitiative.variant.api@1.0-SNAPSHOT/org.monarchinitiative.variant.api.impl.DefaultGenomicRegionTest.emptyRegionUnknownChromosomeToOppositeStrand(DefaultGenomicRegionTest.java:46)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
    at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
    at ...

any reason not to have a one-length unknown contig?

ielis commented 3 years ago

I do not see any reason that would prevent us to make the unknown contig to have length 1.