nl_tokens: The fields are described at http : // genome . ucsc . edu / FAQ / FAQformat#format1 Fields 4 - 12 are optional
pl_tokens: function parseBedFeature ( f ) : Gene { var position = new ContigInterval ( f . contig , f . start , f . stop ) , x = f . rest . split ( '\t' ) ; // if no id, generate randomly for unique storage var id = x [ 0 ] ? x [ 0 ] : position . toString ( ) ; // e.g. ENST00000359597 var score = x [ 1 ] ? parseInt ( x [ 1 ] ) : 1000 ; // number from 0-1000 var strand = strToStrand ( x [ 2 ] ) ; // either +, - or . var codingRegion = ( x [ 3 ] && x [ 4 ] ) ? new Interval ( Number ( x [ 3 ] ) , Number ( x [ 4 ] ) ) : new Interval ( f . start , f . stop ) ; var geneId = x [ 9 ] ? x [ 9 ] : id ; var name = x [ 10 ] ? x [ 10 ] : "" ; // parse exons var exons = [ ] ; if ( x [ 7 ] && x [ 8 ] ) { // exons arrays sometimes have trailing commas var exonLengths = x [ 7 ] . replace ( / ,*$ / , '' ) . split ( ',' ) . map ( Number ) , exonStarts = x [ 8 ] . replace ( / ,*$ / , '' ) . split ( ',' ) . map ( Number ) ; exons = _ . zip ( exonStarts , exonLengths ) . map ( function ( [ start , length ] ) { return new Interval ( f . start + start , f . start + start + length ) ; } ) ; } return new Gene ( { position , id : id , score : score , strand : strand , codingRegion : codingRegion , geneId : geneId , name : <mask> , exons } ) ; }