Friday, September 16, 2011

Количество генов в клетке

Рассмотрим организм, обладающий одним из наименьших известных геномов - Mycoplasma genitalium.


Этот организм живет паразитом в млекопитающих, беря из них уже готовые маленькие молекулы. При этом он производит самостоятельно большие молекулы - ДНК, РНК, протеины - необходимые для базовых процессов наследования.
В его геноме, состоящем из 580070 нуктеотидных пар, насчитывается  477 генов, которые представлены 145018 байтами информации. 37 из этих генов кодируют трансферные, рибосомные и другие non-messenger  РНК. 297 генов кодируют протеины, из них 153 задействованы в репликации, транскрипции, трансляции и других подобных процессах с ДНК, РНК и протеинами; 29 - мембрана и поверхность клетки; 33 - транспортировка питательных веществ и других молекул сквозь мембрану; 71 - преобразование энергии, а также синтез и деградация маленьких молекул; 11 - регулировка деления клетки и другие процессы.

Минимальное число генов в жизнеспособной клетке на сегодняшний день составляет не менее 200-300 генов, среди которых около 60 генов являются core set  для всех живых видов без исключений.

Плазменная мембрана клетки

Еще одна универсальна фича клеток - они все окружены плазменной мембраной. Этот своеобразный барьер пропускает питательные вещества, сохраняет продукты синтеза клетки, и выводит наружу продукты распада. Не имея плазменной мембраны, клетка не смогла бы поддерживать свою целостность, оставаясь упорядоченной химической сиситемой.
Мембрана состоит из амфифильных молекул, которые, попадая в воду, спонтанно группируются в двухслойные сущности, пряча от воды свои гидрофобные части, и образуя таким образом маленькие закрытые полости, внутренее водяное содержание которых изолировано от внешней среды.
Гидрофобные части преобладающего большинства молекул мембраны являются гидрокарбоновыми полимерами (-CH2-CH2-CH2-), и их спонтанная агрегация в двухслойную полость явлется одним из многих примеров важного принципа: клетки производят молекулы, чьи химические свойства провоцируют их само-образование именно в те структуры, которые нужны клетке.
Граница клетки не может быть абсолютно непроницаемой. Поскольку клетка растет и размножается, ее мембрана должна пропускать внутрь сырье (raw materials) и выводить наружу отходы. Поэтому, во всех клетках есть специальные протеины, встроенные в мембрану, которые транспортируют определенные молекулы с одной стороны на другую.


Транспортные протеины в мембране определяют какие молекулы проходят внутрь клетки, а каталитические протеины внутри клетки определяют реакции, в которых участвуют эти молекулы.
Таким образом, путем определения протеинов, производимых в клетке, записанная в ДНК генетическая информация диктует ход протекания всех химических процессов в клетке.

Tuesday, September 6, 2011

Create GIT remote repository

# On local machine

cd foo_project
git init
git add *
git commit -m "My initial commit message"

# On remote machine (Git remote repository)

cd /var/git/
mkdir foo.git
cd foo.git
git --bare init

# On local machine

git remote add origin ssh://agolovatuk@example.com/var/git/foo.git
git push origin master
git checkout origin/master
git branch -f master origin/master
git checkout master

Some useful GIT tips

revert the last commit as it never was
# git reset --hard HEAD^

delete remote git branch
# git push origin :branchName

sync remote branches (removes tracking branch if remote branch was deleted)
# git remote prune origin

delete local branch links if they were deleted on origin
# git remote prune origin

create branch with a link to remote repository
# git checkout --track -b deployCandidate origin/deployCandidate

git config list
# git config -l

git show repository changes history
# git reflog
(to get to the some state run from reflog)
# git reset --hard HEAD@{0}

git show diff between what is commited (but not pushed) and the repository
# git diff HEAD^

colors in git put this to .git/config:
[color]
  branch = auto
  diff = auto
  status = auto
[color "branch"]
  current = yellow reverse
  local = yellow
  remote = green
[color "diff"]
  meta = yellow bold
  frag = magenta bold
  old = red bold
  new = green bold
[color "status"]
  added = yellow
  changed = green
  untracked = cyan

Setup mongodb replica sets

Here is a sample how to setup and run mongodb replica sets with 3 members (2 for data and 1 arbiter). We'll run on localhost on ports 27017, 27018 and arbiter on 27019.

# download mongodb here
# create data and log directories for all replica members

touch /var/log/mongodb/mongo1.log
touch /var/log/mongodb/mongo2.log
touch /var/log/mongodb/mongo3.log


mkdir /var/lib/mongodb/data1/db
mkdir /var/lib/mongodb/data2/db
mkdir /var/lib/mongodb/data3/db

# create configuration files for members

/etc/mongo1.conf:

dbpath = /var/lib/mongodb/data1/db
bind_ip = 127.0.0.1
noauth = true
verbose = true
port=27017
logpath=/var/log/mongodb/mongo1.log
logappend=true
replSet=mySetName

/etc/mongo2.conf:

dbpath = /var/lib/mongodb/data2/db
bind_ip = 127.0.0.1
noauth = true
verbose = true
port=27018
logpath=/var/log/mongodb/mongo2.log
logappend=true
replSet=mySetName

/etc/mongo3.conf:

dbpath = /var/lib/mongodb/data3/db
bind_ip = 127.0.0.1
noauth = true
verbose = true
port=27019
logpath=/var/log/mongodb/mongo3.log
logappend=true
replSet=mySetName

# run all members (use --rest if you want to use web admin UI, http://localhost:28017)

mongod --rest --config /etc/mongo1.conf &
mongod --rest --config /etc/mongo2.conf &
mongod --rest --config /etc/mongo3.conf &

# init replica sets in mongo shell

$ mongo
> cfg = {_id:"mySetName", members:[
{_id:0,host:"127.0.0.1:27017"},
{_id:1,host:"127.0.0.1:27018"},
{_id:2,host:"127.0.0.1:27019",arbiterOnly:true}
]}
> rs.initiate(cfg);
> rs.status()