Biologische - Medical Bioinformatics

Werbung
VL Algorithmische BioInformatik (19710)
WS2013/2014
Woche 2 - Mittwoch
Tim Conrad
AG Medical Bioinformatics
Institut für Mathematik & Informatik, Freie Universität Berlin
Vorlesungsthemen
Part 1: Background Basics (4)
1. The Nucleic Acid World
2. Protein Structure
3. Dealing with Databases
Part 2: Sequence Alignments (3)
4. Producing and Analyzing Sequence
Alignments
5. Pairwise Sequence Alignment and
Database Searching
6. Patterns, Profiles, and Multiple
Alignments
Part 3: Evolutionary Processes (3)
7. Recovering Evolutionary History
8. Building Phylogenetic Trees
Part 4: Genome Characteristics (4)
9. Revealing Genome Features
10. Gene Detection and Genome
Annotation
Tim Conrad, VL Algorithmische Bioinformatik, WS2013/2014
Part 5: Secondary Structures (4)
11. Obtaining Secondary Structure from
Sequence
12. Predicting Secondary Structures
Part 6: Tertiary Structures (4)
13. Modeling Protein Structure
14. Analyzing Structure-Function
Relationships
Part 7: Cells and Organisms (8)
15. Proteome and Gene Expression
Analysis
16. Clustering Methods and Statistics
17. Systems Biology
Heute
• „Praktische Bioinformatik“
• Voraussetzungen
•
Bekannte Datenformate
•
Austauschformate
•
Ontologien
• Analyse durch Benutzen von
•
Websites
•
APIs
•
Programmatisch: BioJava
•
Datenbanken
•
Webservices
Praktikum
Tim Conrad, VL Algorithmische Bioinformatik, WS2013/2014
Praktikum
Tim Conrad, VL Algorithmische Bioinformatik, WS2013/2014
Praktikum
Tim Conrad, VL Algorithmische Bioinformatik, WS2013/2014
Biologische Daten
Zentriert um das “Zentrale Dogma”
•
•
•
•
•
Genomische DNA-Sequenzen
mRNA/cDNA-Sequenzen
Protein-Sequenzen
3D Protein-Strukturen
Literatur (Funktionen)
Biologische Datenbanken
• Eine geordnete Sammlung von Daten und
dazugehöriger Software zum Bearbeiten
und Abfragen von Datensätzen.
• Organisiert für einen bestimmten Zweck.
• Die Datenbank ist unabhängig von der
Benutzerschnittstele und kann auch
mehrere verschidenene davon haben.
• Z.B. kann die NCBI Protein-DB nach
Proteinnamen oder -sequenz (mit BLAST)
durchsucht werden.
Datenbankeigenschaften
• Relationale Datenbank
• Tabellen
• Relationen (Beziehungen)
zwischen Tabellen
• Versionskontrolle
• Konsistenzprüfung
• Mehrbenutzersystem mit
Sicherheitsfunktionen
Webseiten
Tim Conrad, VL Algorithmische Bioinformatik, WS2013/2014
Datenbanken im Internet
• Biologische Datenbanken können oft über
(mindestens) ein Webinterface abgefragt
werden.
• Die Zugriffe werden daher meistens durch
einen Webserver organisiert.
request
query
result
web page
User
Web server
Database server
Herunterladen von Datenbanken
• Fast alle biologischen Datenkbanken
können in Form von Flatfiles
heruntergeladen werden.
• Eine lokale Kopie erleichert die
Weiterverarbeitung der Daten.
• Datenverarbeitung erfordert rudimentäre
Programmierkenntnisse. Für die
Verarbeitung von Textdateien ist z.B. Perl
gut geeignet.
Benutzung von biologischen DBs
• Welche Datenbanken sollte ich
benutzen?
• Welche Art von Daten suche ich?
• Sind die Daten der Datenbank für mich
von Interesse?
• Wie verlässlich sind die Daten?
Einige Beispiele…
Tim Conrad, VL Algorithmische Bioinformatik, WS2013/2014
Praktischer Teil: Übersicht
• Integrierte Systeme: z.B. NCBI (Proteine,
Nukleotide, Gene, OMIM, etc.)
• Proteindatenbanken, z.B. ExPASy
(SwissProt + TrEMBL)
• Proteinstrukturen: z. B. PDB and PDBsum
• Stoffwechselwege: z.B. KEGG (Kyoto
Encyclopedia of Genes and Genomes)
Vorbemerkung
• Auf den folgenden Folien werden mehrere
DBs räsentiert. Sie müssen sich nicht alles
merken, die meisten Datenbanken haben
gute Hilfe-Funktionen
• Versuchen Sie:
• Die Gemeinsamkeiten verschiedener
Datenbanken zu erkennen.
• Die Hauptcharakteristika der einzelnen
Datenbanken zu erfassen.
• Die jeweiligen online Hilfe-Funktionen zu
verstehen.
• Die Datenbanken zu bewerten und vergleichen.
EBI/NCBI/DDBJ
• Diese 3 Datenbanken enthalten im wesentlichem die gleichen
Daten - bei kleinen Unterschieden in Syntax und Format.
• Dienen als Archiv aller Sequenzen (einzelne Gene, ESTs,
komplette Genome etc.) aus/von:
•
•
•
•
•
Genomprojekten
Sequenzierzentren
Einzelnen Wissenschaftlern
Literatur
Patentämtern
• Öffentliche (nicht-geheime) Daten werden täglich ausgetauscht
• Datenbankgröße verdreifacht sich jährlich
• Sequenzen aus mehr als 50,000 Spezien
EBI/NCBI/DDBJ
• Heterogen: Sequenzlänge, Genome, Fragmente, …
• Minimale Sequenzlänge: 10 bp
• Archiv: nichts wird gelöscht -> hohe Redundanz!
• Enhalten Fehler: in Sequenzen, Annotationen, CDS
Attributen, ….
• Keine Konsistenz der Annotationen, die meist durch
Datenerzeuger entsteht; sehr Unterschiedliche
Qualität und Aktualität
EBI/NCBI/DDBJ
Enthalten auch „unerwartete“ Daten:
FT
FT
FT
FT
FT
FT
FT
source
1..124
/db_xref="taxon:4097"
/organelle="plastid:chloroplast"
/organism="Nicotiana tabacum"
/isolate="Cuban Cahibo cigar, gift
from President Fidel
Castro"
Oder:
FT
FT
FT
FT
FT
FT
FT
FT
source
1..17084
/chromosome="complete mitochondrial genome"
/db_xref="taxon:9267"
/organelle="mitochondrion"
/organism="Didelphis virginiana"
/dev_stage="adult"
/isolate="fresh road killed individual"
/tissue_type="liver"
GenBank
• 168.335.396 Sequenzen, insgesamt
155.176.494.699 bp (Stand: 10/2013)
• Die meisten (Bioinformatik-)Webseiten
synchronisieren täglich mit GenBank
• Biologen verwenden meist das
Webinterface von GenBank.
21
GenBank - Wachstum
Annotationen
• Milliarden von Gs, As, Ts, and Cs wären
ohne Annotationen nutzlos
Sequences
24
Proteinsequenz Datenbanken
• SWISS-PROT: entstanden 1986 (Amos Bairoch)
http://www.expasy.org/sprot/
• TrEMBL: entstanden 1996; Ergänzung zu SWISS-PROT;
Abgeleitet von EMBL CDS-Übersetzungen („proteomic“-Version
von EMBL)
• PIR-PSD: Protein Information Resources
http://pir.georgetown.edu/
• Genpept: „proteomic“ Version von GenBank
• Viele spezialisierte Proteindatenbanken für Proteinfamilien
• Beispiele: AMSDb (Antibakterielle Peptide), GPCRDB (7 TM
Rezeptoren), IMGT (Immunsystem), YPD (Hefe) etc.
SWISS-PROT
• Gemeinschaftsprojekt der SIB (CH)
und EMBL/EBI (UK)
• Manuell annotiert: nicht-redundant,
mit Querverweisen, komplett
dokumentiert
• Wöchentliche Updates
• Erhältlich von ca. 50 Servern weltweit
• Zentrale bei ExPASy in Genf
SWISS-PROT
•
•
•
•
541.561 Sequenzen
192.480.382 Aminosäuren
13.030 Spezies
2.345 Journals
(Nature, Cell, PLoS ONE)
• 342.138 Autoren
(Stand 10/2013)
TrEMBL (Translation of EMBL)
• Es ist unmöglich, mit der Menge neu generierter
Daten umzugehen UND die hohe Qualität von
SWISS-PROT aufrecht zu erhalten.
• Daher: TrEMBL, gegründet in 1996
• TrEMBL ist automatisch generiert (aus annotierten
EMBL coding sequences (CDS)) und softwaregestützt
annotiert.
• Enthält alles, was nicht in SWISS-PROT ist.
• SWISS-PROT + TrEMBL = alle bekannten
Proteinsequenzen.
Der (vereinfachte) Weg eines SWISS-PROT Eintrags
Manche Daten werden nicht veröffentlicht!!
(verzögert oder abgebrochen…)
cDNAs, genomes, …
EMBLnew
EMBL
TrEMBLnew
TrEMBL
CDS
SWISS-PROT
„Automatisch“
• Redundanzprüfung (merge)
• Familienbestimmung (InterPro)
• Annotation (computer)
„Manuell“
• Redundanz (merge, Konflikte)
• Annotation (manuell)
• SWISS-PROT tools (macros…)
• SWISS-PROT documentation
• Medline
• Databanken (MIM, MGD….)
• Brain storming
Einmal in SWISS-PROT, wird der Eintrag aus TrEMB gelöscht, ist aber noch in EMBL
CDS: EMBL durch Autoren oder Genomprojekte vorgeschlagen (experimentell bewiesen oder algorithmisch vorhergesagt).
.
Genomdatenbanken
• Enthalten Chromosomlokations-Informationen
(mapping) und Nomenklaturen, sowie Links
zu Sequenzdatenbanken.
• Oft spezienspezifisch
• Beispiele: MGI (Maus), FlyBase (Drosophila),
SGD (Hefe), MaizeDB (Mais),
SubtiList (B. subtilis).
EMBL Genomdatenbanken
http://www.ebi.ac.uk/genomes/
Strukturdatenbanken
• Protein Data Bank (PDB)
http://www.rcsb.org/pdb/
• Structural Classification of Proteins
(SCOP)
• http://scop.berkeley.edu
• http://scop.mrc-lmb.cam.ac.uk/scop/
PDB
• 3D-Strukturdaten von Makromolekülen
• Daten meist durch NMR or
Röntgenkristallographie erzeugt
• 94.873 Strukturen
(Stand: 10/2013)
• Wenn eine Proteinstruktur bekannt ist
… hier kann man sie ansehen!
The PDB website
Suchbeispiel: Insulin
Was gefunden?
Hilfe im Daten(bank)-Dschungel
Tim Conrad, VL Algorithmische Bioinformatik, WS2013/2014
“One-stop information centers”
• Integration von vielen Datenquellen an
einer Stelle
• Z.B.
GQuery –
NCBI Global
Cross-database
Search
• Integration
von Literatur,
3D-Strukturdaten etc.
Die NCBI-Daten (Auswahl)
• Literatur (Bücher, Paper, Mendelian Inheritance in Man)
• Nukleotide (PDB, GenBank und RefSeq)
• Proteine (SwissProt, PIR, PRF, PDB, und Translation
annotierter Coding Sequences in GenBank und RefSeq
• Genome (alle, auch unvollständige)
• 3D-Strukturen
• Taxonomie (GenBank organisms)
• SNPs (Single Nucleotide Polymorphisms)
• Gene-orientierte Cluster
• Konservierte Proteindomänen
• 3D-Domänen
• Marker- und Kartierungsdaten
• Populationsstudien
• Expressionsdaten
Abfragen von biologische Datenbanken
Tim Conrad, VL Algorithmische Bioinformatik, WS2013/2014
Direkte Abfragen
Tim Conrad, VL Algorithmische Bioinformatik, WS2013/2014
Java Database Connectivity (JDBC)
• Eine Schnittstelle zur Kommunikation mit
relationalen Datenbanken
• Ermöglicht Datenbankunabhängigen Java-Code
• Datenbanken/Tabellen/Einträge als Java-Objekte
• JDBC-Treiber
• Eine Implementierung der JDBC-Schnittstelle
• Kommuniziert mit einer bestimmten Datenbank
Java
JDBC
calls
JDBCJDBC
JDBC
Treiber
driver
driver
Database
command
s
Datenbank
Database
Database
JDBC: Vorgehensweise
1. Datenbankverbindung herstellen
2. Datenbank abfragen
(select/insert/update/delete)
3. Ergebnisse weiterverarbeiten
4. Datenbankverbindung schließen
1. Datenbankverbindungen erstellen
• JDBC-Treiber laden
• Class.forName("com.mysql.jdbc.Driver").newInstance();
• Verbindung herstellen
• Connection conn = DriverManager.getConnection(url);
• URL
•
Format: “jdbc:<subprotocol>:<subname>”
• jdbc:mysql://128.100.53.33/myDatabase
2. Datenbankafragen
a) Statement erstellen
Statement stmt = conn.createStatement();
Objekt stmt sendet die Anfrage zur Datenbank
Methoden
executeQuery() für SELECT
executeUpdate() für INSERT, UPDATE, DELETE
b) SQL-Anfrage senden
stmt.executeQuery(“SELECT …”);
stmt.executeUpdate(“INSERT …”);
3. Ergebnisse verarbeiten
• Ergebnis eines SELECT Statements (Zeilen/Spalten) wird als
ResultSet-Objekt zurückgegeben.
• ResultSet rs = stmt.executeQuery("SELECT * FROM users");
• Schrittweise durch die Ergebnisliste gehen
• rs.next()
• Spaltenwerte in einer Zeile abfragen
• String userid = rs.getString(“userid”);
• int type = rs.getInt(“type”);
users Tabelle
userid
firstname
lastname
password
type
Bob
Bob
King
cat
0
John
John
Smith
pass
1
Beispiel: Tabelle 'users' ausgeben
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
while (rs.next()) {
String userid = rs.getString(1);
String firstname = rs.getString(“firstname”);
String lastname = rs.getString(“lastname”);
String password = rs.getString(4);
int type = rs.getInt(“type”);
System.out.println(userid + ” ” + firstname + ” ” +
lastname + ” ” + password + ” ” + type);
}
users Tabelle
userid
firstname
lastname
password
type
Bob
Bob
King
cat
0
John
John
Smith
pass
1
BioWarehouse: An Integration of Multiple
Public Domain Bioinformatics Databases
http://biowarehouse.ai.sri.com/
48
BioWarehouse: Zusammenführung heterogener
biologischer Datentypen
49
ACHTUNG: Die freie PublicHouse
Variante enthält nur einen Teil
der Daten – manchmal werden
unvollständige Ergebnisse
übermittelt!
50
Achtung: Erst Denken, dann abfragen
• Schnell schreibt man Anfragen, die…
• … unsinnige Ergebnisse zurückgeben
• … nie enden
• Scotty an Captain Kirk: “Where going in circles, and at warp
6, we’re going mighty fast…”
• Vermeidung: die Struktur der Datenbank verstehen
• Tipps
• Erst mit „count“ die Zahl der Ergebnisse abfragen, bevor
man sie lädt
• Bedenke: Je mehr Tabellen man verknüpft,
desto länger dauert die Anfrage
• Nicht-indizierte Spalten verlangsamen die Abfragen um
bis zu Faktor 1000
Query: Return proteins from CMR with predicted molecular
weight between 125 and 135 AND predicted pI between 4.7 and
7., and Count The Number Of Proteins Per Species
select count(b.wid) as NumberOfProteins, d.Name as
Species
from BioSourceWIDProteinWID a, Protein b,
BioSource c, Taxon d
where a.ProteinWID=b.WID and
a.BiosourceWID=c.WID and c.TaxonWID=d.WID and
b.DataSetWID=5 and
(b.MolecularWeightCalc >= 125 and
b.MolecularWeightCalc <= 135) and
(b.PICalc >= 4.7 and b.PICalc <= 7.7)
group by Species
order by NumberOfProteins desc, Species asc
52
Welche Daten gibt's in Ensembl?
•
•
•
•
Genomsequenzen
Gene/transcript/peptide models
Externe Referenzen
Mapped cDNAs, Peptide,Microarrays, BAC clones
etc.
• Andere Genomeigenschaften:
cytogenetic bands, Marker, Repeats etc.
• Vergleichende Daten:
Orthologe Daten, Proteinfamilien, Genomalignments,
Synthetische Regionen
• Varianzdaten:
SNPs
• Regulationsdaten:
“best guess” set of regulatory elements
• Daten aus externen Quellen (DAS)
53
Das Ensembl Schema verstehen
• Ensembl CORE schema
•
http://www.ensembl.org/info/docs/api/core/core_schema.html
• Erste Adresse um herauszufinden, was
die Tabellen enthalten
• Um einen generellen Überblick über
die Struktur zu bekommen, eignet sich
die “Catalog Funktion” von WinSQL
oder dem “MySQL Query Browser”
54
Das Ensembl Schema verstehen: die “Catalog” Funktion
(generic query generator function)
55
Abrage: Die 100 ersten genetischen Marker des
Humanen Chromosoms 19
select marker.marker_id, marker_map_location.chromosome_name,
marker_map_location.position, map.map_name
from (
(marker marker INNER JOIN marker_map_location
marker_map_location
ON marker.marker_id =
marker_map_location.marker_id)
INNER JOIN map map ON marker_map_location.map_id = map.map_id)
where (marker_map_location.chromosome_name = '19')
limit 1,100
Ensembls “Grund” Tabellen
Fundamental tables
assembly
assembly_exception
attrib_type
coord_system
dna
dnac
exon
exon_stable_id
exon_transcript
gene
gene_stable_id
karyotype
meta
meta_coord
prediction_exon
prediction_transcript
seq_region
seq_region_attrib
supporting_feature
transcript
transcript_attrib
transcript_stable_id
translation
translation_attrib
translation_stable_id
Features and analyses
alt_allele
analysis
analysis_description
density_feature
density_type
dna_align_feature
map
marker
marker_feature
marker_map_location
marker_synonym
misc_attrib
misc_feature
misc_feature_misc_set
misc_set
prediction_transcript
protein_align_feature
protein_feature
qtl
qtl_feature
qtl_synonym
regulatory_factor
regulatory_factor_coding
regulatory_feature
regulatory_feature_object
regulatory_search_region
repeat_consensus
repeat_feature
simple_feature
ID Mapping (Map identifiers between releases)
gene_archive
mapping_session
peptide_archive
stable_id_event
Exernal references (IDs to objects in other dbs)
external_db
external_synonym
go_xref
identity_xref
object_xref
xref
Miscellaneous
interpro
57
Webservices
“Creating a Bioinformatics Nation”
(Lincoln Stein, Cold Spring Harbor Laboratory )
Was ist ein Web Service?
• Web Services:
• Ein neuer Weg Drittsoftware oder vorhandene
Systeme zu verwenden
• Unerheblich wo die Software läuft, auf welcher
Plattform sie läuft oder in welcher Sprache sie
geschrieben wurde
• Basiert auf XML in Internetprotokollen (HTTP,
SMTP…)
• Vorteile:
• Einfache Integration
• Schnellere Anwendungsentwicklung
Web Services Modell
Tim Conrad, VL Algorithmische Bioinformatik, WS2013/2014
Web Service Standards
• REST (Representational State Transfer)
•
Architekturtyp verbundener Systeme
• SOAP (Simple Object Access Protocol)
•
Standard zur Nachrichtenübertragung zwischen Anwendungen
• WSDL (Web Service Description
Language)
•
Standard zur Beschreibung von Web Services und deren Eigenschaften
WSDL
• Beschreibt die Syntax und
Zugriffssmöglichkeit von Web Services
• Programmierer erstellen WSDLDateien, um ihre Web Services zu
beschreiben und veröffentlichen diese
im Internet
SOAP
• Simple Object Access Protocol
• XML-Syntax zur
Nachrichtenübertragung
• HTTP-basiert
• Bekannte Praxis: XML und HTTP wird
zusammen verwendet
• Sprach- und plattformunabhängige
RPC-Implementierung
SOAP-Beispiel
<?xml version="1.0"?>
<SOAP-ENV:Envelope
xmlns:SOAPENV="http://schemas.xmlsoap.org/soap/envelope/" >
<SOAPENV:Body>
<getSequence xmlns="http://my.sequence.repository/embl/">
<sequence>embl:adw2sa</sequence>
</getSequence>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Daten-Webservices
• EMBL nucleotide sequence database
•
http://www.ebi.ac.uk/Tools/webservices/services/dbfetch
• Ozeanographie-Daten
•
•
Wasserstände, etc.
http://opendap.co-ops.nos.noaa.gov/axis/
• Himmelsbilder
•
http://casjobs.sdss.org/ImgCutoutDR5/Imgcutout.asmx
Data-Webservice am EBI
fetchData(query, format, style)
Hole einen Eintrag in einem Definierten Format und Stil.
Argumente:
query: die Eintragsidentifizierung im db:id Format. Beispiel:
“UniProtKB:WAP_RAT”
format: der Name des Formats. Für das standardformat kann
“default” verwenden werden.
style: der Name des Stils. “Default” auch hier für den
Standardstil.
Gibt zurück: Ein Array von Strings mit den Daten des Eintrags.
Meist nur ein String mit allen Daten des Eintrags.
Tim Conrad, VL Algorithmische Bioinformatik, WS2013/2014
Service-Webservice
• EBI ClustalW
•
Sequenzähnlichkeitsanalyse
•
http://www.ebi.ac.uk/Tools/webservices/services/msa/clustalw2_soap
• Übersicht
•
https://www.biocatalogue.org/services/
Bioinformatics Web Services Projects
• DAS (http://biodas.org/)
• BioMoby (http://biomoby.org)
•
•
Moby-S
Semantic Moby
• myGrid (http://www.mygrid.org.uk/)
•
•
•
SoapLab (http://industry.ebi.ac.uk/soaplab/)
Talisman (http://www.ebi.ac.uk/talisman/index.html)
Taverna (http://taverna.sourceforge.net/)
Search (EB-Eye)
Available Services @ EBI
Data Retrieval
(WSDbfetch)
Ensembl
(Martservice)
Uniprot API
Integr8 API
Expression Profiler
Protein families,
motifs and domains
(WSInterProScan)
Ontologies (OntologyLookup)
ID mapping (Picr, Martservice)
Wise, PromoterWise,
ScanWise
Sequence alignment
WSClustalW
WSMuscle
WSTCoffee
Protein structure & function:
(MSD API)
Literature and text mining
(Whatizit, CiteXplore)
Sequence homology
WSWUBlast
WSFasta
WSMPsrch
WSScanPS
DaliLite, Maxsprout
ChEBI API
Sequence analysis
(WSEmboss)
Verwendung eines Web Service (1)
• Step 1: Obtain the WSDL
• Generally at the webservice URL + ?wsdl
e.g. http://<host>/axis/services/Calculator?wsdl
• Use UDDI to discover WSDL location
• Step 2: Generate stubs
• Use WSDL2Java to create client stubs/bindings
• e.g. java org.apache.axis.wsdl.WSDL2Java
Calculator.wsdl generates:
Calculator.java (interface)
CalculatorService.java (service interface)
CalculatorServiceLocator.java
(service factory, implements CalculatorService.java)
CalculatorServiceSoapBindingStub.java
(stub for invoking service using SOAP, implements Calculator.java)
Generated Client Stubs
CalculatorService.java
public interface CalculatorService extends Service {
public String getCalculatorAddress();
public Calculator getCalculator() throws ServiceException;
public Calculator getCalculator(URL portAddress) throws ServiceException;
}
Calculator.java
public interface Calculator extends Remote {
public int add(int i1, int i2) throws RemoteException;
public int subtract(int i1, int i2) throws RemoteException;
}
Invoking a Web Service (2)
Step 3: Write client code
import Calculator.*;
public class CalcClient {
public static void main(String[] args) {
try {
CalculatorService service = new CalculatorServiceLocator();
Calculator calulator = service.getCalculator();
int res = calculator.add(10, 5);
System.out.println("Result=" + res);
} catch(Exception except) {
except.printStackTrace();
}
}
}
BioJava
Tim Conrad, VL Algorithmische Bioinformatik, WS2013/2014
Was ist BioJava?
• Eine Sammlung von Java-Objekten zur
Repräsentation und Manipulation
biologischer Daten
• Kein Programm, eher eine Bibliothek
• Open source (LGPL), verwendbar für
jede – auch kommerzielle –
Softwareentwicklung. -> “Nicht-viral”
Was ist BioJava?
• 1998 am EBI/Sanger von Matthew
Pocock und Thomas Down gestartet
• 25+ Entwickler, mit einer Kerngruppe
von 5
Was ist BioJava?
• http://www.biojava.org
• Standard zum Lesen/Schreiben und Parsen
von Informationen in verschiedenen
Formaten wie FASTA, EMBL, Genbank,
Swissprot etc.
• Aber auch z.B. Sequenzstatistiken
(frequencies), “order N statistics”,
Motivsuchen (mit gewichteten Matrizen)
Acknowledge: Lorenz Wernisch for biojava slides
BioJava
Routineprobleme der Bioinformatik
Dateien einlesen: Genbank, Swissprot, EMBL, . . .
Programmausgaben lesen: BLAST, FASTA, MEME, …
Formate konvertieren
Nach spezifische Eigenschaften filtern
Nukleotide, Codons, Eigenschaften, Sequenzen
zählen
• Sequenzen, Annotationen und Eigenschaften
anzeigen
• Suche nach Motiven, Mustern und
Sequenzähnlichlkeiten
•
•
•
•
•
•
BioJava API
• Documentation der API
•
http://www.biojava.org/docs/api15b/index.html
• Enthält mehr Details zu Klassen und
Methoden
• Das “Kochbuch”:
•
http://biojava.org/wiki/BioJava:Cookbook
Alphabet
• Ein Alphabet für DNA, RNA, Proteine
besteht aus Symbolen
FiniteAlphabet dna = DNATools.getDNA();
Iterator dnaSymbols = dna.iterator();
while (dnaSymbols.hasNext()) {
Symbol s = (Symbol) dnaSymbols.next();
System.out.println(s.getName());
}
Und genauso:
ProteinTools.getAlphabet()
RNATools.getRNA();
SymbolList
• SymbolList ist eine “Collection” von
Symbolen.
Grund-Klasse für Sequenzen
SymbolList dna = DNATools.createDNA("atcggtcggctta");
String s = dna.seqString();
System.out.println(s);
Sequenz
• Eine Sequenz ist eine SymbolList mit
einem zusätzlichen Namen
Sequence dnaSeq =
DNATools.createDNASequence("atcg", "motif23");
String name = dnaSeq.getName();
String s = dnaSeq.seqString();
Iterator it = dnaSeq.iterator();
while (it.hasNext()) {
Symbol s = (Symbol)it.next();
System.out.println(s.getName());
}
Annotationen
• Strukturierte Information ist häufig z.B. im
Swissprot-Eintrag zu finden
DE
DE
GN
OS
OC
OC
FT
FT
FT
Transcription factor BTEB1
(Krueppel-like factor 9).
BTEB1 OR BTEB OR KLF9.
Homo sapiens (Human).
Eukaryota; Metazoa; Chordata; ...
Mammalia; Eutheria; Primates; ...
DOMAIN 84 116 Asp/Glu-rich (acidic).
ZN_FING 143 167 C2H2-type 1.
ZN_FING 173 197 C2H2-type 2.
Annotations and Features
• Annotationen liefern generelle
Informationen zu einer Sequenz
• DE Transcription factor BTEB1
• Features sind punkt- oder
Abschnittsspezifische Annotationen
• FT DOMAIN 84 116 Asp/Glu-rich (acidic).
• FT ZN_FING 173 197 C2H2-type 2.
d. h. sie haben eine Location
Annotationen
BufferedReader br =
new BufferedReader(new FileReader(args[0]));
SequenceIterator seqs = SeqIOTools.readEmbl(br);
while(seqs.hasNext()) {
Annotation anno =
seqs.nextSequence().getAnnotation();
for (Iterator i = anno.keys().iterator();
i.hasNext(); ) {
Object key = i.next();
System.out.println(key +" : "+
anno.getProperty(key));
}
}
Fasta Dateien einlesen
String filename = args[0];
BufferedInputStream is = new BufferedInputStream(
new FileInputStream(filename));
//get the appropriate Alphabet
Alphabet alpha =
AlphabetManager.alphabetForName(args[1]);
//get a SequenceDB of all sequences in the file
SequenceDB db = SeqIOTools.readFasta(is, alpha);
Sequenz-Datenbanken
• Eine Grundstruktur zur Sequenzspeicherung
SequenceDB db = SeqIOTools.readFasta(is, alpha);
SequenceIterator it = db.sequenceIterator();
while (it.hasNext()) {
Sequence seq = it.nextSequence();
System.out.println(seq.seqString());
}
Translate, Transcribe
//create a DNA SymbolList
SymbolList symL = DNATools.createDNA("atggccattgaatga");
//transcribe to RNA
symL = RNATools.transcribe(symL);
//translate to protein
symL = RNATools.translate(symL);
Mehr Informationen im Internet unter
medicalbioinformatics.de/teaching
Vielen Dank!
Tim Conrad
AG Medical Bioinformatics
www. medicalbioinformatics.de
Weitere
Fragen
Herunterladen