• Keine Ergebnisse gefunden

Praktikum Datamining und Sequenzanalyse

N/A
N/A
Protected

Academic year: 2022

Aktie "Praktikum Datamining und Sequenzanalyse"

Copied!
31
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Praktikum Datamining und Sequenzanalyse

Einführung

Kai Dührkop – kai.duehrkop@uni-jena.de

Markus Fleischhauer – markus.feischauer@uni-jena.de

(2)

Organisatorisches

Vorträge

freies Arbeiten

Zu bestimmten Terminen im SR 3423

Montag und Freitag im Linuxpool

https://bio.informatik.uni-jena.de/lehre/winter-1718/data-mining-und-sequenzanalyse/

(3)

Themen

Exakte Suche

Alignments

naive Suche, KMP, Boyer-Moore

globales/lokales Alignment, Alignmentscore mit linearem Speicher

Clustering, phylogenetische Bäume

UPGMA, WPGMA , Neighbor-Joining

(4)

Gruppen

2-4 Personen pro Gruppe

Mindestens 3 Gruppen → Gruppen bilden!

jede Gruppe bekommt ein gemeinsames git-Repository:

https://bio.informatik.uni-jena.de/git/

https://[USERNAME]@bio.informatik.uni-jena.de/git/r/lehre/datamining_ws2017_group[XX].git

(5)

Ziele

Teamarbeit

Implementierung bekannter von Algorithmen

Auswirkung der Implementierung auf die Performance

Arbeiten mit Versionskontrolle, Build Tool und IDE

(6)

Aufgaben(blatt)

Programmieren

Wartbarer Code – Objektorientiert (OOP)

Effizienter Code

Benutzerinterface (CLI oder Swing-GUI)

Dokumentation

Evaluation (Protokoll)

Präsentation (Vorträge)

(7)

Tools

Objektorientierte Programmierung mit Java

Dokumentation mit Javadoc

Arbeiten in einer Linux Umgebung

Versionskontrolle mit git

Projektmanagement mit Gradle

Benutzerinterface per CLI (oder GUI)

(8)

Auswertung und Vortrag

Auswertung

Aufgabenzettel bearbeiten (online)

Zeitmessungen

auf mögliche Fehler eingehen

Aufgabenzettel vor Vortrag abgeben!

Vortrag (Leitfaden online)

Jede Gruppe trägt einmal vor (Dauer 30 - 45 min)

Vorstellung und Diskussion der Ergebnisse

Vorführen der Benutzerschnittstelle

Details zur Implementierung

(9)

Linux

(10)

Linux bringt Vielfalt

Distributionen

Mint Debian Ubuntu openSUSE

Fedora Mageia Manjaro CentOS

LXLE Arch elementary OS

...

Desktopumgebungen

KDE Gnome LXDE Xfce

MATE Unity Cinnamon Panteon

(11)

Verzeichnisstruktur

„Filesystem“ von Thomei08 (Stefan Hagen, Bichwil) – de.wikipedia.org

/ [Wurzelverzeichnis]

bin/

etc/lib/

dev/sda1 sda2

[Gerätedatei]

[Gerätedatei]

home/

benutzername/

anwendername/

UNIX, Linux, ZETA

Office Dokument.odt Foto.png

media/

disk1/

usbdisk1/

tabelle.ods Bild.jpg Text.txt Verzeichnis/

Unterordner/

[Einhängpunkt für Datenträger]

[Einhängpunkt für Datenträger]

USB

usr/

/ [Wurzelverzeichnis]

bin/

System/

etc/dev/

disk disk2

[Gerätedatei]

[Gerätedatei]

Users/

benutzername/

anwendername/

Mac OSX

Office Dokument.odt

Volumes/

macosx/

usbmedium/

tabelle.ods Bild.jpg Text.txt Verzeichnis/

Unterordner/

[Einhängpunkt für Datenträger]

[Einhängpunkt für Datenträger]

USB

Applications/

[versteckt]

[versteckt]

[versteckt]

C:\ [Laufwerk]

Programme\

Dokumente und Einstellungen\

Adminstrator\

Benutzername\

Windows NT/2000/XP

Office Dokument.odt Foto.png

tabelle.ods Bild.jpg Text.txt

Verzeichnis\

Unterordner\

USB

Windows\

System32 E:\

F:\

[Laufwerk]

[Laufwerk, USB-Medium]

usr/ usr/ [versteckt]

Foto.png

(12)

Besonderheiten der Shell

info, man <Befehl> Hilfe zu einem Befehl

<Befehl> --help kurze Hilfe

Hilfe zu Befehlen

Name-Completion mit Tab-Taste

Completion

(13)

Befehle

ls Anzeige des Verzeichnisinhalts

cd Wechseln des Verzeichnisses

mkdir Erzeugen eines Verzeichnisses

rmdir Löschen eines leeren Verzeichnisses

rm Löschen einer Datei

rm -r Löscht rekursiv einen nicht leeren Ordners

mv Verschieben

cp Kopieren

cat / less Anzeigen von Dateien grep Suchen in einer Datei

head Anfang einer Datei anzeigen

df -h Anzeigen der Festplattenbelegung

(14)

Benutzerrechte

Jede Datei und jedes Verzeichnis ist einem Eigentümer und einer Gruppe zugeordnet.

verschiedene Rechte für Eigentümer, Gruppe und andere

Anzeigen der Rechte mit z.B. ls -la

chmod Setzen der Dateirechte chown Ändern des Eigentümers chgrp Ändern der Gruppe

umask Setzen der Standardrechte für neue Dateien

(15)

Java und OOP

(16)

Bitte nicht so!

public class Class1{

public static void save(String path, double score){...}

public static double[][] load(String path){...}

public static double algo1(double[][] data){...}

public static double algo2(double[][] data){...}

public static void main(String[] args){

double[][] data = load(args[0]);

double score1 = algo1(data);

double score2 = algo2(data);

save(args[1],score1);

save(args[2],score2);

}

}

(17)

Grundlagen

(18)

Klassen

(19)

Instanzen

(20)

Zugrif auf Attribute durch Getter/Setter

public class WithoutEncapsulation{

public String value;

public void printLength(){

System.out.println(“Länge: “ + value.length());

}

public static void main(String[] args){

WithoutEncapsulation we = new WithoutEncapsulation();

we.value = null;

we.printLength(); NullPointerException }

}

(21)

Zugrif auf Attribute durch Getter/Setter

public class WithEncapsulation{

private String value;

public void setValue(String value){

if(value == null) this.value = ““;

else this.value = value;

public void printLength(){

System.out.println(“Länge: “ + value.length());

}

public static void main(String[] args){

WithoutEncapsulation we = new WithoutEncapsulation();

we.setValue(null);

we.printLength(); Länge: 0 }

}

(22)

Vererbung

Tier

Fisch

Vogel Säugetier ...

...

... ...

Säugetier Katze Kuh Hase ...

...

(23)

Interfaces?

public interface Distance{

public double distance(Point p1, Point p2);

}

public class ManhattanDistance() implements Distance{

public double distance(Point p1, Point p2) {…};

}

public class EuclideanDistance() implements Distance{

public double distance(Point p1, Point p2) {…};

}

public class NearestNeighbor{

public NNResult cluster(List<Point> points, Distance distance){

… }

}

(24)

Mehrfachvererbung?

public abstract class Tier{

public abstract void move();

}

public interface CanFly{

public void fly();

}

public class Bird extends Tier implements CanFly{

public void move(){

//do something }

public void fly(){

//do something }

}

(25)

Polymorphismus

public class Clock{

public static getFormat(){…}

public void setTime(long ns){…} Ueberladen

public void setTime(int h, int m, int s, int ms){...}

}

public class MoreSpecificClock extends Clock{

public static getFormat(){…} Ueberdecken

@Override

public void setTime(long ns){…} Ueberschreiben

}

(26)

Sichtbarkeit

Modifier Class Package Subclass World public

protected

default

private

(27)

Hinweise

(28)

Zeit messen

#$ time sleep 10 real 0m10.116s user 0m0.001s sys 0m0.007s

via command line time

System.currentTimeMillis()

System.nanoTime()

long time = System.nanoTime();

//do something

long duration = System.nanoTime() - time;

via Java

(29)

Zeit messen

Vorgehen

Testumgebung beschreiben

mehrfach messen

Minimum aller Messungen verwenden

Betriebssystem

Systemspeicher

CPU

Java VM version

Heapspace

(30)

IO

try(BufferedReader reader =

new BufferedReader(new FileReader(path))){

String temp = null;

while((temp = reader.readLine()) != null){

//werte aus }

}catch(IOException e){

// ...

}

(31)

Fragen?

Referenzen

ÄHNLICHE DOKUMENTE

Soweit die Kläger weiter monieren, dass die von der Kammer zitierte Entscheidung des OLG Hamburg vom 18.7.2001 nicht einschlägig sei, da in der dort entschiedenen Fall der Zutritt

Eine erste Bewertung des energetischen Zustandes Ihres Hauses kann über Ihren jährlichen Heizenergieverbrauch ermittelt werden. Um Ihren Verbrauch bewerten zu können,

commit: 24b9da commit: 31fa5a commit: 8b5cx3 commit: d3aff1 commit: aa85fg.

● HashMap: schnelle Hash-Tabelle → Schlüssel ohne Reihenfolge ACHTUNG: Zusammenhang equals und hashCode. ● LinkedHashMap: Hash-Tabelle + verkettete Liste → Schlüssel

● Jede Datei und jedes Verzeichnis ist einem Eigentümer und einer Gruppe zugeordnet. ● verschiedene Rechte für Eigentümer, Gruppe

● HashMap: schnelle Hash-Tabelle → Schlüssel ohne Reihenfolge ACHTUNG: Zusammenhang equals und hashCode. ● LinkedHashMap: Hash-Tabelle + verkettete Liste → Schlüssel

● Jede Datei und jedes Verzeichnis ist einem Eigentümer und einer Gruppe zugeordnet. ● verschiedene Rechte für Eigentümer, Gruppe

Wir löschen personenbezogene Daten im Übrigen grundsätzlich dann, wenn kein Erfordernis für eine weitere Speiche- rung besteht. Ein Erfordernis kann insbesondere dann bestehen, wenn