BioJava - BioJava
| Originale forfattere | Andreas Prlić |
|---|---|
| Utvikler (er) | Amr ALHOSSARY, Andreas Prlic, Dmytro Guzenko, Hannes Brandstätter-Müller, Thomas Down, Michael L Heuer, Peter Troshin, JianJiong Gao, Aleix Lafita, Peter Rose, Spencer Bliven |
| Første utgivelse | 2002 |
| Stabil utgivelse | 5.2.1 / 5. februar 2019
|
| Oppbevaringssted | github |
| Skrevet inn | Java |
| Plattform | Nettleser med Java SE |
| Tilgjengelig i | Engelsk |
| Type | Bioinformatikk |
| Tillatelse | Mindre GPL 2.1 |
| Nettsted | biojava |
BioJava er et programvare med åpen kildekode dedikert til å tilby Java- verktøy for å behandle biologiske data. BioJava er et sett med biblioteksfunksjoner skrevet på programmeringsspråket Java for å manipulere sekvenser, proteinstrukturer, filanalysatorer, Common Object Request Broker Architecture (CORBA) interoperabilitet, Distributed Annotation System (DAS), tilgang til AceDB , dynamisk programmering og enkel statistikk rutiner. BioJava støtter et stort spekter av data, fra DNA- og proteinsekvenser til nivået av 3D -proteinstrukturer. BioJava -bibliotekene er nyttige for å automatisere mange daglige og verdslige bioinformatikkoppgaver, for eksempel å analysere en Protein Data Bank (PDB) -fil, samhandle med Jmol og mange flere. Dette applikasjonsprogrammeringsgrensesnittet (API) gir forskjellige filparersere, datamodeller og algoritmer for å lette arbeidet med standard dataformater og muliggjør rask applikasjonsutvikling og analyse.
Andre prosjekter fra BioJava inkluderer rcsb-sequenceviewer, biojava-http, biojava-spark og rcsb-viewers.
Funksjoner
BioJava tilbyr programvaremoduler for mange av de typiske oppgavene for programmering av bioinformatikk. Disse inkluderer:
- Få tilgang til nukleotid- og peptidsekvensdata fra lokale og eksterne databaser
- Transformere formater for database/ filoppføringer
- Proteinstruktur analyse og manipulering
- Manipulere individuelle sekvenser
- Søker etter lignende sekvenser
- Opprette og manipulere sekvensjusteringer
Historie og publikasjoner
BioJava-prosjektet vokste ut av arbeid av Thomas Down og Matthew Pocock for å lage et API for å forenkle utviklingen av Java-baserte bioinformatikkverktøy. BioJava er et aktivt åpen kildekode -prosjekt som er utviklet over mer enn 12 år og av mer enn 60 utviklere. BioJava er et av flere Bio* -prosjekter som er utformet for å redusere kodeduplisering. Eksempler på slike prosjekter som faller inn under Bio* bortsett fra BioJava er BioPython , BioPerl , BioRuby , EMBOSS etc.
I oktober 2012 ble den første artikkelen om BioJava utgitt. Denne artikkelen beskriver BioJavas moduler, funksjoner og formål.
Fra november 2018 teller Google Scholar mer enn 130 sitater.
Den siste artikkelen om BioJava ble skrevet i februar 2017. Denne artikkelen beskriver et nytt verktøy som heter BioJava-ModFinder. Dette verktøyet kan brukes til identifisering og påfølgende kartlegging av proteinmodifikasjoner til 3D i Protein Data Bank ( PBD ). Pakken ble også integrert med RCSB PDB -webapplikasjonen og lagt til proteinmodifikasjonsanmerkninger i sekvensdiagrammet og strukturvisning. Mer enn 30 000 strukturer med proteinmodifikasjoner ble identifisert ved bruk av BioJava-ModFinder og finnes på RCSB PDB-nettstedet.
I 2008 ble BioJavas første søknadsnotat publisert. Det ble migrert fra det opprinnelige CVS-depotet til Git-huben i april 2013. Prosjektet er flyttet til et eget depot, BioJava-legacy, og vedlikeholdes fortsatt for mindre endringer og feilrettinger.
Versjon 3 ble utgitt i desember 2010. Det var en stor oppdatering til de tidligere versjonene. Målet med denne utgivelsen var å omskrive BioJava slik at den kunne moduleres til små, gjenbrukbare komponenter. Dette tillot utviklere å bidra lettere og redusere avhengigheter. Den nye tilnærmingen som ble sett i BioJava 3 ble modellert etter Apache Commons .
Versjon 4 ble utgitt i januar 2015. Denne versjonen brakte mange nye funksjoner og forbedringer til pakkene biojava-core, biojava-structure, biojava-structure-gui, biojava-phylo, så vel som andre. BioJava 4.2.0 var den første versjonen som var tilgjengelig ved bruk av Maven fra Maven Central.
Versjon 5 ble utgitt i mars 2018. Dette representerer en stor milepæl for prosjektet. BioJava 5.0.0 er den første utgaven basert på Java 8 som introduserer bruk av lambda -funksjoner og streaming API -anrop. Det var også store endringer i modulen for biojava-struktur. Også de tidligere datamodellene for makromolekylære strukturer har blitt tilpasset for nærmere å representere mmCIF -datamodellen. Dette var den første utgivelsen på over to år. Noen av de andre forbedringene inkluderer optimaliseringer i modulen for biojava-struktur for å forbedre detektering av symmetri og ekstra støtte for MMTF-formater. Andre generelle forbedringer inkluderer Javadoc -oppdateringer, avhengighetsversjoner og alle tester er nå Junit4. Utgivelsen inneholder 1 170 forpliktelser fra 19 bidragsytere.
Moduler
I løpet av 2014-2015 ble store deler av den opprinnelige kodebasen skrevet om. BioJava 3 er en klar avvik fra versjon 1 -serien. Den består nå av flere uavhengige moduler bygget med et automatiseringsverktøy kalt Apache Maven . Disse modulene gir state-of-the-art verktøy for proteinstruktur sammenligning, parvis og flere sekvensjusteringer, arbeider med DNA- og proteinsekvenser, analyse av aminosyreegenskaper, detektering av proteinmodifikasjoner, forutsi uorden i proteiner og analysatorer for felles fil formater ved hjelp av en biologisk meningsfull datamodell. Den opprinnelige koden er flyttet til et eget BioJava -eldre prosjekt, som fremdeles er tilgjengelig for bakoverkompatibilitet.
BioJava 5 introduserte nye funksjoner for to moduler, biojava-justering og biojava-struktur.
De følgende avsnittene vil beskrive flere av de nye modulene og markere noen av de nye funksjonene som er inkludert i den siste versjonen av BioJava.
Kjernemodul
Denne modulen gir Java -klasser for å modellere aminosyre- eller nukleotidsekvenser . Klassene ble designet slik at navnene er kjente og fornuftige for biologer og også gir en konkret fremstilling av trinnene i å gå fra en gensekvens til en proteinsekvens for datavitenskapere og programmerere.
En stor endring mellom det eldre BioJava-prosjektet og BioJava3 ligger i måten rammeverket er designet for å utnytte den gang nye innovasjoner i Java. En sekvens er definert som et generisk grensesnitt som lar resten av modulene lage et verktøy som fungerer på alle sekvenser. Spesifikke klasser for vanlige sekvenser som DNA og proteiner er definert for å forbedre brukervennligheten for biologer. Oversettelsesmotoren utnytter virkelig dette arbeidet ved å tillate konverteringer mellom DNA-, RNA- og aminosyresekvenser. Denne motoren kan håndtere detaljer som valg av kodontabell, konvertering av startkodoner til metionin, trimming av stoppkodoner, spesifisering av leserammen og overlevering av tvetydige sekvenser.
Spesiell oppmerksomhet er blitt lagt til å utforme lagring av sekvenser for å minimere plassbehovet. Spesielle designmønstre som proxy -mønsteret tillot utviklerne å lage rammeverket slik at sekvenser kan lagres i minnet, hentes på forespørsel fra en webtjeneste som UniProt, eller leses fra en FASTA -fil etter behov. De to sistnevnte tilnærmingene sparer minne ved ikke å laste inn sekvensdata før det er referert til det i applikasjonen. Dette konseptet kan utvides til å håndtere veldig store genomiske datasett, for eksempel NCBI GenBank eller en proprietær database.
Proteinstruktur moduler
Proteinstrukturmodulene gir verktøy for å representere og manipulere 3D biomolekylære strukturer. De fokuserer på sammenligning av proteinstruktur.
Følgende algoritmer er implementert og inkludert i BioJava.
- FATCAT -algoritme for fleksibel og stiv kroppsinnstilling.
- Standard algoritme for Combinatorial Extension (CE).
- En ny versjon av CE som kan oppdage sirkulære permutasjoner i proteiner.
Disse algoritmene brukes til å tilby RCSB Protein Data Bank (PDB) Protein Comparison Tool samt systematiske sammenligninger av alle proteiner i PDB ukentlig.
Parsere for PDB- og mmCIF -filformater tillater lasting av strukturdata i en datamaskin som kan brukes igjen. Denne funksjonen brukes av SIFTS -prosjektet til å kartlegge mellom UniProt -sekvenser og PDB -strukturer. Informasjon fra RCSB PDB kan hentes dynamisk uten å måtte laste ned data manuelt. For visualisering tilbys et grensesnitt til 3D -visningen Jmol.
Genom- og sekvensmoduler
Denne modulen er fokusert på opprettelsen av gen -sekvensobjekter fra kjernemodulen. Dette realiseres ved å støtte analysering av følgende populære standardfilformater generert av åpen kildekode -gentypeprogrammer:
- GTF -filer generert av GeneMark
- GFF2 -filer generert av GeneID
- GFF3 -filer generert av Glimmer
Deretter skrives gensekvensobjektene ut som et GFF3 -format og importeres til GMOD. Disse filformatene er veldefinerte, men det som blir skrevet i filen er veldig fleksibelt.
For å gi input-output-støtte for flere vanlige varianter av FASTQ-filformatet fra neste generasjons sekvensere, tilbys en egen sekvenseringsmodul. For eksempler på hvordan du bruker denne modulen, gå til denne lenken .
Justeringsmodul
Denne modulen inneholder flere klasser og metoder som lar brukerne utføre parvis og flere sekvensjusteringer. Sekvenser kan justeres både på en enkelt og flertrådet måte. BioJava implementerer Needleman-Wunsch- algoritmen for optimale globale justeringer og Smith og Watermans algoritme for lokale justeringer. Utgangene fra både lokale og globale justeringer er tilgjengelige i standardformater. I tillegg til disse to algoritmene er det en implementering av Guan - Uberbacher -algoritmen som utfører global sekvensjustering veldig effektivt siden den bare bruker lineært minne.
For flere sekvensjusteringer kan noen av metodene som er diskutert ovenfor brukes til å gradvis utføre en justering av flere sekvenser.
ModFinder modul
ModFinder -modulen gir nye metoder for å identifisere og klassifisere proteinmodifikasjoner i protein 3D -strukturer. Over 400 forskjellige typer proteinmodifikasjoner som fosforylering , glykosylering , disulfidbindinger metallkelering etc. ble samlet og kurert basert på kommentarer i PSI-MOD, RESID og RCSB PDB. Modulen gir også et API for å detektere pre-, co- og post-translationelle proteinmodifikasjoner i proteinstrukturer. Denne modulen kan også identifisere fosforylering og skrive ut alle forhåndslastede modifikasjoner fra en struktur.
Aminosyreegenskapsmodul
Denne modulen prøver å gi nøyaktige fysio-kjemiske egenskaper til proteiner. Egenskapene som kan beregnes ved hjelp av denne modulen er som følger:
- Molekylær masse
- Utryddelseskoeffisient
- Ustabilitet indeks
- Alifatisk indeks
- Stort gjennomsnitt av hydropati
- Isoelektrisk punkt
- Aminosyresammensetning
De presise molekylvektene for vanlige isotopisk merkede aminosyrer er inkludert i denne modulen. Det finnes også fleksibilitet til å definere nye aminosyremolekyler med deres molekylvekter ved hjelp av enkle XML -konfigurasjonsfiler. Dette kan være nyttig der den presise massen er av stor betydning, for eksempel massespektrometri -eksperimenter.
Proteinforstyrrelsesmodul
Målet med denne modulen er å gi brukerne måter å finne lidelser i proteinmolekyler. BioJava inkluderer en Java -implementering av RONN -prediktoren. BioJava 3.0.5 bruker Java's støtte for multithreading for å forbedre ytelsen opptil 3,2 ganger på en moderne firekjerners maskin, sammenlignet med den eldre C-implementeringen.
Det er to måter å bruke denne modulen på:
- Bruke biblioteksfunksjonsanrop
- Bruke kommandolinje
Noen funksjoner i denne modulen inkluderer:
- Beregner sannsynligheten for uorden for hver rest i en sekvens
- Beregning av sannsynligheten for uorden for hver rest i sekvensen for alle proteiner fra en FASTA -inndatafil
- Få de uordnede områdene av proteinet for en enkelt proteinsekvens eller for alle proteinene fra en FASTA -inndatafil
Tilgangsmodul for nettjeneste
I henhold til de nåværende trendene innen bioinformatikk, blir nettbaserte verktøy stadig mer populære. Nettjenestemodulen gjør at bioinformatikk -tjenester kan nås ved hjelp av REST -protokoller. For tiden implementeres to tjenester: NCBI Blast gjennom Blast URLAPI (tidligere kjent som QBlast) og HMMER -webtjenesten.
Sammenligning med andre alternativer
Behovet for tilpasset programvare innen bioinformatikk har blitt adressert av flere grupper og enkeltpersoner. I likhet med BioJava gir programvareprosjekter med åpen kildekode som BioPerl , BioPython og BioRuby alle verktøysett med flere funksjoner som gjør det lettere å lage tilpassede rørledninger eller analyser.
Som navnene antyder, bruker prosjektene nevnt ovenfor forskjellige programmeringsspråk. Alle disse API -ene tilbyr lignende verktøy, så på hvilke kriterier bør man basere valget sitt? For programmerere som bare har erfaring på ett av disse språkene, er valget greit. Men for en godt avrundet bioinformatiker som kan alle disse språkene og ønsker å velge det beste språket for en jobb, kan valget gjøres basert på følgende retningslinjer gitt av en programvaregjennomgang gjort på Bio* verktøysettene.
Generelt er det vanskelig å slå Perl og BioPerl for små programmer (<500 linjer) som bare skal brukes av en enkeltperson eller en liten gruppe . Disse begrensningene dekker sannsynligvis behovene til 90 prosent av personlig bioinformatikkprogrammering.
For nybegynnere og for å skrive større programmer i Bio -domenet, spesielt de som skal deles og støttes av andre, gjør Pythons klarhet og korthet det veldig attraktivt.
For de som kanskje lener seg mot en karriere innen bioinformatikk og som bare vil lære ett språk, har Java den bredeste generelle programmeringsstøtten, veldig god støtte i Bio -domenet med BioJava, og er nå de facto -forretningsspråk (det nye COBOL, på godt og vondt).
Bortsett fra disse Bio* -prosjektene er det et annet prosjekt kalt STRAP som bruker Java og sikter mot lignende mål. STRAP-verktøykassen, som ligner på BioJava, er også en Java-verktøykasse for design av bioinformatikk-programmer og -skript. Likhetene og forskjellene mellom BioJava og STRAP er som følger:
Likheter
- Begge gir omfattende samlinger av metoder for proteinsekvenser.
- Begge brukes av Java -programmerere til å kode bioinformatikk -algoritmer.
- Både separate implementeringer og definisjoner ved bruk av java -grensesnitt.
- Begge er åpen kildekode -prosjekter.
- Begge kan lese og skrive mange sekvensfilformater.
Forskjeller
- BioJava kan brukes på nukleotid- og peptidsekvenser og kan brukes på hele genomer. STRAP kan ikke takle enkeltsekvenser så lenge et helt kromosom. I stedet manipulerer STRAP peptidsekvenser og 3D-strukturer av størrelsen på enkeltproteiner. Likevel kan den inneholde et stort antall sekvenser og strukturer i minnet. STRAP er designet for proteinsekvenser, men kan lese kodende nukleotidfiler, som deretter blir oversatt til peptidsekvenser.
- STRAP er veldig rask siden det grafiske brukergrensesnittet må være svært responsivt. BioJava brukes der hastigheten er mindre kritisk.
- BioJava er godt designet når det gjelder typesikkerhet, ontologi og objektdesign. BioJava bruker objekter for sekvenser, merknader og sekvensposisjoner. Selv enkelte aminosyrer eller nukleotider er objektreferanser. For å øke hastigheten, unngår STRAP hyppige objektinstansjoner og påkallelse av ikke-endelige objektmetoder.
- I BioJava er peptidsekvenser og nukleotidsekvenser lister over symboler. Symbolene kan hentes etter hverandre med en iterator eller undersekvenser kan oppnås. Fordelene er at hele sekvensen ikke nødvendigvis ligger i minnet, og at programmer er mindre utsatt for programmeringsfeil. Symbolobjekter er uforanderlige elementer i et alfabet. I STRAP brukes imidlertid enkle byte -arrays for sekvenser og float -arrays for koordinater. Foruten hastighet er det lave minneforbruket en viktig fordel med grunnleggende datatyper. Klasser i stropp avslører interne data. Derfor kan programmerere begå programmeringsfeil som å manipulere byte -arrays direkte i stedet for å bruke setter -metodene. En annen ulempe er at det ikke utføres noen kontroller i STRAP om tegnene i sekvenser er gyldige med hensyn til et underliggende alfabet.
- I BioJava blir sekvensposisjoner realisert av klassen Location . Discontiguous Location -objekter består av flere sammenhengende RangeLocation -objekter eller PointLocation -objekter. For klassen StrapProtein er imidlertid enkeltrestposisjoner indikert med heltall mellom 0 og countResidues ()-1 . Flere posisjoner er gitt med boolske matriser. Sant ved en gitt indeks betyr valgt, mens falsk betyr ikke valgt.
- BioJava kaster unntak når metoder påkalles med ugyldige parametere. STRAP unngår tidkrevende opprettelse av gjenstander som kan kastes. I stedet angis feil i metoder med returverdiene NaN, -1 eller null. Fra programdesign er gjenstander som kan kastes bedre.
- I BioJava en Sequence gjenstand er enten en peptidsekvens eller en nukleotidsekvens. Et StrapProtein kan inneholde begge samtidig hvis en kodende nukleotidsekvens ble lest og oversatt til protein. Både nukleotidsekvensen og peptidsekvensen er inneholdt i det samme StrapProtein -objektet. De kodende eller ikke-kodende regionene kan endres og peptidsekvensen endres deretter.
Prosjekter som bruker BioJava
Følgende prosjekter bruker BioJava.
- Metabolic Pathway Builder: Programvarepakke dedikert til å utforske forbindelser mellom gener, proteiner, reaksjoner og metabolske veier
- DengueInfo : en Dengue genominformasjonsportal som bruker BioJava i mellomvaren og snakker med en biosql -database.
- Dazzle : En BioJava -basert DAS -server.
- BioSense : En plug-in for InforSense Suite, en analyseprogramvareplattform av IDBS som enhetliggjør BioJava.
- Bioclipse : En gratis, åpen kildekode, arbeidsbenk for kjemo- og bioinformatikk med kraftige redigerings- og visualiseringsevner for molekyler, sekvenser, proteiner, spektra, etc.
- PROMPT : En gratis, åpen kildekode -ramme og applikasjon for sammenligning og kartlegging av proteinsett. Bruker BioJava for å håndtere de fleste inndataformater.
- Cytoscape : En åpen kildekode -bioinformatikk -programvareplattform for å visualisere molekylære interaksjonsnettverk.
- BioWeka : En åpen kildekode for biologisk datautvinning.
- Geneious : Et verktøy for molekylærbiologi.
- MassSieve : En åpen kildekode -applikasjon for å analysere massespesifikke proteomikkdata.
- STRAP : Et verktøy for justering av flere sekvenser og sekvensbasert strukturjustering.
- Jstacs : Et Java -rammeverk for statistisk analyse og klassifisering av biologiske sekvenser
- jLSTM : "Long Short-Term Memory" for proteinklassifisering
- LaJolla : Et åpen kildekode strukturelt justeringsverktøy for RNA og proteiner som bruker en indeksstruktur for rask justering av tusenvis av strukturer; inkluderer et brukervennlig kommandolinjegrensesnitt.
- GenBeans : En rik klientplattform for bioinformatikk først og fremst fokusert på molekylærbiologi og sekvensanalyse.
- JEnsembl : Et versjonsbevisst Java API til Ensembl datasystemer.
- MUSI : Et integrert system for å identifisere flere spesifisiteter fra svært store peptid- eller nukleinsyredatasett.
- Bioshell : Et bruksbibliotek for strukturell bioinformatikk
Se også
- Open Bioinformatics Foundation
- BioPerl , Biopython , BioRuby
- Bioclipse
- Sammenligning av programvare for modellering av molekylær mekanikk
