VariantToolChest icon indicating copy to clipboard operation
VariantToolChest copied to clipboard

SetOperator: Empty sets

Open Rhunos opened this issue 10 years ago • 0 comments

Hello,

I've been running into exceptions while trying out some set operations with empty datasets. The program does work perfectly on any other operations. Reference genome directory contains .fa as well as .fai and .dict files.

Input files

test_empty.vcf

##fileformat=VCFv4.1
#CHROM  POS ID  REF ALT QUAL    FILTER  INFO    FORMAT  A   B   C

test_2.vcf

##fileformat=VCFv4.1
#CHROM  POS ID  REF ALT QUAL    FILTER  INFO    FORMAT  A   B   C
1   10  .   A   T   .   .   .   GT  1/1 1/1 1/1
1   11  .   A   T   .   .   .   GT  0/1 0/1 0/1
1   12  .   A   T   .   .   .   GT  0/0 0/0 0/0

Set Operations

For each of these operations, I would expect an empty set as output. Union of test_empty with test_2 on all samples:

$ java -jar vtc.jar SO -i a=test_empty.vcf b=test_2.vcf -s u[a:b] -o res.vcf -R ~/Desktop/hg19.fa
Intersect type: pos
Complement type: het_homo_alt
2015-12-11 03:52:49 INFO  AbstractVariantPool:134 - Opening test_empty.vcf for reading...
2015-12-11 03:52:49 INFO  AbstractVariantPool:134 - Opening test_2.vcf for reading...
2015-12-11 03:52:49 INFO  AbstractVariantPool:210 - Setting samples
2015-12-11 03:52:49 ERROR SetOperatorEngine:295 - Caught unexpected exception, something is very wrong!
java.lang.NullPointerException
    at vtc.datastructures.AbstractVariantPool.getSamples(AbstractVariantPool.java:183)
    at vtc.datastructures.SamplePool.parseSamplePool(SamplePool.java:128)
    at vtc.datastructures.SamplePool.<init>(SamplePool.java:39)
    at vtc.tools.setoperator.operation.OperationFactory.parseOperation(OperationFactory.java:92)
    at vtc.tools.setoperator.operation.OperationFactory.createOperation(OperationFactory.java:32)
    at vtc.tools.setoperator.SetOperatorEngine.performOperations(SetOperatorEngine.java:401)
    at vtc.tools.setoperator.SetOperatorEngine.operate(SetOperatorEngine.java:275)
    at vtc.VTCEngine.main(VTCEngine.java:62)

Intersect of test_empty with test_2 on all samples:

$ java -jar vtc.jar SO -i a=test_empty.vcf b=test_2.vcf -s i[a:b] -g pos -o res.vcf -R ~/Desktop/hg19.fa
Intersect type: pos
Complement type: het_homo_alt
2015-12-11 03:54:31 INFO  AbstractVariantPool:134 - Opening test_empty.vcf for reading...
2015-12-11 03:54:31 INFO  AbstractVariantPool:134 - Opening test_2.vcf for reading...
2015-12-11 03:54:31 INFO  AbstractVariantPool:210 - Setting samples
2015-12-11 03:54:31 ERROR SetOperatorEngine:295 - Caught unexpected exception, something is very wrong!
java.lang.NullPointerException
    at vtc.datastructures.AbstractVariantPool.getSamples(AbstractVariantPool.java:183)
    at vtc.datastructures.SamplePool.parseSamplePool(SamplePool.java:128)
    at vtc.datastructures.SamplePool.<init>(SamplePool.java:39)
    at vtc.tools.setoperator.operation.OperationFactory.parseOperation(OperationFactory.java:92)
    at vtc.tools.setoperator.operation.OperationFactory.createOperation(OperationFactory.java:32)
    at vtc.tools.setoperator.SetOperatorEngine.performOperations(SetOperatorEngine.java:401)
    at vtc.tools.setoperator.SetOperatorEngine.operate(SetOperatorEngine.java:275)
    at vtc.VTCEngine.main(VTCEngine.java:62)

Union of test_empty with test_2 on some samples:

$ java -jar vtc.jar SO -i a=test_empty.vcf b=test_2.vcf -s u[a[A,B]:b[A,B]] -g pos -o res.vcf -R ~/Desktop/hg19.fa
Intersect type: pos
Complement type: het_homo_alt
2015-12-11 03:55:04 INFO  AbstractVariantPool:134 - Opening test_empty.vcf for reading...
2015-12-11 03:55:04 INFO  AbstractVariantPool:134 - Opening test_2.vcf for reading...
2015-12-11 03:55:04 INFO  AbstractVariantPool:210 - Setting samples

Performing union...
2015-12-11 03:55:04 INFO  SetOperator:992 - Processing variant pool 'a'...
2015-12-11 03:55:04 INFO  SetOperator:992 - Processing variant pool 'b'...
2015-12-11 03:55:04 ERROR SetOperatorEngine:295 - Caught unexpected exception, something is very wrong!
java.lang.NullPointerException
    at vtc.datastructures.AbstractVariantPool.getSamples(AbstractVariantPool.java:183)
    at vtc.tools.setoperator.SetOperator.performUnion(SetOperator.java:1070)
    at vtc.tools.setoperator.SetOperatorEngine.performOperations(SetOperatorEngine.java:415)
    at vtc.tools.setoperator.SetOperatorEngine.operate(SetOperatorEngine.java:275)
    at vtc.VTCEngine.main(VTCEngine.java:62)

Intersect of test_empty with test_2 on some samples: Strangely enough, intersecting on two files while selecting a few samples seems to work.

$ java -jar vtc.jar SO -i a=test_empty.vcf b=test_2.vcf -s i[a[A,B]:b[A,B]] -g pos -o res.vcf -R ~/Desktop/hg19.fa
Intersect type: pos
Complement type: het_homo_alt
2015-12-11 03:56:31 INFO  AbstractVariantPool:134 - Opening test_empty.vcf for reading...
2015-12-11 03:56:31 INFO  AbstractVariantPool:134 - Opening test_2.vcf for reading...
2015-12-11 03:56:31 INFO  AbstractVariantPool:210 - Setting samples

Performing intersect...
2015-12-11 03:56:31 INFO  SetOperatorEngine:493 - Printing s1 to file: /home/rhunos/Desktop/res.vcf
2015-12-11 03:56:31 INFO  SetOperatorEngine:496 - 0 variant record(s) written.

Rhunos avatar Dec 11 '15 12:12 Rhunos