Biopython

Notizen

  • Biopython ist ein Paket, das bequeme Funktionen für den Umgang mit Daten in verschiedenen bioinformatischen Standardformaten bereitstellt. Es bietet Schnittstellen für den Zugriff auf Dateien als auch auf Datenbanken im Internet. In der Canopy Python Distribution ist Biopython bereits enthalten. Einen guten Einstieg mit Beispielen finden Sie im Tutorial.

  • ein Beispielskript für das Einlesen von Sequenzdaten aus einer Datei im Fasta-Format

    1
    2
    3
    4
    5
    6
    7
    from Bio import SeqIO #Import der Funktionen fuer die Ein- und Ausgabe von Sequenzdaten
    
    for seq_record in SeqIO.parse("ls_orchid.fasta", "fasta"): # Einlesen aus einer Datei, der Datensatz landet in der Variable seq_record, die von einem speziellen, durch Biopython definierten Sequenztyp ist
        print(seq_record.id) # id ist ein spezieller Parameter des Sequenztyps
        print(repr(seq_record.seq))
        print(len(seq_record))
        
    
  • ein Beispielskript, das aus der SwissProt-Datenbank (hier als Datei herunterladen - Achtung, sehr groß!) Einträge mit bestimmten Eigenschaften herausfiltert

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    import gzip  # Importieren des gzip-Moduls fuer den unkomplizierten Umgang mit gezippten Dateien
    from Bio import SwissProt  # Importieren der Funktionen fuer den Umgang mit Daten im SwissProt-Format
    
    
    def PDB_entry(record):
        """
        Extrahiert die PDB-Codes aus den Datensaetzen, die auf vorhandene 3D-Strukturen hinweisen
        """
        PDB_found = []
        for entry in record.cross_references:
            if entry[0] == 'PDB':
                PDB_found += [entry[1]]
        return PDB_found
    
    sprothandle = gzip.open(r".\\selected.dat.gz")
    # Oeffnen einer gezippten Datei. Der Zugriff erfolgt dann voellig transparent, d.h. man muss sich nicht selber um das Auspacken kuemmern.
    # Ggf. müssen Sie den Pfad zur Datei anpassen
    
    # sprothandle = open(r".\\selected.dat")
    # Falls Sie das zip-File vorher selber auspacken wollen, öffnen Sie das .dat-File mit diesem Befehl
    
    
    for record in SwissProt.parse(sprothandle):  # sequentielles Einlesen der einzelnen Datensaetze
    
        sequence = str(record.sequence)  # Extrahieren der Sequenzinformation fuer den aktuellen Datenbankeintrag
    
        if sequence.count("C") == 1 and len(sequence) <= 100 and ('3D-structure' in record.keywords):
            # wenn in der Sequenz nur ein Cystein vorkommt, die Sequenz maximal 100 Aminosaeuren lang ist und auf 3D-Strukturen verwiesen wird
            a = record.description
            # print a
            short_desc = a[a.index("RecName: Full=")+14:].split(';')[0]  # Name des Eintrags
            PDBs = PDB_entry(record)  # assoziierte PDB-Codes extrahieren
            print(record.entry_name, PDBs, short_desc)
    
  • ein Beispielskript zur PubMed-Datenbankabfrage über das Netzwerk

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    from Bio import Entrez, Medline # Funktionen fuer Entrez und Medline importieren
    
    Entrez.email = "A.N.Other@example.com" # Entrez erwartet eine Nutzeridentifikation
    
    handle = Entrez.esearch(db="pubmed", term="pyruvate oxidase", retmax=3) # Datenbankabfrage von PubMed ueber das Netzwerk. 
    
    record = Entrez.read(handle) # Ergebnis wird einem Dictionary-artigen Objekt zugewiesen
    
    # print record, type(record)
    
    idlist = record["IdList"] # Das Feld IdList enthaelt die Datenbankkennungen
    
    # print idlist
    
    ml_handle = Entrez.efetch(db="pubmed", id=idlist, rettype="medline", retmode="text") # Eintraege koennen jetzt aus Pubmed abgerufen werden
    
    ml_records = Medline.parse(ml_handle)
    
    for entry in ml_records: # Ausgabe von verschiedenen Attributen der einzelnen Datenbankeintraege
        print("title:", entry.get("TI", "?"))
        print("authors:", entry.get("AU", "?"))
        print("source:", entry.get("SO", "?"))
        print()
    
  • ein Beispielskript für die Subplot-Aufgabe aus der letzten Stunde

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    import matplotlib.pyplot as plt
    import numpy as np
    
    t1 = np.arange(0.0, 5.0, 0.1)
    t2 = np.arange(0.0, 5.0, 0.02)
    t3 = np.arange(0.0, 2.0, 0.01)
    
    plt.subplot(2, 1, 1)
    plt.plot(t1, np.cos(t1), 'bo', t2, np.sin(t2), 'k-', markerfacecolor='green')
    plt.grid(True)
    plt.title('Subplots')
    plt.ylabel('Cosinus und Sinus')
    
    plt.subplot(2, 1, 2)
    plt.plot(t3, np.cos(10*np.pi*t3), 'r-')
    plt.grid(True)
    plt.xlabel('Zeit (s)')
    plt.ylabel('Cosinus mit\n 10-facher Frequenz', multialignment='right')
    plt.show()
    

Aufgaben bis zum nächsten Mal

keine