Sunday, May 29, 2011

Seminar: Genome Rearrangements: from Biological Problems to Combinatorial Algorithms (and back)

http://logic.pdmi.ras.ru/GeneralSeminar/#NextSeminar

Abstract:
Recent DNA sequencing projects revealed that some classical biological theories may be incomplete or even incorrect.
I describe three controversial and hotly debated topics: Whole Genome Duplications, Random Breakage Model of Chromosome Evolution, and Mammalian Phylogenomics, and three related challenging algorithmic problems: Genome Halving Problem, Breakpoint Re-Use Problem, and Ancestral Genome Reconstruction Problem.
I further describe the "Multi-Break Rearrangements" combinatorial framework to analyzing these biological problem that, led to efficient algorithmic solutions and provided new evolutionary insights. We use these algorithmic results to reveal the fragile regions in the human genome where chromosomal rearrangements are happening over and over again. We further illustrate how this recent discovery allows one to predict how the human genome may evolve in the future.

Friday, May 27, 2011

Refactoring switch

More flexible and testable switch, based on Dictionary subclassing.

Tuesday, May 24, 2011

Git: installation, setup and manual

Main site and downloads:
http://git-scm.com
http://git-scm.com/downloads

Best GUI article:
http://kylecordes.com/2010/git-gui-client-windows

Mac GitX download:
http://gitx.frim.nl/index.html

Git for beginners:
http://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide

How-to-setup:

List of builds: http://code.google.com/p/msysgit/downloads/list

Win:
http://help.github.com/win-set-up-git
http://nathanj.github.com/gitguide/tour.html

Mac:
http://help.github.com/mac-set-up-git
http://mac.github.com


Clients Win:
Clients Mac:
Gitx client for Mac:

Homepage: http://gitx.frim.nl
Gitx on Github: http://github.com/pieter/gitx/tree/master
Git clone command: git clone git://github.com/pieter/gitx.git


Tips:
http://gitready.com

Branches:
http://genomewiki.ucsc.edu/index.php/Working_with_branches_in_Git

HOW TO:


Setup default editor

git config --global core.editor "mate -w"

Copy rsa key into Mac clipboard:
$ pbcopy < ~/.ssh/id_rsa.pub


Reference:

http://gitref.org
http://git-scm.com/docs

Book:
http://progit.org/book

Video tutorial:
http://excess.org/article/2008/07/ogre-git-tutorial
http://gitcasts.com

Tutorial:
http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html
http://savannah.gnu.org/maintenance/UsingGit
Crash-course: http://git.or.cz/course/svn.html

Debates:

SVN vs. GIT
GIT and Mercurial
Another one (russian)

Guides:
An Illustrated Guide to Git on Windows
http://habrahabr.ru/qa/2950
http://rezwyi.blogspot.com/2010/06/git-subversion.html
http://admdev.blogspot.com/2009/02/git.html

Distributed version control:
http://bazaar.canonical.com/en

Setting user home directory:
Open <InstallDir>/Git/etc/profile

# Set up USER's home directory
if [ -z "$HOME" -o ! -d "$HOME" ]; then
  HOME="$HOMEDRIVE$HOMEPATH"
  if [ -z "$HOME" -o ! -d "$HOME" ]; then
    HOME="$USERPROFILE"
  fi
fi

GIT installation folder on Mac

Mostly in /usr/local/git (there are also /etc/paths.d/git and /etc/manpaths.d/gititems).

GITX

GitX is not a complete command-line replacement. It doesn't create repositories or push/pull/fetch remotes, among other things. Use git to do those bits, and GitX for what it does best: browsing history and committing, among other things.
Also of note: Use the GitX -> Enable Terminal Usage menu so you can type gitx from the command line within a git repository.

Friday, May 20, 2011

The Computer Language Benchmarks

Коротко и просто про монады (цитата)

Было обнаружено, что много разнообразных вещей (а именно, комбинирование элементарных действий) укладывается в примерно одну схему.
Эта схема — обобщение теории групп.
Ну хорошо, в две схемы: монады и стрелки.

После чего отделили однообразные комбинаторы от содержательных вещей, что позволило
— сделать удобный сахар для комбинирования (do-нотацию и list comprehension)
— в ряде случаев абстрагироваться от класса контейнера
— сделать более стройную логику, что позволяет избежать изобретения велосипедов.

Вообще, такая идея — отделять комбинаторы от содержания — очень полезна.
Например, рекурсивная обработка списков: можно на каждый раз писать рукодельный обход, а можно использовать 4 унифицированных обхода — foldr, foldl, foldl', foldM.
Для любителей теории нужно вспомнить про ххххх-морфизмы и прочесть труд "Линзы, бананы и разлохмаченные провода".
После чего уже не возникает желания рожать алгоритмы, связанные с обходом других структур — например, деревьев. Вместо этого, в библиотеку, описывающую тип дерева, добавляются соответствующие функции для построения ана- и катаморфизмов. А дальше пользователь с их помощью выразит всё, что душе угодно.

Wednesday, May 11, 2011

Powered by Blogger.