<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bioinformatik Blog &#187; Tipps</title>
	<atom:link href="http://bioinfoblog.de/kategorie/tipps/feed/" rel="self" type="application/rss+xml" />
	<link>http://bioinfoblog.de</link>
	<description>Details zum Bachelorstudiengang Bioinformatik in TÃ¼bingen</description>
	<lastBuildDate>Wed, 25 Jan 2012 13:36:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Lineare Optimierung mit Open Office</title>
		<link>http://bioinfoblog.de/bereiche/informatik-teil/2009/01/16/lineare-optimierung-mit-open-office/</link>
		<comments>http://bioinfoblog.de/bereiche/informatik-teil/2009/01/16/lineare-optimierung-mit-open-office/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 14:52:57 +0000</pubDate>
		<dc:creator>Till Helge</dc:creator>
				<category><![CDATA[Informatik-Teil]]></category>
		<category><![CDATA[Tipps]]></category>

		<guid isPermaLink="false">http://bioinfoblog.de/?p=123</guid>
		<description><![CDATA[Im Rahmen der Vorlesung &#8220;Algorithmen &#038; Komplexität I&#8221; beschäftigen wir uns gerade mit Linearen Programmen und ihrer Lösung mittels des Simplex-Algorithmus. Da dieses Thema von einiger Bedeutung ist und es sehr praktisch sein kann, wenn man eine Lösung kennt, um schnell an die Lösung eines LP zu kommen, will ich hier einmal zusammenfassen, wie man [...]]]></description>
			<content:encoded><![CDATA[<p>Im Rahmen der Vorlesung &#8220;Algorithmen &#038; Komplexität I&#8221; beschäftigen wir uns gerade mit Linearen Programmen und ihrer Lösung mittels des Simplex-Algorithmus. Da dieses Thema von einiger Bedeutung ist und es sehr praktisch sein kann, wenn man eine Lösung kennt, um schnell an die Lösung eines LP zu kommen, will ich hier einmal zusammenfassen, wie man mittels Open Office Calc eine solche berechnen lassen kann:</p>
<h4>Vorbereitung</h4>
<p>Zuerst einmal muss man das Problem in einer für Open Office Calc lesbaren Variante in eine Tabelle eingeben. Als Beispiel nehme ich dieses (sinnlose, beispielhafte) LP:</p>
<pre>
max  5a +7b -6c +2d
s.t.  6a +8b <= 7
     -4c +9d <= 20
     a,b,c,d >= 0
</pre>
<p>Als Spreadsheet sieht das Ganze bei mir dann so aus:</p>
<p><img src="http://bioinfoblog.de/wp-content/uploads/2009/01/solver-tut-011.png" alt="LP als Open Office Spreadsheet" title="solver-tut-01" width="374" height="257" class="size-full wp-image-132" /></p>
<p>In der oberen Tabelle gibt man die Zielfunktion an. Dazu legt man zuerst einmal für jede Variable eine Zelle an (im Bild blau markiert). Jetzt braucht man eine Zelle, in der die Zielfunktion berechnet wird (im Bild rot umrahmt). Diese Berechnung muss natürlich mit Referenzen auf die Zellen erfolgen. Ich habe der Einfachheit halber noch die Koeffizienten aus der Zielfunktion in extra Zellen notiert (grüner Rahmen), so dass ich in der Zielfunktionszelle einfach aufsummieren kann. In der ersten Zelle im grünen Rahmen steht bspw.: </p>
<p><code>=B2*5</code></p>
<p>Und in der roten Zelle steht entsprechend nur:</p>
<p><code>=SUMME(C2:C5)</code></p>
<p>Wenn man lieber die Zielfunktion direkt eintragen will, würde das in unserem Beispielfall so aussehen:</p>
<p><code>=5*B2+7*B2-6*B4+2+B5</code></p>
<p>Der nächste Schritt ist nun die Eingabe der Nebenbedingungen. Es gibt dafür unterschiedliche Möglichkeiten, aber ich habe es jetzt mal übertrieben exakt notiert, damit es übersichtlich bleibt. Die Zellen in der gelb umrahmten Box enthalten die Bedingungen aus dem LP als Gleichung mit Referenzen auf die Zellen in der blauen Box. Die letzte Zeile enthält die erste Nebenbedingung und sieht so aus:</p>
<p><code>=(-4)*B4+9*B5</code></p>
<p>Der Teil rechts davon ist nicht so wichtig. Man kann das so machen, aber genauso gut kann man es sich auch schenken.</p>
<h4>Der Solver</h4>
<p>Nun ruft man über das Menü &#8220;Extras&#8221; den &#8220;Solver&#8221; auf. Es öffnet sich ein Dialog, den man wie folgt ausfüllen muss:</p>
<p><img src="http://bioinfoblog.de/wp-content/uploads/2009/01/solver-tut-02.png" alt="Solver-Dialog in Open Office" title="solver-tut-02" width="546" height="373" class="size-full wp-image-128" /></p>
<p>Als Ziel gibt man die Zelle mit dem Wert der Zielfunktion an (im Bild oben mit rotem Rahmen). In dem etwas seltsam betitelten Feld &#8220;Durch Zellenänderung&#8221; soll man die Zellen angeben, in denen die Variablen stehen. Man markiert also den Bereich, der im Bild oben blau umrahmt ist.</p>
<p>Etwas aufwändiger ist es nun, die Nebenbedingungen einzugeben, da man sie alle einzeln angeben muss. Man wählt &#8220;hinzufügen&#8221; und in dem kleinen Dialog kann man dann die Zelle auswählen, in der der Wert der Nebenbedingung berechnet wird. Dann kann man eine Relation auswählen und einen Wert eingeben (oder wie hier im Beispiel referenzieren).</p>
<p>Wenn es nötig ist, kann man jetzt unter &#8220;Optionen&#8221; noch einstellen, dass nur positive oder nur ganze Zahlen als Variablenbelegungen erlaubt sind.</p>
<p><em>Hinweis:</em> Im neuen Open Office 3.0 sieht der Solver etwas anders aus. Funktionieren sollte er aber genauso.</p>
<h4>Die Lösung</h4>
<p>Ist alles fertig eingegeben, drückt man auf &#8220;Lösen&#8221; und bekommt (hoffentlich) eine Bestätigung, dass eine Lösung gefunden wurde. In meinem Fall sah das Spreadsheet dann so aus:</p>
<p><img src="http://bioinfoblog.de/wp-content/uploads/2009/01/solver-tut-03.png" alt="Gelöstes LP in Open Office" title="solver-tut-03" width="335" height="238" class="size-full wp-image-129" /></p>
<p>Open Office hat nun die Variablen so belegt, dass der Zielfunktions-Wert maximiert wird. </p>
<p>Wenn du dir nochmal mein Beispiel genauer anschauen willst, kannst du dir hier auch das Spreadsheet runterladen. Wenn du den Solver öffnest, ist es möglich durch einen Klick auf &#8220;Laden&#8221; meine Einstellungen aufzurufen.</p>
<ul>
<li class="file zip"><a href='http://bioinfoblog.de/wp-content/uploads/2009/01/solver-tutorial-ods.zip'>Solver Tutorial Spreadsheet</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://bioinfoblog.de/bereiche/informatik-teil/2009/01/16/lineare-optimierung-mit-open-office/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>LaTeX: Logische Zeichen und Beweise</title>
		<link>http://bioinfoblog.de/tipps/2007/11/24/latex-logische-zeichen-und-beweise/</link>
		<comments>http://bioinfoblog.de/tipps/2007/11/24/latex-logische-zeichen-und-beweise/#comments</comments>
		<pubDate>Sat, 24 Nov 2007 11:22:45 +0000</pubDate>
		<dc:creator>Till Helge</dc:creator>
				<category><![CDATA[Tipps]]></category>

		<guid isPermaLink="false">http://bioinfoblog.de/tipps/2007/11/24/latex-logische-zeichen-und-beweise/</guid>
		<description><![CDATA[Dieses Semester steht &#8220;Mathematische Logik&#8221; auf dem Plan. Dies ist eine der Veranstaltungen, zu denen es sich lohnt eine saubere `Mitschrift `_ anzufertigen. Das Problem dabei ist nur, dass im Bereich der Logik sehr viele merkwürdige Zeichen verwendet werden, die man dann auf dem Computer erstmal dargestellt bekommen muss. Da ich meine Mitschriften in LaTeX [...]]]></description>
			<content:encoded><![CDATA[<p>Dieses Semester steht &#8220;Mathematische Logik&#8221; auf dem Plan. Dies ist eine der Veranstaltungen, zu denen es sich lohnt eine saubere `Mitschrift </downloads/>`_ anzufertigen. Das Problem dabei ist nur, dass im Bereich der Logik sehr viele merkwürdige Zeichen verwendet werden, die man dann auf dem Computer erstmal dargestellt bekommen muss. Da ich meine Mitschriften in <a href="http://de.wikipedia.org/wiki/LaTeX" title="Artikel bei Wikipedia">LaTeX</a> schreibe (unter Zuhilfenahme des großartigen Programms <a href="http://www.lyx.org" title="Zur Homepage von LyX">LyX</a>) schreibe, will ich hier mal kurz erklären, wie man einige der seltsam anmutenden Zeichen  und Notationen dort gesetzt bekommt.<br />
<span id="more-103"></span></p>
<h4>Sonderzeichen</h4>
<p>In der mathematischen Notation der Logik werden Sonderzeichen gebraucht, bspw. um Auswertungsfunktionen zu notieren oder die logische Ã„quivalenz zweier Ausdrücke aufzuschreiben:</p>
<div style="text-align: center; margin: 8px 0"><img src="http://bioinfoblog.de/wp-content/uploads/2007/11/logikzeichen.png" border="0" alt="Zeichen in der Logik"></div>
<p>Standardmäßig kann LaTeX solche Zeichen nicht setzen. Man kann es ihm aber sehr einfach beibringen, indem man das Paket <strong>mathabx</strong> installiert, das man bei <a href="http://www.ctan.org/tex-archive/fonts/mathabx/" title="mathabx bei CTAN">CTAN</a> herunterladen kann. Dieses unterstützt gigantisch viele Zeichen, wie man der <a href="http://tug.ctan.org/fonts/mathabx/mathtest.pdf" title="Zeichenübersicht von mathabx">Übersicht</a> <small>[PDF]</small> entnehmen kann.</p>
<h4>Beweise</h4>
<p>In den unterschiedlichen Kalkülen, die man in der Logik behandelt, hat sich eine besondere Schreibweise für Beweise eingebürgert. Von Hand sind diese recht leicht zu schreiben, am Computer werden sie aber schnell zu einer Qual.</p>
<div style="text-align: center; margin: 8px 0"><img src="http://bioinfoblog.de/wp-content/uploads/2007/11/logikbeweis.png" border="0" alt="Zeichen in der Logik"></div>
<p>Hier kann man sich des Pakets **proof** bedienen, das man ebenfalls bei <a href="http://www.ctan.org/tex-archive/macros/latex/contrib/lkproof/" title="proof bei CTAN">CTAN</a> bekommen kann. Nach der Installation und Einbindung in sein LaTeX Dokument kann man nun folgende Befehle benutzen:</p>
<ul>
<li><var>\infer<Folgerung><Ursprung></var></li>
<li><var>\infer[Beschriftung]<Folgerung><Ursprung></var></li>
<li><var>\infer*<Folgerung><Ursprung></var></li>
<li><var>\infer*[Beschriftung]<Folgerung><Ursprung></var></li>
</ul>
<p>Dabei ist die Folgerung immer das, was unter dem Strich steht, und der Ursprung das darüber. Wenn man neben dem Beweis eine Annotation haben möchte, kann man sich der eckigen Klammern bedienen. Setzt man hinter den Befehl einen Stern, wird statt der horizontalen Trennlinie eine vertikale gepunktete Linie dargestellt.</p>
<p>Um größere Beweise zusammenzubauen, muss man mehrere dieser Anweisungen in einander stapeln. Hat man mehrere Ursprungsterme, muss man diese mit einem Ampersand (&#038;) trennen. Ein kleines Beispiel:</p>
<pre class="literal-block">\\infer[\\rightarrow RAA]{\\psi}{
  \\infer{\\bot}{
    \\neg \\varphi &#038;
    \\varphi
  }
}</pre>
<p>Erhalten würde man damit folgende Darstellung:</p>
<div style="text-align: center; margin: 8px 0"><img src="http://bioinfoblog.de/wp-content/uploads/2007/11/logikbeispiel.png" border="0" alt="Darstellung des Beispiels"></div>
<h4>Gliederungsbäume</h4>
<p>Manchmal zerlegt man Aussagen mittels eines Gliederungsbaums. Um diese darzustellen, gibt es eine ganze Reihe von brauchbaren Paketen. Ich persönlich bevorzuge inzwischen zu diesem Zweck <strong><a href="http://www.matijs.net/software/synttree/" title="Homepage von syntree">synttree</a></strong>, das relativ einfach zu bedienen ist. Man muss einfach nur die Verschachtelung des Baums in folgender Art und Weise aufschreiben:</p>
<pre class="literal-block">\\synttree[$\\wedge$ [$\\neg$ [a]] [$\\vee$ [e] [f]]]</pre>
<p>Dabei bekommt man von LaTeX dann folgendes Ergebnis:</p>
<div style="text-align: center; margin: 8px 0"><img src='http://bioinfoblog.de/wp-content/uploads/2007/11/logiksynttree.png' alt='Gliederungsbaum' /></div>
]]></content:encoded>
			<wfw:commentRss>http://bioinfoblog.de/tipps/2007/11/24/latex-logische-zeichen-und-beweise/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debuggen mit eclipse</title>
		<link>http://bioinfoblog.de/bereiche/informatik-teil/2007/06/25/debuggen-mit-eclipse/</link>
		<comments>http://bioinfoblog.de/bereiche/informatik-teil/2007/06/25/debuggen-mit-eclipse/#comments</comments>
		<pubDate>Sun, 24 Jun 2007 23:12:34 +0000</pubDate>
		<dc:creator>Till Helge</dc:creator>
				<category><![CDATA[Informatik-Teil]]></category>
		<category><![CDATA[Tipps]]></category>

		<guid isPermaLink="false">http://bioinfoblog.de/bereiche/informatik-teil/2007/06/25/debuggen-mit-eclipse/</guid>
		<description><![CDATA[
Programmieren ist definitiv ein wichtiger Teil des Informatik- und damit auch des Bioinformatik-Studiums. Immernoch sehr beliebt ist hierbei die Sprache Java, mit der sich in Tübingen jeder (Bio-)Informatik-Student irgendwann einmal herumschlagen muss. Viele greifen dabei zur IDE eclipse, doch annähernd genauso viele wissen garnicht, was man mit eclipse alles machen kann und dieses Programm zu [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin: 0 0 5px 5px"><img src='http://bioinfoblog.de/wp-content/uploads/2007/06/eclipse_logo.gif' alt='eclipse Logo' /></div>
<p>Programmieren ist definitiv ein wichtiger Teil des Informatik- und damit auch des Bioinformatik-Studiums. Immernoch sehr beliebt ist hierbei die Sprache <a href="http://de.wikipedia.org/wiki/Java_(Programmiersprache)" title="Wikipedia-Artikel zu Java">Java</a>, mit der sich in Tübingen jeder (Bio-)Informatik-Student irgendwann einmal herumschlagen muss. Viele greifen dabei zur <abbr title="Integrated Development Environment">IDE</abbr> <a href="http://www.eclipse.org" title="eclipse Homepage">eclipse</a>, doch annähernd genauso viele wissen garnicht, was man mit eclipse alles machen kann und dieses Programm zu mehr macht als nur einem relativ langsamen und überladenen Texteditor.</p>
<p>Wenn man nämlich mal an dem Punkt angelangt ist, dass der Compiler sich nicht mehr über irgendwelche Syntaxfehler beklagt, dann kommt man oft in die Situation, dass sich bei der Ausführung Probleme ergeben, wie beispielsweise die immer wieder sehr beliebte &#8220;ArrayIndexOutOfBoundsException&#8221;, die den Programmierer darauf hinweist, dass er irgendwo einen Denkfehler gemacht hat und auf etwas zugreifen will, das nicht existiert. Und hier wird es jetzt interessant, denn eclipse bietet mit seinem Debugger eine gute Möglichkeit, um solchen Fehlern ein wenig auf den Zahn zu fühlen. Wenn jetzt Fragezeichen aufgetaucht sind und die Frage &#8220;Was zum Geier ist ein Debugger?&#8221; im Raum steht, spätestens dann lohnt es sich jetzt hier weiterzulesen.<br />
<span id="more-72"></span></p>
<h4>Was kann der Debugger?</h4>
<p>Wenn ein Programm ausgeführt wird (also von der Java Virtual Machine interpretiert wird), dann läuft es einfach so lange durch, bis es entweder fertig ist oder einen Fehler produziert. Mittels des Debuggers kann man das Programm gezielt während der Ausführung anhalten und einen Blick ins Innere der Virtual Machine werfen. Konkret heißt das, dass man beispielsweise die Variablenbelegungen zum Zeit der Ausführung begutachten kann.</p>
<h4>Wie starte ich den Debugger?</h4>
<p>Zuerst mal muss man sich klarmachen, dass es nur dann Sinn macht den Debugger zu starten, wenn man eine grobe Idee hat, wo man genauer hinschauen will. Wenn man nämlich einfach direkt statt auf &#8220;Run&#8221; auf &#8220;Debug&#8221; drückt, um das Programm auszuführen, passiert nichts Besonderes, sondern es wird eben einfach das Programm ausgeführt und nach der Ausführung beendet. Das ist natürlich nicht der Sinn der Sache.</p>
<p>Bevor man den Debugger startet muss man einen oder mehrere sogenannte <strong>Breakpoints</strong> setzen. Das sind Haltepunkte, an denen der Debugger die Ausführung unterbricht und uns den Blick ins Innere ermöglicht. Um solche Haltepunkte zu setzen, gibt es in eclipse mehrere Möglichkeiten. Die einfachste ist, neben der Zeile, in der man anhalten möchte, auf die Leiste einen Doppelklick zu machen, die normalerweise die Symbole für Warnungen und Fehler enhält. Dort erscheint dann ein blauer Punkt.</p>
<div style="text-align: center"><a href='http://bioinfoblog.de/wp-content/uploads/2007/06/eclipsetut1.png' title='Breakpoint setzen [Kompletten Screenshot zeigen]'><img src='http://bioinfoblog.de/wp-content/uploads/2007/06/eclipsetut1-cut.png' alt='Breakpoint setzen' /></a></div>
<p>Solche Punkte kann man soviele setzen, wie man möchte. Wenn man sie mit einem Rechtsklick erwischt, dann gibt es in diesem Menü auch die Möglichkeit Breakpoints zu deaktivieren. Das ist während eines Debugvorgangs oft die bessere Idee als den Punkt direkt wieder zu entfernen.</p>
<p>Nun ist es an der Zeit den Debugger zu starten. Dies geht über das Symbol &#8220;Debug&#8221; direkt neben dem Icon &#8220;Run&#8221;, mit dem man normalerweise die Ausführung des Programms veranlasst. (Passenderweise ist das Icon mit einem Käfer versehen.) Wenn man einfach auf den Button klickt, wird der Debugger mit der zuletzt verwendeten Einstellung aus dem &#8220;Run&#8221;-Menü gestartet. Man kann auch direkt auswählen, dass man als Java-Applikation debuggen möchte. Das geht absolut äquivalent wie das simple Starten des Programms:</p>
<div style="text-align: center"><img src='http://bioinfoblog.de/wp-content/uploads/2007/06/eclipsetut2.png' alt='Debugger starten' /></div>
<p>Wenn man einen Breakpoint gesetzt hat, dann fragt eclipse während der Ausführung, ob man in die &#8220;Debug-Perspektive&#8221; wechseln möchte. Das sollte man bestätigen und am besten direkt auch den Haken setzen, damit eclipse nicht wieder nachfragt. Nun erscheint eine neue Übersicht, die viel mehr Informationen enthält, als die vorherige. Um zur einfachen Ansicht zurückzukehren, kann man oben rechts auf &#8220;Java&#8221; klicken. Jetzt mal eine kurze Erklärung zu den einzelnen Komponenten von links oben nach rechts unten:</p>
<div style="text-align: center"><a href='http://bioinfoblog.de/wp-content/uploads/2007/06/eclipsetut3.png' title='Debug-Perspektive [Screenshot in Originalgröße zeigen]'><img src='http://bioinfoblog.de/wp-content/uploads/2007/06/eclipsetut3.thumbnail.png' alt='Debug-Perspektive' /></a></div>
<ul>
<li><strong>Debug:</strong><br />
       Dieser Bereich enthält den Stack der aktuellen Ausführung. Aus diesem Fensterchen kann man ersehen, welche Methoden gerade im Moment aufgerufen wurden und dazu geführt haben, dass der aktuelle Breakpoint erreicht wurde. Außerdem findet man hier die Schaltfläche (grüner Pfeil nach rechts), mit dem man den nächsten Auswertungsschritt einleiten kann, sowie den Button, um die Ausführung abzubrechen (rotes Quadrat).</li>
<li><strong>Variables:</strong><br />
       Der vielleicht interessanteste Teil der Debug-Perspektive. Hier kann man sich die zum aktuellen Ausführungszeitpunkt belegten Variablen und natürlich die Werte anschauen.</li>
<li><strong>Quelltext:</strong><br />
       Das ist ja nichts Neues bis auf die Tatsache, dass hier immer die aktuelle Zeile hervorgehoben wird, in der die Ausführung angehalten wurde. Hier kann man auch noch während des Debuggens Breakpoints setzen und entfernen. Veränderungen am Code wirken sich allerdings erst nach einem Neustart des Debuggers aus.</li>
<li><strong>Outline:</strong><br />
       Ebenfalls ein bekanntes Element aus der üblichen Java-Perspektive.</li>
</ul>
<p>Über die Möglichkeit schrittweise durch die Ausführung einer Schleife genau zu verfolgen, was mit den Werten passiert etc., kann man meistens sehr gut Fehlerquellen ermitteln, die man vielleicht vorher nicht bedacht hat. Auch bei Rekursionen kann das sehr nützlich sein, da im &#8220;Debug&#8221;-Fenster als Stack aufgezeigt wird, welche Methoden aufgerufen wurden und man sich so genauer ein Bild davon machen kann, was genau der Quelltext, den man zwar selber verfasst, aber vielleicht nicht ganz verstanden hat, eigentlich wirklich auslöst.</p>
<p>Zum Schluss kann ich nur empfehlen einfach mal mit dem Debugger herumzuspielen und vielleicht auch mal gezielt ein paar Fehler zu verursachen und sie zu beobachten. Während des normalen Programmierens treten zwar normalerweise auch genug Fehler auf, um Routine zu bekommen im Debuggen, aber da sollte es nach Möglichkeit dann schon etwas leichter von der Hand gehen, da man doch eher nicht die Zeit oder den Nerv hat sich mit den Details des Debuggers auseinanderzusetzen.</p>
<p>Wenn noch Fragen offen geblieben sind, dann nutzt doch einfach die Kommentar-Funktion hier im Blog oder schreibt mir eine <a href="http://bioinfoblog.de/impressum/" title="Kontaktformular im Impressum">eMail</a> mit euren Anregungen.</p>
<p>Viel Erfolg beim Debuggen. </p>
]]></content:encoded>
			<wfw:commentRss>http://bioinfoblog.de/bereiche/informatik-teil/2007/06/25/debuggen-mit-eclipse/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

