Question: rtracklayer issue: Tracks don't show up
gravatar for chrarnold
4.0 years ago by
chrarnold0 wrote:

Hi there,

I am new to rtracklayer and I tried to reproduce the examples provided in the documentation. However, there seems to be an issue and I cannot reproduce it. If anyone could tell me what is wrong, it is appreciated...

This is my code, in a nutshell:

session = browserSession()
session$targets = targetTrack # targetTrack is GRanges object

The track is not found in my session:

grep ('targets', trackNames (session),, v=T)

TS miRNA sites

Throws an error : Error in resolveTrackIndex(x, i) : Unknown track(s): targets
view <- browserView(session, targetTrack[1] , pack="targets")  

R version 3.1.3 (2015-03-09)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 14.04.1 LTS

[1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=de_DE.UTF-8        LC_COLLATE=en_US.UTF-8     LC_MONETARY=de_DE.UTF-8  
[6] LC_MESSAGES=en_US.UTF-8    LC_PAPER=de_DE.UTF-8       LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C           

attached base packages:
[1] stats4    parallel  stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] BiocInstaller_1.16.2      DESeq2_1.6.3              RcppArmadillo_0.4.650.1.1 Rcpp_0.11.5               Rsamtools_1.18.3        
[6] Biostrings_2.34.1         XVector_0.6.0             BiocParallel_1.0.3        rtracklayer_1.26.3        GenomicRanges_1.18.4    
[11] GenomeInfoDb_1.2.5        IRanges_2.0.1             S4Vectors_0.4.0           BiocGenerics_0.12.1      

loaded via a namespace (and not attached):
[1] acepack_1.3-3.3         annotate_1.44.0         AnnotationDbi_1.28.2    base64enc_0.1-2         BatchJobs_1.6           BBmisc_1.9            
[7] Biobase_2.26.0          bitops_1.0-6            brew_1.0-6              checkmate_1.5.2         cluster_2.0.1           codetools_0.2-11      
[13] colorspace_1.2-6        DBI_0.3.1               digest_0.6.8            fail_1.2                foreach_1.4.2           foreign_0.8-63        
[19] Formula_1.2-1           genefilter_1.48.1       geneplotter_1.44.0      GenomicAlignments_1.2.2 ggplot2_1.0.1           grid_3.1.3            
[25] gtable_0.1.2            Hmisc_3.15-0            iterators_1.0.7         lattice_0.20-31         latticeExtra_0.6-26     locfit_1.5-9.1        
[31] MASS_7.3-40             munsell_0.4.2           nnet_7.3-9              plyr_1.8.1              proto_0.3-10            RColorBrewer_1.1-2    
[37] RCurl_1.95-4.5          reshape2_1.4.1          rpart_4.1-9             RSQLite_1.0.0           scales_0.2.4            sendmailR_1.2-1       
[43] splines_3.1.3           stringr_0.6.2           survival_2.38-1         tools_3.1.3             XML_3.98-1.1            xtable_1.7-4          
[49] zlibbioc_1.12.0       


Thanks, Christian

rtracklayer bug session • 938 views
ADD COMMENTlink modified 4.0 years ago by Michael Lawrence11k • written 4.0 years ago by chrarnold0

I heard offline that it worked for the demo track, but not for your data. Please make your data available to me somehow, so that I can reproduce. Thanks!

ADD REPLYlink modified 4.0 years ago • written 4.0 years ago by Michael Lawrence11k

A proxy? Interesting point, But upon testing, this does not seem to be the case. For example, using the cpneTrack data from the vignette, I can successfully load something to the session. However, with GRanges or RangedData that I constructed by myself (or even using the import function from the package that reads from a regular BED file) it simply does not work... Any other suggestions? I could send you example code that illustrates the problem

What puzzles me is the lack of any warning or error messages, it is just completely mysterious why the track is not there...

ADD REPLYlink written 4.0 years ago by chrarnold0

Please send the code/data.

ADD REPLYlink written 4.0 years ago by Michael Lawrence11k
Hi Michael, ok so I tested a bit further and it is just weird... It doesn't make any sense what I describe, but this is what I observe right now:

I have a data frame in BED format (100 rows only, see here:

session = browserSession()
restoredTrack <- import("targets.bed", asRangedData = FALSE)
track(session, "targetsRestored") =  restoredTrack

Error in head(session[["targetsRestored"]], 20) :
  error in evaluating the argument 'x' in selecting a method for function 'head': Error in track(ucscTableQuery(object, track = name, ...)) :
  error in evaluating the argument 'object' in selecting a method for function 'track': Error in normArgTrack(track, trackids) : Unknown track: targetsRestored

On a related issue.

track(session, "targetsRestored") =  restoredTrack[1:100]

doesn't throw an error message, but

track(session, "targetsRestored") =  restoredTrack[1:10]

Error in if (!all(unlist(lapply(split(object, strand), isStrandDisjoint)))) { :
  missing value where TRUE/FALSE needed


Strangely, if I read in the file with just 10 entries, everything works (you can recapitulate that by deleting lines 11-100 in the file). However, if I add the 11th line, I get the error message as above.

A complete mystery to me... Again, with the cpneTrack from the vignette, everything is fine...


Any ideas?


ADD REPLYlink written 4.0 years ago by chrarnold0
Answer: rtracklayer issue: Tracks don't show up
gravatar for Michael Lawrence
4.0 years ago by
United States
Michael Lawrence11k wrote:

Well this is pretty surprising and embarrassing but it turns out that rtracklayer outputs invalid BED data when the strand is "*". Although not documented in the BED "spec", those "*" should become ".". I have fixed that in devel, or for now you can just set the strand to "+" before uploading. I also fixed the last problem you mentioned.

ADD COMMENTlink written 4.0 years ago by Michael Lawrence11k

Thanks Michael for looking into this. 

The import function needs to have the strand in the sixth and last column, as expected. In order to use the export function, strand values must be "+", "-", or "*" and not ".", otherwise, I get a

Error in .local(x, ...) : strand values must be in '+' '-' '*'

message. Indeed, if I change the "*" strand to "+", it works!

However, "*" can then not be the only issue because when you do

export(cpneTrack, "cpneTrack.bed")

, you also have "*" as strand in the last column, and

session = browserSession()
export(cpneTrack, "cpneTrack.bed")
restoredTrack2 <- import("cpneTrack.bed", asRangedData = FALSE)
track(session, "cpneRestored") =  restoredTrack2

works fine for me.

So, the questions I have are:

1) I don't understand why it works with and not with, the files seem to have an identical structure...

2) With, all scores are 0 after adding it to the session (they are not zero after using import, so it must be the track function or the UCSC that converts them to 0). If I set all scores to 1, it works. If I divide all scores by their maximum so that all values are between 0 and 1, it does not work. However, it again works for cpneTrack, and I fail to understand why.

There must ba another requirement but what? According to, scores must be between 0 and 1000, which is true for my data (Range: 0.1418651-141.9687500). I think it would be very useful to check this and print an error or a warning for the user so he knows if the scores have been converted to 0 unless, of course, this is done silently by the UCSC.




ADD REPLYlink modified 4.0 years ago • written 4.0 years ago by chrarnold0
Please log in to add an answer.


Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 16.09
Traffic: 166 users visited in the last hour