Поиск приложения для планирования экспериментов или трэш-Excel

На vc.ru выходит очень много статей в подсайте "личный опыт" о том, как люди в Excel сводят таблички/ведут планировщики или финансы. Я тоже решил описать свой способ применения Excel.

С Excel я познакомился еще в школе и тогда мне он очень понравился своей простотой и возможностями. Время шло и я постепенно осваивал более сложные программныые комплексы типо MATLAB, Mathcad, R и даже Wolfram. Потребность в Excel была минимальной - только как удобный способ хранить и импортировать/экспортировать информацию.

Так как я занимаюсь наукой в biological sciences и работаю с клетками, а конкретно с human induced pluripotent stem cells и их дифференциацией в клетки составляющие сердечную мышцу, то мне нужен был простой и гибкий планировщик этого процесса.

Видео для привлечения внимания: Сокращающиеся кардиомиоциты (основные рабоиче клетки сердца), полученные из hiPSC посредством дифференциации Личный архив

Итак, перепробовав множество различных планировщиков многие из которых были онлайн я пришел к выводу, что для меня нет ничего что бы удовлетворяло мои потребности. Заодно я сформулировал потребности:

  • Это должно быть оффлайн приложение. Так как весь процесс работы с клетками происходит в культуральной комнате, то я должен иметь к нему доступ именно там. Культуральная комната считается "чистой" комнатой и туда не рекомендуется проносить постороннюю технику, да и сам процесс мотания туда-сюда с ноутом не вызывал у меня энтузиазма. Поэтому я решил, что на компе для микроскопа (не подключен к интернету) лучше поставить какой-то оффлайн эпп.
  • К тому же эпп не должен грузить комп т.к. сам софт для микроскопа не очень легкий, а хотелось быстродействия при взаимодействии с планировщиком.
  • В предполагаемом эппе должен быть список "протоколов", т.е. в нем можно было создать типовую задачу с таймлайнами. При указании начала задачи все контрольные точки должны были просчитываться автоматически.
  • Также функция архивирования или логгирования, а также комментарии должна была присутствовать.
  • Ну и должна быть сводная информация о задачах на сегодня и на завтра (чтобы подготовиться если такое необходимо перед этапом).

Изначально большинство приложений отсеились по причине того что они онлайн. Во-первых их не загрузишь на комп без интернета, а во-вторых при работающем софте микроскопа они подтормаживали и тем самым бесили меня. Когда тебе нужно просто вбить пару букв - ты тратишь на это пол минуты. Из оффлайн приложений я попользовался ToDoList, которое оказалось очень даже неплохим и в целом удовлетворяло необходимым критериям.

Внешний вид приложения ToDoList Slant.co
Внешний вид приложения ToDoList Slant.co

Но во-первых оно оказалось слишком обвешано всякими доп.функциями, а во-вторых (и это была основная претензия) в Task Tree просмотре при хотя бы 3-4 развернутых на просмотр процессах - они все не помещались на экран (у меня могло быть под каждую дифференциацию более 6 подзадач). Создавать же отдельные проекты (а потом архивировать и при необходимости искать архивные задачи) под это было крайне неудобно.

Поэтому мой выбор пал на "самописные" легкие таск-менеджеры. Я выбирал между Access и Excel (причем не Google Sheets, а оффлайн Excel). Access я отмел сразу т.к. не хотел заморачиваться и вникать в него. Google Sheets имел несомненное преимущество перед Excel - очень удобную и гибкую функцию query, которая творила чудеса, но GS был онлайн. За один вечер (пришлось повспоминать некоторые функции) я набросал следующий менеджер, который удовлетворяет моим запросам.

Ссылка на сам файл приведена ниже:

Итак в своей основе данный менеджер содержит три вкладки:

  • Protocols - куда я заношу протоколы (шаблоны), которые впоследствии буду использовать
  • Timeline - здесь я вписываю мои текущие процессы и эксперименты с присвоением уникального номера, даты начала процесса, используемого протокола и комментариями
  • Summary - автоматически формируемая форма по текущим задачам и задачам на следующий день

Protocols

Форма Protocols
Форма Protocols

В данную форму заносятся протоколы с сокращенным именем, описанием и пошаговым планом протокола (STEP 1... STEP N). Каждый шаг записывается в формате <day: description>, т.е. к примеру 2: RPMI+B27(-) + 5mM_IWP-2 расшифровывается как "на второй день дифференциации я добавляю RPMI+B27(-) и 5mM IWP-2. Такой формат удобен в последующем разборе протокола при формировании Timeline.

Timeline

Форма Timeline
Форма Timeline

Самая основная форма. В данную форму изначально заносится сокращенное название процесса, из выпадающего меню Protocol можно выбрать применяемый протокол. Также заносится дата начала, комментарии и можно указать признак Archive <true/false>.

При внесении протокола и даты начала формулы в ячейках STEP автоматически подставляют данные в соответствующие ячейки и составляют таймлайн:

  • для получения даты использовалась следующая формула (строчка F2) =LEFT(VLOOKUP(C2,Protocols!$A$2:$X$47,3,FALSE), SEARCH(":",VLOOKUP(C2,Protocols!$A$2:$X$47,3,FALSE),1)-1) + D2
  • для получения описания выполняемого действия (ячейка G2) =VLOOKUP(C2,Protocols!$A$2:$X$47,3,FALSE)

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

Summary

Форма Summary
Форма Summary

На эту форму у меня ушло больше всего времени. Эта форма собирает всю информацию по вкладке Timeline и аггрегирует те события которые должны произойти сегодня или завтра исключая "заархивированные" события. Если бы в Excel был аналог QUERY из Google Sheets, то формулы были бы намного проще. Но мне пришлось писать трэш-формулы.

Столбцы TODAY и TOMORROW похожи друг на друга за исключением того, что формулы в них ссылаются на сегодняшнюю дату и на завтра:

  • Столбец B:

=IFERROR(IF(INDEX(Processes!$A$2:$AA$19,SMALL(IF(ISNUMBER(FIND($C$1,Processes!$F$2:$AA$19)),MATCH(ROW(Processes!$F$2:$AA$19),ROW(Processes!$F$2:$AA$19)),""),ROWS($C$1:C1)),5) = 1, "", INDEX(Processes!$A$2:$AA$19,SMALL(IF(ISNUMBER(FIND($C$1,Processes!$F$2:$AA$19)),MATCH(ROW(Processes!$F$2:$AA$19),ROW(Processes!$F$2:$AA$19)),""),ROWS($C$1:C1)),1)),"")

  • Столбец С:

=IF(B4 = "", "", IFERROR(INDEX(Processes!$A$2:$AA$19,SMALL(IF(ISNUMBER(FIND($C$1,Processes!$F$2:$AA$19)),MATCH(ROW(Processes!$F$2:$AA$19),ROW(Processes!$F$2:$AA$19)),""),ROWS($C$1:C1)),SMALL(IF(ISNUMBER(FIND($C$1,Processes!$F$2:$AA$19)),(MMULT(100*MATCH(ROW(Processes!$F$2:$AA$19),ROW(Processes!$F$2:$AA$19)),MATCH(COLUMN(Processes!$F$2:$AA$19),COLUMN(Processes!$F$2:$AA$19))/MATCH(COLUMN(Processes!$F$2:$AA$19),COLUMN(Processes!$F$2:$AA$19)))+MATCH(COLUMN(Processes!$F$2:$AA$19),COLUMN(Processes!$F$2:$AA$19))),""),ROWS($C$1:C1))-100*ROUND(SMALL(IF(ISNUMBER(FIND($C$1,Processes!$F$2:$AA$19)),(MMULT(100*MATCH(ROW(Processes!$F$2:$AA$19),ROW(Processes!$F$2:$AA$19)),MATCH(COLUMN(Processes!$F$2:$AA$19),COLUMN(Processes!$F$2:$AA$19))/MATCH(COLUMN(Processes!$F$2:$AA$19),COLUMN(Processes!$F$2:$AA$19)))+MATCH(COLUMN(Processes!$F$2:$AA$19),COLUMN(Processes!$F$2:$AA$19))),""),ROWS($C$1:C1))/100,0)+6),""))

В результате многократного повторения команд MATCH, COLUMN, ROW, IF и т.д. в таблички отбираются только подходящие под дату и не являющиеся архивными события. Да, формулы выглядят как что-то написанное на аналоге брейнфака, но их было не сложно написать так как я их писал итерационно - сначала пишешь одну функцию ссылающуюся на основную формулу, смотришь то ли получилось или нет, потом добавляешь функцию к основной формуле и т.д.

Послесловие

Вообще часто в ситуации с софтом я наблюдаю следующую ситуацию: софта решающего какие-то проблемы очень много, но он сделан для того, чтобы покрыть как можно больше хотелок людей. В него добавляют кучу всяких "фич" для того чтобы БЫЛО МНОГО ВСЕГО и чтобы отличаться от других. От этого страдает как функционал софта (потому что 95% этих фич будет пользоваться 5% пользователей), так и "легкость" самого приложения. Опять же весь софт пытается следовать трендам и работать в облаке не имея вообще десктопного клиента.

Я заметил, что в основном всякие таск менеджеры и прочие вещи по микроменеджменту пишутся айтишниками для айтишников и отражают необходимый функционал и интерфейс айтишника. Для каких-то узкоспециализированных задач есть, конечно, свой софт, который делается по пожеланиям конечного пользователя (к примеру я нашел всего лишь один удобный программный комплекс по менеджменту лаборатории). Но чаще всего, просто невозможно найти нужный софт или кастомизировать существующий.

77
1 комментарий

очень интересная чушь

1
Ответить