/** Ċ Ġ* ĠThis Ġscript Ġhas Ġbeen Ġimplemented Ġto Ġgenerate Ġthe Ġdata Ġfor Ġthe Ġproject ĠRN AG allery Ġ( https :// github . com / f jo ss inet / RN AG allery ). Ċ Ġ* ĠIt Ġneeds ĠDocker . Ċ Ġ* ĠTo Ġrun Ġthis Ġscript : Ċ Ġ* Ġkotlin Ġ- cp Ġlocation _ of _ your _ rn artist core - jar - with - dependencies . jar Ġfetch P DB . k ts Ġyour _ output _ dir Ċ Ġ*/ Ċ Ċ import Ġjava . io .* Ċ import Ġio . github . f jo ss inet . rn artist . core . model .* Ċ import Ġio . github . f jo ss inet . rn artist . core . model . io .* Ċ import Ġio . github . f jo ss inet . rn artist . core . rn artist Ċ import Ġio . github . f jo ss inet . rn artist . core . ss Ċ Ċ val Ġpdb Ġ= ĠP DB () Ċ val Ġids Ġ= Ġpdb . query () Ċ val Ġstatus File Ġ= ĠFile ("/ docker / status . md ") Ċ val Ġstatus Ġ= Ġmutable ListOf < List < String >>() Ċ if Ġ( status File . exists ()) Ġ{ ĊĠĠĠ Ġstatus File . read Lines (). forEach Ġ{ Ġline Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġtokens Ġ= Ġline . split ('| ') ĊĠĠĠĠĠĠĠ Ġif Ġ( tokens . size Ġ> Ġ 1 Ġ&& Ġ Ġ! tokens [ 1 ]. contains ( Regex ("( P DB |- +) "))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus . add ( tokens . slice ( 1 .. tokens . size Ġ- Ġ 1 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ var Ġnon _ annotated Ġ= Ġ 0 Ċ var Ġnon _ he lices Ġ= Ġ 0 Ċ var Ġstored Ġ= Ġ 0 Ċ var Ġpdb _ not _ available Ġ= Ġ 0 Ċ ids . forEach Ġ{ Ġpdb Id Ġ-> ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! status . any Ġ{ Ġit . first (). trim (). equals ("[ ${ pdb Id } ]( https :// www . rc sb . org / structure /${ pdb Id }) ") }) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 2 0 0 0 ) Ġ// avoid Ġf lood ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpdb File Ġ= ĠFile ("/ docker /${ pdb Id }. pdb ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! pdb File . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Downloading Ġ${ pdb Id } Ġ(${ ids . indexOf ( pdb Id ) Ġ+ Ġ 1 }/${ ids . size }) ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpdb File . write Text ( pdb . getEntry ( pdb Id ). read Text ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Drawing Ġ${ pdb Id } Ġ(${ ids . indexOf ( pdb Id ) Ġ+ Ġ 1 }/${ ids . size }) ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt ert i ary Structures Ġ= Ġparse P DB ( FileReader ( pdb File )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpdb Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Ġ= Ġpdb File . absolute Path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġmutable ListOf ("[ ${ pdb Id } ]( https :// www . rc sb . org / structure /${ pdb Id }) ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . add ( it . r na . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfound Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( ts Ġin Ġt ert i ary Structures ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . r na . name . equals ( ts . r na . name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfound Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . r na . length Ġ== Ġts . r na . length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . add (" N ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . add (" Y ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! found ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . add (" Y ") Ġ Ġ// should Ġnever Ġhappen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it . he lices . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrn artist Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Ġ= Ġ"/ docker /${ pdb Id }. json " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtheme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetails _ lvl Ġ= Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecondary Structures . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. forEach Ġ{ Ġdrawing Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . add (" v 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . add ("[ View ]( https :// raw . githubusercontent . com / f jo ss inet / RN AG allery / main / P DB /${ pdb Id }_${ it . r na . name }. json )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus . add ( s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstored ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnon _ he lices ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Already Ġdone Ġ${ pdb Id }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// open Ġthe Ġjson Ġfile Ġ( if Ġany ) Ġand Ġget Ġthe Ġcurrent Ġversion ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠFileNotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnon _ annotated ++ ĊĠĠĠĠĠĠĠ Ġ// status . add ( listOf ("[ ${ pdb Id } ]( https :// www . rc sb . org / structure /${ pdb Id })", Ġ"", Ġ"", Ġ" No Ġannotation ", Ġ"", Ġ"", Ġ"")) ĊĠĠĠ Ġ} Ġcatch Ġ( e : Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpdb _ not _ available ++ ĊĠĠĠĠĠĠĠ Ġprintln (" Entry Ġnot Ġavailable : Ġ${ pdb Id }") ĊĠĠĠĠĠĠĠ Ġprintln ( e . message ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ status File . write Text (""" Ċ List Ġof ĠRNA Ġ 3 D Ġstructures Ġfrom Ġthe ĠPro tein ĠData Bank Ġannotated Ġwith Ġthe Ġalgorithm Ġ[ RNA VIEW ]( http :// n db server . rut gers . edu / n db module / services / download / r nav iew . html ) Ġand Ġdrawn Ġwith Ġthe Ġframework Ġ[ RNA rt ist Core ]( https :// github . com / f jo ss inet / RNA rt ist Core ). Ċ Ċ For Ġeach Ġentry , Ġthe Ġlist Ġprovides Ġthe Ġfollowing Ġdetails : Ċ Ċ - ĠP DB ĠID : Ġclick Ġon Ġthe Ġlink Ġto Ġview Ġthe ĠP DB Ġentry Ċ - ĠChain Ġidentifier : Ġname Ġof Ġthe ĠRNA Ġchain Ġfound Ġin Ġthe Ġ 3 D Ġstructure Ċ - ĠChain Ġmodified : Ġthe ĠRNA VIEW Ġalgorithm Ġcan Ġexclude Ġres id ues Ġdescribed Ġin Ġthe ĠP DB Ġfile Ġif Ġit Ġhas Ġdifficult ies Ġto Ġuse Ġthem . Ġ' Y ' Ġmeans Ġthat Ġthe Ġchain Ġhas Ġbeen Ġmodified Ġduring Ġthe Ġ 2 D Ġannotation , Ġ' N ' Ġnot . Ċ - Ġstatus : Ġthe Ġstatus Ġof Ġthe ĠJSON Ġfiles . Ġv 1 Ġmeans Ġfirst Ġrough Ġoutput Ġfrom Ġthe Ġ 3 D Ġstructure Ġannotation . ĠA bove Ġ 1 , Ġthe Ġdrawing Ġhas Ġbeen Ġimproved Ġwith Ġthe Ġgraphical Ġtool Ġ[ RNA rt ist ]( https :// github . com / f jo ss inet / RNA rt ist ) Ċ - ĠJSON : Ġa Ġfile Ġto Ġbe Ġopened Ġwith Ġ[ RNA rt ist ]( https :// github . com / f jo ss inet / RNA rt ist ) Ċ Ċ Statistics : ĠĊ Ċ ${ ids . size } ĠP DB Ġentries Ġprocessed Ġ( X - ray Ġstructures Ġcontaining Ġat Ġleast Ġone ĠRNA Ġchain Ġand Ġwith Ġa Ġresolution Ġless Ġor Ġequal Ġto Ġ 3 . 0 ĠÃ ħ ). ĠThey Ġare Ġdivided Ġinto : Ċ Ċ - Ġ${ ids . size Ġ- Ġpdb _ not _ available Ġ- Ġnon _ annotated } Ġentries Ġannotated Ġsuccessfully Ċ - Ġ${ non _ he lices Ġ+ Ġstored } Ġmolec ular Ġchains Ġannotated Ġsuccessfully Ċ - Ġ${ stored } Ġmolec ular Ġchains Ġcontaining Ġat Ġleast Ġone Ġhe lix Ġand Ġselected Ġfor Ġthe Ġgallery ĊĊ Ċ """. trim Indent ()) Ċ Ċ status File . append Text ("| ĠP DB ĠID Ġ| ĠChain Ġidentifier Ġ Ġ| ĠChain Ġmodified Ġ| ĠStatus Ġ| JSON Ġ|\ n ") Ċ status File . append Text ("| Ġ:------ : Ġ| Ġ:------ : Ġ| Ġ:------ : Ġ| Ġ: ---- : Ġ| Ġ: ---- : Ġ|\ n ") Ċ status . sortBy Ġ{ Ġit . first () Ġ} Ċ status . forEach Ġ{ ĊĠĠĠ Ġstatus File . append Text ("| ${ it [ 0 ]} | ${ it [ 1 ]} | ${ it [ 2 ]} | ${ it [ 3 ]} | ${ it [ 4 ]} |\ n ") Ċ }