package Ġorg . jetbrains . bio . genome Ċ Ċ import Ġcom . google . common . math . Int Math Ċ import Ġg nu . tro ve . list . array . T Float ArrayList Ċ import Ġorg . apache . commons . csv . CSV Format Ċ import Ġorg . apache . log 4 j . Logger Ċ import Ġorg . jetbrains . bio . Configuration Ċ import Ġorg . jetbrains . bio . big . Big W ig File Ċ import Ġorg . jetbrains . bio . big . Fixed Step Section Ċ import Ġorg . jetbrains . bio . genome . sequence . N ucleotide Ċ import Ġorg . jetbrains . bio . genome . sequence . Two Bit Writer Ċ import Ġorg . jetbrains . bio . io . Fast a Record Ċ import Ġorg . jetbrains . bio . io . write Ċ import Ġorg . jetbrains . bio . util . buffered Writer Ċ import Ġorg . jetbrains . bio . util . create Directories Ċ import Ġorg . jetbrains . bio . util . div Ċ import Ġorg . jetbrains . bio . util . with TempFile Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . Thread Local Random Ċ import Ġjava . util . stream . Collectors Ċ Ċ /** ĠA Ġgenerator Ġfor Ġthe Ġfake Ġ" to 1 " Ġgenome Ġbuild . Ġ*/ Ċ @ Suppress (" unused ") Ċ object ĠTest Organ ism Data Generator Ġ{ ĊĠĠĠ Ġprivate Ġval ĠLOG Ġ= ĠLogger . getLogger ( Test Organ ism Data Generator :: class . java ) ĊĊĠĠĠ Ġprivate Ġval ĠCH RO MO SO MES _ SIZ ES Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" chr 1 " Ġto ĠInt Math . pow ( 1 0 , Ġ 7 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" chr 2 " Ġto ĠInt Math . pow ( 1 0 , Ġ 6 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" chr 3 " Ġto ĠInt Math . pow ( 1 0 , Ġ 6 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" chr X " Ġto ĠInt Math . pow ( 1 0 , Ġ 6 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" chr M " Ġto ĠInt Math . pow ( 1 0 , Ġ 6 ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ ĠLOG . info (" User Ġhome : Ġ'${ System . getProperty (" user . home ", Ġ" n / a ") }' ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠEnsure Ġgenome s Paths Ġinitialized ĊĠĠĠĠĠĠĠ ĠConfiguration . genome s Path . create Directories () ĊĊĠĠĠĠĠĠĠ ĠLOG . info (" Gen ome s Ġpath : Ġ${ Configuration . genome s Path }") ĊĠĠĠĠĠĠĠ Ġval Ġdata Path Ġ= ĠConfiguration . genome s Path Ġ/ ĠGen ome . TEST _ ORG AN IS M _ BUILD ĊĠĠĠĠĠĠĠ Ġ// ĠEnsure Ġdata Ġpath Ġinitialized ĊĠĠĠĠĠĠĠ Ġdata Path . create Directories () ĊĠĠĠĠĠĠĠ ĠLOG . info (" Generating Ġtest Ġorgan ism Ġinto Ġ$ data Path ") ĊĊĠĠĠĠĠĠĠ ĠLOG . info (" Generating Ġchrom . sizes ") ĊĠĠĠĠĠĠĠ Ġval Ġbuild Ġ= ĠGen ome . TEST _ ORG AN IS M _ BUILD ĊĠĠĠĠĠĠĠ Ġval Ġchrom Sizes Path Ġ= ĠConfiguration . genome s Path Ġ/ Ġbuild Ġ/ Ġ"$ build . chrom . sizes " ĊĠĠĠĠĠĠĠ ĠCSV Format . TD F . print ( chrom Sizes Path . buffered Writer ()). use Ġ{ Ġcsv Printer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCH RO MO SO MES _ SIZ ES . forEach Ġ{ Ġname , Ġsize Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcsv Printer . print Record ( name , Ġsize . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠLOG . info (" Generating Ġother Ġfiles ") ĊĠĠĠĠĠĠĠ Ġval Ġgenome Ġ= ĠGen ome [ Gen ome . TEST _ ORG AN IS M _ BUILD ] ĊĠĠĠĠĠĠĠ Ġgenerate Sequence ( genome ) ĊĠĠĠĠĠĠĠ Ġgenerate Tran scripts ( genome ) ĊĠĠĠĠĠĠĠ Ġgenerate Cent rom ere ( genome ) ĊĠĠĠĠĠĠĠ Ġgenerate Cy to bands ( genome ) ĊĠĠĠĠĠĠĠ Ġgenerate Repe ats ( genome ) ĊĠĠĠĠĠĠĠ Ġgenerate CG I ( genome ) ĊĠĠĠĠĠĠĠ Ġgenerate Map ability ( genome ) ĊĠĠĠĠĠĠĠ ĠLOG . info (" Done ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerates Ġ 2 bit Ġsequences . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmax G aps Ġmaximum Ġnumber Ġof Ġg aps Ġ( sequences Ġof Ġconsecutive ĠN s ) ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġa Ġchromosome . ĊĠĠĠĠ Ġ* Ġ@ param Ġmax Gap Length Ġmaximum Ġgap Ġlength . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Sequence ( genome : ĠGen ome , Ġmax G aps : ĠInt Ġ= Ġ 1 0 , Ġmax Gap Length : ĠInt Ġ= Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLOG . info (" Generating ĠFAST A Ġsequence ") ĊĠĠĠĠĠĠĠ Ġwith TempFile ( genome . build , Ġ". fa ") Ġ{ Ġfast a Path Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠThread Local Random . current () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCH RO MO SO MES _ SIZ ES . as Sequence (). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( name , Ġlength ) Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsequence Ġ= Ġr . ints ( length . to Long (), Ġ 0 , ĠN ucleotide . ALPH AB ET . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map To Obj Ġ{ ĠN ucleotide . ALPH AB ET [ it ]. toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect ( Collectors . join ing ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toCharArray () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnum G aps Ġ= ĠMath . min ( r . nextInt ( max G aps Ġ+ Ġ 1 ), Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġnum G aps ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġcould Ġdo Ġbetter Ġhere Ġby Ġgenerating Ġnon - over lapping ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġranges , Ġbut Ġit 's Ġnot Ġworth Ġthe Ġeffort . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgap Length Ġ= Ġr . nextInt ( max Gap Length ) Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgap Offset Ġ= Ġr . nextInt ( length Ġ- Ġgap Length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( gap Offset Ġuntil Ġgap Offset Ġ+ Ġgap Length ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsequence [ it ] Ġ= Ġ' n ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFast a Record ( name , ĠString ( sequence )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. as Iterable (). write ( fasta Path ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . info (" Con verting ĠFAST A Ġsequence Ġto Ġ 2 bit ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTwo Bit Writer . convert ( fasta Path , Ġgenome . two Bit Path ( false )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerates ĠJSON - serialized Ġtranscript Ġannotations . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠTran scripts ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Tran scripts ( genome : ĠGen ome ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLOG . info (" Generating Ġtranscript Ġannotations ") ĊĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠThread Local Random . current () ĊĊĠĠĠĠĠĠĠ Ġgenome . genes G tf Path ( false ). buffered Writer (). use Ġ{ Ġw Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtran scripts Ġ= ĠArrayList < Transcript >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( name Ġin ĠCH RO MO SO MES _ SIZ ES . keys . sorted ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchromosome Ġ= ĠCh rom osome ( genome , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= ĠCH RO MO SO MES _ SIZ ES [ name ] !! ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurrent End Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġgene Number Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( length Ġ- Ġcurrent End Ġ> Ġ 6 e 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgene Symbol Ġ= Ġ" s img ene .$ name .$ gene Number ". toUpperCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Start Ġ= Ġcurrent End Ġ+ Ġ 1 0 0 0 0 Ġ+ Ġr . nextInt ( 4 0 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Length Ġ= Ġ 1 0 0 Ġ+ ĠMath . min ( length Ġ- Ġcurrent Start Ġ- Ġ 1 0 0 0 0 , Ġ 1 0 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstr and Ġ= Ġif Ġ( r . next Boolean ()) ĠStr and . PLUS Ġelse ĠStr and . MINUS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtranscript Ġ= Ġgenerate Transcript ( gene Number , Ġgene Symbol , Ġchromosome , Ġstr and , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Start , Ġcurrent Length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtran scripts . add ( transcript ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent End Ġ= Ġcurrent Start Ġ+ Ġcurrent Length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgene Number ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite G tf ( w , Ġtran scripts ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠHere Ġbe Ġdrag ons ! Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Transcript ( gene Number : ĠInt , Ġgene Symbol : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchromosome : ĠCh rom osome , Ġstr and : ĠStr and , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset : ĠInt , Ġlength : ĠInt ): ĠTran script Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ ensemb l Id Ġ= Ġ" EN ST $ gene Symbol " ĊĊĠĠĠĠĠĠĠ Ġval Ġmin Ex on Length Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġval Ġmin In tron Length Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠThread Local Random . current () ĊĠĠĠĠĠĠĠ Ġval Ġex on Count Ġ= Ġ 1 Ġ+ Ġr . nextInt ( 8 ) ĊĠĠĠĠĠĠĠ Ġval Ġleft Fl ank ing In tron Ġ= Ġr . next Boolean () ĊĠĠĠĠĠĠĠ Ġval Ġright Fl ank ing In tron Ġ= Ġr . next Boolean () ĊĠĠĠĠĠĠĠ Ġval Ġex on Starts Ġ= ĠArrayList < Int >( ex on Count ) ĊĠĠĠĠĠĠĠ Ġval Ġex on End s Ġ= ĠArrayList < Int >( ex on Count ) ĊĠĠĠĠĠĠĠ Ġvar Ġlength Pool Ġ= Ġ( length Ġ- Ġmin Ex on Length Ġ* Ġex on Count Ġ- Ġmin In tron Length Ġ* Ġ( ex on Count Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġ( if Ġ( left Fl ank ing In tron ) Ġmin In tron Length Ġelse Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġif Ġ( right Fl ank ing In tron ) Ġmin In tron Length Ġelse Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġex on Starts . add ( 0 , Ġif Ġ( left Fl ank ing In tron ) Ġoffset Ġ+ Ġmin In tron Length Ġ+ Ġr . nextInt ( length Pool ) Ġelse Ġoffset ) ĊĠĠĠĠĠĠĠ Ġif Ġ( left Fl ank ing In tron ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġin tron Len Ġ= Ġex on Starts [ 0 ] Ġ- Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlength Pool Ġ-= Ġin tron Len Ġ- Ġmin In tron Length Ġ// Ġlength Ġpool Ġalready Ġtakes Ġin Ġconsideration Ġmin Ġlengths ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġex on Count Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex on End s . add ( i , Ġex on Starts [ i ] Ġ+ Ġmin Ex on Length Ġ+ Ġr . nextInt ( length Pool )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġex on Len Ġ= Ġex on End s [ i ] Ġ- Ġex on Starts [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlength Pool Ġ-= Ġex on Len Ġ- Ġmin Ex on Length Ġ// Ġlength Ġpool Ġalready Ġtakes Ġin Ġconsideration Ġmin Ġlengths ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex on Starts . add ( i Ġ+ Ġ 1 , Ġex on End s [ i ] Ġ+ Ġmin In tron Length Ġ+ Ġr . nextInt ( length Pool )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġin tron Len Ġ= Ġex on Starts [ i Ġ+ Ġ 1 ] Ġ- Ġex on End s [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlength Pool Ġ-= Ġin tron Len Ġ- Ġmin In tron Length ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġex on End s . add ( ex on Count Ġ- Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( right Fl ank ing In tron ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex on Starts [ ex on Count Ġ- Ġ 1 ] Ġ+ Ġmin Ex on Length Ġ+ Ġr . nextInt ( length Pool ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ+ Ġlength ) ĊĊĠĠĠĠĠĠĠ Ġval Ġex on Ranges Ġ= Ġ( 0 Ġuntil Ġex on Count ). map Ġ{ ĠRange ( ex on Starts [ it ], Ġex on End s [ it ]) Ġ}. sorted () ĊĊĠĠĠĠĠĠĠ Ġval Ġm R NAL ength Ġ= Ġex on End s . sum () Ġ- Ġex on Starts . sum () ĊĠĠĠĠĠĠĠ Ġval Ġcds Length Ġ= Ġif Ġ( gene Number Ġ% Ġ 5 Ġ== Ġ 0 Ġ|| Ġm R NAL ength Ġ< Ġ 3 ) Ġ 0 Ġelse Ġr . nextInt ( m R NAL ength Ġ/ Ġ 3 ) Ġ* Ġ 3 ĊĊĠĠĠĠĠĠĠ Ġval Ġcds Range : ĠRange ? ĊĠĠĠĠĠĠĠ Ġval Ġut r 3 End 5 : ĠInt ĊĠĠĠĠĠĠĠ Ġif Ġ( cds Length Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcds Relative Start Offset Ġ= Ġr . nextInt ( m R NAL ength Ġ- Ġcds Length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcds Start Ex on Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cds Relative Start Offset Ġ>= Ġex on End s [ cds Start Ex on ] Ġ- Ġex on Starts [ cds Start Ex on ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcds Relative Start Offset Ġ-= Ġex on End s [ cds Start Ex on ] Ġ- Ġex on Starts [ cds Start Ex on ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ cds Start Ex on ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcds Start Ġ= Ġex on Starts [ cds Start Ex on ] Ġ+ Ġcds Relative Start Offset ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cds Relative Start Offset Ġ+ Ġcds Length Ġ> Ġex on End s [ cds Start Ex on ] Ġ- Ġex on Starts [ cds Start Ex on ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcds Relative Start Offset Ġ-= Ġex on End s [ cds Start Ex on ] Ġ- Ġex on Starts [ cds Start Ex on ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ cds Start Ex on ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcds End Ġ= Ġex on Starts [ cds Start Ex on ] Ġ+ Ġcds Relative Start Offset Ġ+ Ġcds Length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcds Range Ġ= ĠRange ( cds Start , Ġcds End ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġut r 3 End 5 Ġ= ĠG tf Reader . determine UT R 3 End 5 ( cds Range . on ( chrom osome , Ġstr and ), Ġex on Ranges , Ġ ensemb l Id ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcds Range Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġut r 3 End 5 Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠTran script ( ensemb l Id , Ġ" EN SG $ gene Symbol ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgene Symbol , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocation ( offset , Ġoffset Ġ+ Ġlength , Ġchromosome , Ġstr and ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcds Range , Ġut r 3 End 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex on Ranges ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerates Ġcent rom ere Ġannotations Ġin ĠU CSC Ġformat . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠG aps ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Cent rom ere ( genome : ĠGen ome ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLOG . info (" Generating Ġcent rom ere Ġannotations ") ĊĠĠĠĠĠĠĠ Ġgenome . g aps Path . buffered Writer (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprinter Ġ= ĠG aps . FORMAT . print ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( chrom osome Ġin Ġgenome . chrom osome s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprinter . print Record ( 1 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchromosome . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchromosome . length Ġ/ Ġ 2 Ġ- Ġ 1 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchromosome . length Ġ/ Ġ 2 Ġ+ Ġ 1 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", Ġ"", Ġ 2 0 0 0 , Ġ" cent rom ere ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerates Ġcy to band Ġannotations Ġin ĠU CSC Ġformat . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠCy to B ands ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Cy to bands ( genome : ĠGen ome ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLOG . info (" Generating Ġcy to band Ġannotations ") ĊĠĠĠĠĠĠĠ Ġgenome . cy to bands Path !!. buffered Writer (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprinter Ġ= ĠCy to B ands . FORMAT . print ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( i , Ġchromosome ) Ġin Ġgenome . chrom osome s . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprinter . print Record ( chrom osome . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchromosome . length Ġ/ Ġ 2 Ġ- Ġ 1 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchromosome . length Ġ/ Ġ 2 Ġ+ Ġ 1 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" q $ i .${ i Ġ% Ġ 3 Ġ+ Ġ 1 }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" unknown Ġregion Ġtag ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerates Ġ( stub Ġ! ) Ġrepeat Ġannotations Ġin ĠU CSC Ġformat . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠRe pe ats ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Repe ats ( genome : ĠGen ome ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLOG . info (" Generating Ġrepeat Ġannotations Ġ( stub )") ĊĠĠĠĠĠĠĠ Ġgenome . repe ats Path !!. buffered Writer (). use Ġ{ Ġw Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġthe Ġfirst Ġline Ġfrom Ġmm 9 Ġannotations . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . write (" 6 0 7 \ t 6 8 7 \ t 1 7 4 \ t 0 \ t 0 \ t chr 1 \ t 3 0 0 0 0 0 1 \ t 3 0 0 0 1 5 6 \ t - 1 9 4 1 9 5 2 7 6 \ t -" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t L 1 _ M ur 2 \ t LINE \ t L 1 \ t - 4 3 1 0 \ t 1 5 6 7 \ t 1 4 1 3 \ t 1 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerates Ġ( stub Ġ! ) Ġc pg Ġis lands Ġannotations Ġin ĠU CSC Ġformat . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠRe pe ats ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate CG I ( genome : ĠGen ome ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLOG . info (" Generating Ġrepeat Ġannotations Ġ( stub )") ĊĠĠĠĠĠĠĠ Ġgenome . cp g Is lands Path !!. buffered Writer (). use Ġ{ Ġw Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġthe Ġfirst Ġline Ġfrom Ġh g 1 9 Ġannotations . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . write (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| 5 8 5 ĉ chr 1 ĉ 2 8 7 3 5 ĉ 2 9 8 1 0 ĉ Cp G : Ġ 1 1 6 ĉ 1 0 7 5 ĉ 1 1 6 ĉ 7 8 7 ĉ 2 1 . 6 ĉ 7 3 . 2 ĉ 0 . 8 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| 5 8 6 ĉ chr 1 ĉ 1 3 5 1 2 4 ĉ 1 3 5 5 6 3 ĉ Cp G : Ġ 3 0 ĉ 4 3 9 ĉ 3 0 ĉ 2 9 5 ĉ 1 3 . 7 ĉ 6 7 . 2 ĉ 0 . 6 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin (). trim ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMap ability Ġis Ġa Ġw ig gle Ġtrack Ġwith Ġ 0 Ġfor Ġnon - map able Ġn ucleot ides Ġand Ġ 1 Ġfor Ġmap able Ġones . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt 's Ġgenerated Ġin Ġthe Ġsame Ġfolder Ġas Ġ" chrom . sizes " Ġwith Ġa Ġfilename Ġ" map ability . big W ig ". ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠWe Ġonly Ġgenerate Ġmap ability Ġfor Ġchr X . ĊĠĠĠĠ Ġ* ĠThis Ġis Ġdone Ġto Ġtest Ġthat Ġthe Ġgenome Ġmean Ġsubstitution Ġfor Ġno - data Ġchromosome Ġworks Ġcorrectly . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Map ability ( genome : ĠGen ome ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLOG . info (" Generating Ġmap ability Ġbig W ig ") ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġgenome . chrom Sizes Path . parent Ġ/ Ġ" map ability . big W ig " ĊĠĠĠĠĠĠĠ Ġval Ġg q Ġ= Ġgenome . to Query () ĊĠĠĠĠĠĠĠ Ġval Ġchr X Ġ= Ġg q [" chr X "] !! ĊĠĠĠĠĠĠĠ Ġval Ġrandom Ġ= ĠThread Local Random . current () ĊĠĠĠĠĠĠĠ Ġval Ġsection Ġ= ĠFixed Step Section ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchr X . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues Ġ= ĠT Float ArrayList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġchr X . length ). map Ġ{ Ġif Ġ( random . nextInt ( 5 ) Ġ== Ġ 4 ) Ġ 0 . 0 f Ġelse Ġ 1 . 0 f Ġ}. toFloat Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠBig W ig File . write ( listOf ( section ), Ġg q . get (). map Ġ{ Ġit . name Ġto Ġit . length Ġ}, Ġpath ) ĊĠĠĠ Ġ} Ċ }