compbiocore / VariantVisualization.jl

Julia package powering VIVA, our tool for visualization of genomic variation data. Manual:
https://compbiocore.github.io/VariantVisualization.jl/stable/
Other
82 stars 13 forks source link

ERROR: LoadError: Unexpected end of input #101

Open tuh00621 opened 3 years ago

tuh00621 commented 3 years ago

I'm running VIVA in Google Colab. Julia is installed as well as the VIVA package, but I can't get it to save a visualization without crashing. Here is my command:

viva -f test_output.vcf -t Default_Options -s png

Output: ` Welcome to VIVA.

Loading dependency packages:

┌ Warning: ORCA.jl has been deprecated and all savefig functionality │ has been implemented directly in PlotlyBase itself. │ │ By implementing in PlotlyBase.jl, the savefig routines are automatically │ available to PlotlyJS.jl also. └ @ ORCA ~/.julia/packages/ORCA/U5XaN/src/ORCA.jl:8 ...

Finished loading packages!

Reading test_output.vcf ...

No filters applied. Large vcf files will take a long time to process and heatmap visualizations will lose resolution at this scale unless viewed in interactive html for zooming.

Loading VCF file into memory for visualization Selected 172743 variants with no filters applied Saving genotype heatmap ERROR: LoadError: Unexpected end of input Line: 0 Around: ...... ^

Stacktrace: [1] error(::String) at ./error.jl:33 [2] _error(::String, ::JSON.Parser.MemoryParserState) at /root/.julia/packages/JSON/3rsiS/src/Parser.jl:140 [3] byteat at /root/.julia/packages/JSON/3rsiS/src/Parser.jl:49 [inlined] [4] parse_value(::JSON.Parser.ParserContext{Dict{String,Any},Int64,true,nothing}, ::JSON.Parser.MemoryParserState) at /root/.julia/packages/JSON/3rsiS/src/Parser.jl:160 [5] parse(::String; dicttype::Type{T} where T, inttype::Type{Int64}, allownan::Bool, null::Nothing) at /root/.julia/packages/JSON/3rsiS/src/Parser.jl:460 [6] parse at /root/.julia/packages/JSON/3rsiS/src/Parser.jl:458 [inlined] [7] savefig(::PlotlyBase.Plot{Array{PlotlyBase.GenericTrace{Dict{Symbol,Any}},1},PlotlyBase.Layout{Dict{Symbol,Any}},Array{PlotlyBase.PlotlyFrame,1}}; width::Nothing, height::Nothing, scale::Nothing, format::String) at /root/.julia/packages/PlotlyBase/NxSlF/src/kaleido.jl:94 [8] savefig(::IOStream, ::PlotlyBase.Plot{Array{PlotlyBase.GenericTrace{Dict{Symbol,Any}},1},PlotlyBase.Layout{Dict{Symbol,Any}},Array{PlotlyBase.PlotlyFrame,1}}; width::Nothing, height::Nothing, scale::Nothing, format::String) at /root/.julia/packages/PlotlyBase/NxSlF/src/kaleido.jl:139 [9] (::PlotlyBase.var"#181#182"{Nothing,Nothing,Nothing,PlotlyBase.Plot{Array{PlotlyBase.GenericTrace{Dict{Symbol,Any}},1},PlotlyBase.Layout{Dict{Symbol,Any}},Array{PlotlyBase.PlotlyFrame,1}}})(::IOStream) at /root/.julia/packages/PlotlyBase/NxSlF/src/kaleido.jl:171 [10] open(::PlotlyBase.var"#181#182"{Nothing,Nothing,Nothing,PlotlyBase.Plot{Array{PlotlyBase.GenericTrace{Dict{Symbol,Any}},1},PlotlyBase.Layout{Dict{Symbol,Any}},Array{PlotlyBase.PlotlyFrame,1}}}, ::String, ::Vararg{String,N} where N; kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at ./io.jl:325 [11] open at ./io.jl:323 [inlined] [12] savefig(::PlotlyBase.Plot{Array{PlotlyBase.GenericTrace{Dict{Symbol,Any}},1},PlotlyBase.Layout{Dict{Symbol,Any}},Array{PlotlyBase.PlotlyFrame,1}}, ::String; format::Nothing, width::Nothing, height::Nothing, scale::Nothing) at /root/.julia/packages/PlotlyBase/NxSlF/src/kaleido.jl:170 [13] savefig(::PlotlyBase.Plot{Array{PlotlyBase.GenericTrace{Dict{Symbol,Any}},1},PlotlyBase.Layout{Dict{Symbol,Any}},Array{PlotlyBase.PlotlyFrame,1}}, ::String) at /root/.julia/packages/PlotlyBase/NxSlF/src/kaleido.jl:165 [14] savefig(::PlotlyJS.SyncPlot, ::String; k::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at /root/.julia/packages/PlotlyJS/m2Lzd/src/PlotlyJS.jl:48 [15] savefig at /root/.julia/packages/PlotlyJS/m2Lzd/src/PlotlyJS.jl:48 [inlined] [16] save_graphic(::PlotlyJS.SyncPlot, ::String, ::String, ::String, ::Bool) at /root/.julia/packages/VariantVisualization/1yoNl/src/vcf_utils_complete.jl:1479 [17] top-level scope at /usr/local/bin/viva:479 [18] include(::Function, ::Module, ::String) at ./Base.jl:380 [19] include(::Module, ::String) at ./Base.jl:368 [20] exec_options(::Base.JLOptions) at ./client.jl:296 [21] _start() at ./client.jl:506 in expression starting at /usr/local/bin/viva:407`

gtollefson commented 3 years ago

Hi @tuh00621,

Thank you for bringing this issue up. I apologize for my late response. Do you still need this to be resolved? I believe this is occurring because you are trying to plot too much data at once and the process is being killed. Have you tried running this with a filter (such as a gene list using -l)? If not, try plotting a smaller set of variants with less memory requirement, anywhere from 1-20,000.

Plotting more than a few thousand genes becomes difficult to interpret. Plotting more than 20,000 genes or so is very memory intensive and can cause some strange errors.

Let me know if you have success plotting a smaller variant set or if you have any more issues!

George

tuh00621 commented 3 years ago

@gtollefson I am trying to use a vcf with a pretty large number of variants, so it's probably the size like you said. I can try to use a smaller vcf to test or try filtering my vcf before running it through. It seems like there is some error in the source code from the error I got, but I am using a vcf with 172743 variants which is a lot more than you recommended. Thanks!

gtollefson commented 3 years ago

@tuh00621 Let me know how it goes running a smaller VCF file or by applying filters. We'll get it worked out!