Я предполагаю, что меня читают биологи и информатики. Поскольку я сейчас столкнулась с феерическими расчетами, от которых у меня волосы на загривке вздыбились, считаю, что будет неплохо, если я расскажу причастным где впредь быть предельно внимательным. Я, к сожалению, не могу дотянуться до того парня, который это посчитал, чтобы надавать ленейкой по рукам. Но должна сказать, что это сервис, претендующий на серьезный.
Больше чем месяц назад я получила результаты и, помнится, даже всхипнула от ужаса. Дело было вот как.
Перед биологом стоит задача - сравнить экспрессию генов в нескольких тканях. Для этого надо выделить РНК и каким-то из методов определить, с каких генов эта РНК считалась и в каком количестве. Методов есть несколько. От нозерна до микрочипов. Самый модный - это секвенирование 454. О нем и пойдет речь.
Я не буду вдаваться в подробности, что за ткани я анализирую, скажу только, что этой ткани столько, что невооруженным глазом не видно, нарубили лазером под микроскопом. Выделили РНК в количествах на пределе воображения и отправили на прочитку (секвенирование). Это приблизительно так, как сейчас читают геномы, только не ДНК, а РНК. Причем прочитка - это полноценный сервис, который включает все. На выходе, как я уже упоминала 300 гигов информации: сырые сиквенсы, сбивка в контиги, скаффолды и унигены, бласты, функциональная аннотация по геномной антологии, метаболитических путях, визуализация, статистическая обработка и дифференциальный анализ. Все растыкано по 2000 тыщам файлов. Задача биолога теперь все ОСМЫСЛИТЬ и интерпретировать и сделать выводы, как же отличается работа генов в разных тканях и почему.
Я сузила сначала задачу и из вороха файлов нашла исходник в экселе: сравнение генной экспрессии в двух (из 48ми) тканях. Теперь внимание и пристегнитесь. Результаты сравнения представлены в виде log2 значения соотношения экспрессии генов в ткани 1 vs. 2. Просто настолько, что можно понять и идиоту, верно? Значения колеблются от -15 до плюс 15 (это уже log2). Огого, сечете разницу в экспрессии? Всех генов несколько десятков тыщ.
В этом месте меня подвело банальное любопытство. Что ж это за ген такой, у которого разница в работе в двух близлежащих тканях 214? Роюсь в ворохе файлов и нахожу сырые результаты. И тут, друзья, у меня глаза на переносице и сбежались. Потому что я знаю, что это за сырые значения. А это всего навсего количественный подчет ШТУК КУСКОВ РНК, которые принадлежат одному гену. Держитесь теперь крепче, пример из жизни.
Ген Х. Логарифмированное значение соотношения экспрессии в тканях 1 vs. 2 равно 14,72. Сырые данные в студию. В ткани Nr.1 насчитали 0 (ноль) кусков, в ткани Nr.2 насчитали 27 кусков. Формула расчета log2(27:0). Что, съели касатики?!!! Говорите на ноль нельзя делить? Ну нельзя так нельзя (хотя в результатах стоит ноль). Я прикинула, как могли бы рассуждать те, кто уныло смотрит на ноль. Ноль надо заменить на число, отличное от нуля. Я начала тупо подставлять и проверять логарифмом, как у них 14,72 получилось. Оказалось, что 0 приравняли до 0,001. log2(27:0,001)=14,72
Если вы еще не ржете, посчитайте, какое значение log2 будет, если в ткани Nr.1 насчитали 0 (ноль) кусков, в ткани Nr.2 насчитали 2 (два) куска. То есть вы догадываетесь, куда можно засунуть эти 300 гигов и ограничиться одной таблицей в экселе, да?
Проблема в том, что редкий биолог интересуется сырыми данными, если сервис поставил уже готовое соотношение в красочных схемах и диаграммах. И редкий информатик интересуется особенностями того, что ему поручено посчитать. Для него это голые абстрактные числа, а для меня это штуки кусков РНК. Особенно печально, если биолог мало знает о проблемах и недостатках того метода, которым хочет что-то проверить. После таких ляпов у меня возникли подозрения к алгоритмам сбивки в контиги (которые я встречала в других случаях), к проблемам аннотации (с которой долбилась годами). Эта же проблема также касается и анализов всяких там аффиметриксов и прочих биочипов.
Вырасту большой и научусь программированию сама.
Больше чем месяц назад я получила результаты и, помнится, даже всхипнула от ужаса. Дело было вот как.
Перед биологом стоит задача - сравнить экспрессию генов в нескольких тканях. Для этого надо выделить РНК и каким-то из методов определить, с каких генов эта РНК считалась и в каком количестве. Методов есть несколько. От нозерна до микрочипов. Самый модный - это секвенирование 454. О нем и пойдет речь.
Я не буду вдаваться в подробности, что за ткани я анализирую, скажу только, что этой ткани столько, что невооруженным глазом не видно, нарубили лазером под микроскопом. Выделили РНК в количествах на пределе воображения и отправили на прочитку (секвенирование). Это приблизительно так, как сейчас читают геномы, только не ДНК, а РНК. Причем прочитка - это полноценный сервис, который включает все. На выходе, как я уже упоминала 300 гигов информации: сырые сиквенсы, сбивка в контиги, скаффолды и унигены, бласты, функциональная аннотация по геномной антологии, метаболитических путях, визуализация, статистическая обработка и дифференциальный анализ. Все растыкано по 2000 тыщам файлов. Задача биолога теперь все ОСМЫСЛИТЬ и интерпретировать и сделать выводы, как же отличается работа генов в разных тканях и почему.
Я сузила сначала задачу и из вороха файлов нашла исходник в экселе: сравнение генной экспрессии в двух (из 48ми) тканях. Теперь внимание и пристегнитесь. Результаты сравнения представлены в виде log2 значения соотношения экспрессии генов в ткани 1 vs. 2. Просто настолько, что можно понять и идиоту, верно? Значения колеблются от -15 до плюс 15 (это уже log2). Огого, сечете разницу в экспрессии? Всех генов несколько десятков тыщ.
В этом месте меня подвело банальное любопытство. Что ж это за ген такой, у которого разница в работе в двух близлежащих тканях 214? Роюсь в ворохе файлов и нахожу сырые результаты. И тут, друзья, у меня глаза на переносице и сбежались. Потому что я знаю, что это за сырые значения. А это всего навсего количественный подчет ШТУК КУСКОВ РНК, которые принадлежат одному гену. Держитесь теперь крепче, пример из жизни.
Ген Х. Логарифмированное значение соотношения экспрессии в тканях 1 vs. 2 равно 14,72. Сырые данные в студию. В ткани Nr.1 насчитали 0 (ноль) кусков, в ткани Nr.2 насчитали 27 кусков. Формула расчета log2(27:0). Что, съели касатики?!!! Говорите на ноль нельзя делить? Ну нельзя так нельзя (хотя в результатах стоит ноль). Я прикинула, как могли бы рассуждать те, кто уныло смотрит на ноль. Ноль надо заменить на число, отличное от нуля. Я начала тупо подставлять и проверять логарифмом, как у них 14,72 получилось. Оказалось, что 0 приравняли до 0,001. log2(27:0,001)=14,72
Если вы еще не ржете, посчитайте, какое значение log2 будет, если в ткани Nr.1 насчитали 0 (ноль) кусков, в ткани Nr.2 насчитали 2 (два) куска. То есть вы догадываетесь, куда можно засунуть эти 300 гигов и ограничиться одной таблицей в экселе, да?
Проблема в том, что редкий биолог интересуется сырыми данными, если сервис поставил уже готовое соотношение в красочных схемах и диаграммах. И редкий информатик интересуется особенностями того, что ему поручено посчитать. Для него это голые абстрактные числа, а для меня это штуки кусков РНК. Особенно печально, если биолог мало знает о проблемах и недостатках того метода, которым хочет что-то проверить. После таких ляпов у меня возникли подозрения к алгоритмам сбивки в контиги (которые я встречала в других случаях), к проблемам аннотации (с которой долбилась годами). Эта же проблема также касается и анализов всяких там аффиметриксов и прочих биочипов.
no subject
Date: 2011-04-21 07:34 am (UTC)"Вот так и рождаются нездоровые сенсации", как сказал персонаж братьев Стругацких, выгоняя на мороз наколдованного гигантского комара...
no subject
Date: 2011-04-21 07:36 am (UTC)no subject
Date: 2011-04-21 07:38 am (UTC)сочувствую, на самом деле. этоже натуральная засада, такие считатели.
no subject
Date: 2011-04-21 07:46 am (UTC)no subject
Date: 2011-04-21 07:47 am (UTC)no subject
Date: 2011-04-21 07:50 am (UTC)no subject
Date: 2011-04-23 06:57 pm (UTC)no subject
Date: 2011-04-24 10:48 am (UTC)no subject
Date: 2011-04-24 08:55 pm (UTC)no subject
Date: 2011-04-24 11:48 pm (UTC)no subject
Date: 2011-04-25 05:29 am (UTC)Рискну предположить, что вы не покупате крольчатины
Date: 2011-04-25 04:08 pm (UTC)У меня был однажды эксперимент о том, как по разному люди решают одну и ту же задачу. Постановка была такая, примерно:
Реализовать процедуру-переключатель, принимающую в качестве единственного параметра величину типа integer, и назначающую этому параметру
(1) значение (integer) 7, если получено значение пяти, (2) значение (integer) 5, если получено значение семь.
Вот некоторые решения (адатировано):
/* студент */
procedure switchValue ( var pInteger : integer ) ;
begin
if ( pInteger = 5 )
then pInteger := 7
else
if ( pInteger = 7 )
then pInteger := 5
else ;
end ;
/* ассистент */
procedure switchValue ( var pInteger : integer ) ;
begin
if ( pInteger = 5 )
then pInteger := 7
else ;
if ( pInteger = 7 )
then pInteger := 5
else ;
end ;
/* доцент */
procedure switchValue(var z:integer);begin if (z=5) then z:=7 else if(z=7)then z:=5 end;
/* программист */
procedure switchValue ( var pInteger : integer ) ;
begin
pInteger := 13 - pInteger
end ;
/* программист */
procedure switchValue ( var pInteger : integer ) ;
begin
case ( pInteger ) of
5, 7 : pInteger := 13 - pInteger
else
reportAnException ( 'switchValue', 001 )
end case ;
end ;
Re: Рискну предположить, что вы не покупате крольчатины
Date: 2011-04-25 09:21 pm (UTC)Во-вторых, как программеру мне таки было бы ближе
procedure switchValue ( var pInteger : integer ) ;
begin
case ( pInteger ) of
5 : pInteger := 7;
7 : pInteger := 5;
else
{* ничего не делаем, ибо не сказано что-либо делать *}
end case ;
end ;
Так код проще править.
Re: Рискну предположить, что вы не покупате крольчатины
Date: 2011-04-25 09:22 pm (UTC)Yep, 12 <> 13
Date: 2011-04-25 10:13 pm (UTC)Да, этот case-вариант хорош и для чтения, и для сопровождения, и для компиляции, и для QC/QA.
А в том, давнем исследовании, без ошибок написали только студент и доцент. Второй программёр хотел "утереть нос" первому, и скопипейстил его ошибку.
Re: Рискну предположить, что вы не покупате крольчатины
Date: 2011-04-27 11:51 am (UTC)Re: Рискну предположить, что вы не покупате крольчатины
Date: 2011-04-27 05:34 pm (UTC)Thanks,
/* другими словами, здесь, в нотации Pascal, предложена вот такая реализация: */
procedure switchValue ( var pInteger : integer ) ;
begin
pInteger := pInteger xor 2 ;
end ;
Yep, я могу назвать по крайней мере двух уважаемых мною профессионалов, кто сделал бы в таком стиле, и это - без выпендрежа.
А постановщики, увы, не заботятся о полноте описания. Когда к ним приходишь с вопросами, сердятся, типа: "Это же элементарно, вы же программисты, неужели сами не можете догадаться, что тут нужно сделать?" И прожект-менеджеры хмурятся и переглядываются.
Re: Рискну предположить, что вы не покупате крольчатины
Date: 2011-04-27 05:50 pm (UTC)и правильно. потому что 12-x — это чревато переполнением при передаче страшных чисел. а переполнение — это в стандартном паскале, емнип, нештатная ситуация с абортами.
>А постановщики, увы, не заботятся о полноте описания
ну да. и их тоже понять можно — кому-то вещь очевидная, и описывать даже мысли не появляется. а кто-то и рад бы, да не может, писалка не оттуда выросла. потом получают чудо-юдо и удивляются.
с другой стороны — все мы хороши же. программер выкатит, а потом тоже удивляется: «какие тупые пользователи! ну как можно не понять, что галка 'использовать клингонский в исключительных ситуациях' обозначает 'на самом деле сначала использовать минбарский, а потом расстрелять'».