LINUX.ORG.RU

Сообщения silw

 

ZFS pools vs huge pool

Дано: куча затасканных (дата изготовления 2010-2012, наработка - 5-6 лет 24x7x365), но живых SATA2 2TB HGST. Выкидывать их жалко (а их еще и будет прибавляться по мере замены), а применение придумать сложно.

Возникла идея: Сделать холодное (даже ледяное) хранилище для старых данных. Supermicro платформа на 60 дисков, zfs on linux, raidz3, dedup=off.

Вопрос: первоначально возникла мысль, сделать один гигансткий vdev raidz3. Потом здравый смысл возобладал и сложилось 2 варианта: либо 3 x 19 дисков (16 + 3), либо 5 x 11 (8+3), + hot spare.

Однако открытым остался вопрос, использовать ли все vdev в рамках 1 пула, или создать несколько независимых пулов? (фактически, vdev=pool).

Из плюсов нескольких пулов - отсутствует единая точка отказа. Из минусов не так удобно администрировать, директории придется разбрасывать по пулам в полуручном режиме.

Вся конструкция должна прожить 3-5+ лет.

Интересует ваше мнение.

 , ,

silw
()

Администратор вычислительного кластера

Лаборатория эволюционной геномики Факультета биоинженерии и биоинформатики МГУ им. М.В. Ломоносова – одна из сильнейших в области биоинформатики в России. Руководит лабораторией профессор Алексей Кондрашов.

Наш основной рабочий инструмент – вычислительный кластер «Макарьич», который мы и предлагаем вам взять под свою опеку. Это значит, что свободы действий будет много, но и вся ответственность за его работу ляжет на вас.

Что придется делать? Следить за состоянием кластера и особенно основной файловой системой Lustre, собирать системное и научное ПО по запросам пользователей, планировать развитие и закупки для кластера и, конечно, вести документацию.

Работают на кластере самые разные люди – от студентов до докторов наук; все они пылают страстью к научным открытиям, но ИТ-квалификация у них варьирует в широких пределах. Так что в сложных случаях надо будет помогать им со сборкой ПО и подсказывать оптимальный режим запуска задач с учетом особенностей кластера. В отдельных случаях намекать особенно увлеченным ученым на непропорционально большое количество ресурсов используемых ресурсов.

Формальные обязанности:

  • Обеспечение непрерывной работы кластера 24/7 (приемлемый downtime - в районе 14 дней за год).
  • Обеспечение сохранности данных пользователей (контроль работы Lustre и бэкапы, в том числе на ленты)
  • Сборка ПО, консультации пользователей по сборке софта и помощь в оптимизации под возможности и особенности кластера.
  • Составление планов развития кластера
  • Закупка необходимого оборудования (выбор оборудования, общение с поставщиками).

Требования:

  • Представление об архитектуре и работе вычислительных кластеров
  • Понимание принципов работы распределенных файловых систем
  • Опыт администрирования GNU/Linux и классических сервисов (DHCP, DNS, LAMP, etc)
  • Опыт работы с системами оркестрирования

Однозначным плюсом будут:

  • Опыт администрирования Lustre
  • Опыт работы с системами управления очередью задач
  • Высшее образование

Условия:

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

График работы:

Большую часть времени можно работать удаленно, но как минимум 1 раз в неделю необходимо посещение лабораторного семинара для личного общения с сотрудниками. Желательно, чтобы в аварийной ситуации, вы могли оказаться возле кластера в течение часа. Кластер физически расположен в здании Факультета биоинженерии и биоинформатики МГУ им. М. В. Ломоносова (м. Университет)

Зарплата:

120 000 рублей (испытательный срок - 80 т.р)

Контакты:

Писать по поводу вакансии можно мне:

Артур Залевский
aozalevsky@fbb.msu.ru
Telegram: @aozalevsky

 , , , ,

silw
()

Сегментация трехмерного грида

Есть трехмерная решетка, заполненная значениями. После обрезки по некому трешхолду получается приблизительно следующая картина: http://vsb.fbb.msu.ru/share/2017-10-22-191536_1918x1177_scrot.png

Хочется: выделить все непрерывные ненулевые (возможно с предварительным префиллом или гауссовым блюром) зоны (фиолетовые) и нарезать их в отдельные подмассивы.

В сторону каких библиотек на питоне или, хотя бы, алгоритмов смотреть?

 , , ,

silw
()

Вращение внутри трехмерных решеток

Всем привет. Нужна помощь с вращениями внутри трехмерных решеток.

Сейчас я генерирую по точкам трехмерного грида вот такую полусферу: http://vsb.fbb.msu.ru/share/2017-10-22-143518_1918x1177_scrot.png

и хочу делать вращение полусферы вокруг ее центра внутри трехмерной решетки.

Результат что-то вроде этого: http://vsb.fbb.msu.ru/share/2017-10-22-144203_1918x1177_scrot.png

Сейчас я применяю матрицу вращения отдельно к каждому вектору внутри грида (с учетом смещения центра) и проверяю попадает ли он в решетку/округляю до ближайшей вершины. Все работает ок даже за более-менее приемлимое время, но, мне кажется, должен быть более оптимальный путь: какая-нибудь библиотечная функция из нампая/сайпая, алгоритм или просто сишная библиотека. Можете что-нибудь подсказать?

 , , , ,

silw
()

Администратор вычислительного кластера

Лаборатория эволюционной геномики Факультета биоинженерии и биоинформатики МГУ им. М.В. Ломоносова – одна из сильнейших в области биоинформатики в России – ищет администратора вычислительного кластера. Руководит лабораторией профессор Алексей Кондрашов.

Наш основной рабочий инструмент – вычислительный кластер «Макарьич», который мы и предлагаем вам взять под свою опеку. Это значит, что свободы действий будет много, но и вся ответственность за его работу ляжет на вас.

Что придется делать? Следить за состоянием кластера и особенно основной файловой системой Lustre, собирать системное и научное ПО по запросам пользователей, планировать развитие и закупки для кластера и, конечно, вести документацию.

Работают на кластере самые разные люди – от студентов до докторов наук; все они пылают страстью к научным открытиям, но ИТ-квалификация у них варьирует в широких пределах. Так что в сложных случаях надо будет помогать им со сборкой ПО и подсказывать оптимальный режим запуска задач с учетом особенностей кластера. В отдельных случаях намекать особенно увлеченным ученым на непропорционально большое количество ресурсов используемых ресурсов.

Обязанности:

  • Обеспечение непрерывной работы кластера 24/7 (приемлемый downtime - в районе 10 дней за год).
  • Обеспечение сохранности данных пользователей (контроль работы Lustre и бэкапы, в том числе на ленты)
  • Сборка ПО, консультации пользователей по сборке софта и помощь в оптимизации под возможности и особенности кластера.
  • Составление планов развития кластера
  • Закупка необходимого оборудования (выбор оборудования, общение с поставщиками).

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

Кластер физически расположен в здании Факультета биоинженерии и биоинформатики МГУ им. М. В. Ломоносова (м. Университет)

Зарплата: 100 000 рублей (на руки)

Писать по поводу вакансии можно мне:

Артур Залевский
aozalevsky@fbb.msu.ru
Telegram: @aozalevsky

и моему коллеге:

Дмитрий Виноградов
dimavin@bioinf.fbb.msu.ru
Telegram: @dimavin

 , , ,

silw
()

Отличаете ли вы I от l ?

Обращаете ли вы на это внимание при выборе шрифта? Оказывается, далеко не многие. Например. Я вот пару минут пытался понять, как связаны loli и ионные жидкости.

Даже в серьезных журналах

 ,

silw
()

Ошибочный делит

Вообще-то вакансии разработчика hadoop и интегратора медоборудования - две большие разницы. Можно восстановить?

silw
()

Специалист по интеграции медицинского оборудования

Коллеги попросили опубликовать среди профильной аудитории

---

В Сколковский институт науки и техники в центр вычислительной биомедицины для проекта по созданию информационно-аналитической системы по обработке больших нейроданных требуется cпециалист по интеграции медицинского оборудования.

Мы начинаем амбициозный и сложный проект, в основе которого партнерские отношения между сетью медицинских лечебных и научных учреждений, специалистов и ученых МФТИ, Сколтеха и других ведущих научных организаций. Цель проекта - создание уникальной для России системы сбора и обработки данных о работе и функционировании головного мозга человека в норме и патологии. На выходе проекта мы ожидаем получить новые открытия, которые позволят заинтересованным сторонам иметь инструменты обработки данных, позволяющие ускорить разработку и внедрение инновационных технологий, увеличивающих ресурсы и пластичность головного мозга человека.

В 2017-18 гг. по плану реализации проекта в систему должны быть загружено более петабайта данных.

Нам нужен увлеченный профессионал, который с энтузиазмом возьмется за задачу корректной интеграции медицинского оборудования с нашей системой, которая будет взаимодействовать с крупнейшими научным центрами России.

Обязанности

  • Участие в проектировании процесса интеграции медицинского оборудования с системой.
  • Проведение экспертизы технических решений, подготовленных подрядчиками и соисполнителями.
  • Контроль и приемка работ по интеграции медицинского оборудования с системой.
  • Разработка документации к стандартам представления медицинских данных.
  • Консультирование специалистов по информатизации медицинских учреждений.
  • Проведение инструктажей и консультирований специалистов медицинских учреждений по функционированию системы и вопросам интеграции медицинского оборудования.

Требования

  • Глубокий опыт по разработке и внедрению стандартов представления медицинских данных
  • Навык работы с HL7, FHIR и OpenEHR и детальное понимание их устройства.
  • Опыт подключения медицинского оборудования к медицинской информационной системе и ее настройка.
  • Опыт работы с протоколами, используемыми для передачи данных медицинским оборудованием.
  • Знание современных международных стандартов передачи медицинских данных
  • Умение программировать на Python/Ruby/Perl

Условия

  • Полная занятость
  • Трудоустройство по договору подряда
  • Офис на территории технопарка Сколково
  • ЗП 100к - 150к
  • Рабочее место, Макбук и 4K монитор

Подробности

---

От себя добавлю, что компания людей, с которыми предстоит работать, приятнейшие люди ну и просто топовые ученые с публикациями вплоть до Nature.

 , openehr, ,

silw
()

Hadoop & Spark разработчик

Коллеги попросили опубликовать среди профильной аудитории

---

В Сколковский институт науки и техники в центр вычислительной биомедицины для проекта по сбору и обработке медицинских данных требуется Hadoop & Spark разработчик.

Мы находимся в самом начале очень амбициозного проекта. Его цель - создать систему, собирающую обезличенные данные со всего медицинского оборудования в нескольких больницах, для последующего анализа учеными. Мы уверены, что применив крутые алгоритмы машинного обучения, сможем найти закономерности, которые раньше были скрыты из-за маленького объема доступных данных.

За первые два года работы мы планируем загрузить больше петабайта данных на наш Hadoop кластер.

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

Обязанности

  • Разработка научного ПО под Hadoop&Spark
  • Помощь в освоении Hadoop&Spark учеными, сотрудниками лаборатории
  • Оптимизация разрабатываемого в лаборатории кода
  • Поиск и адаптация программ, разработанных другими биоинформатическими лабораториями под Hadoop, пригодных для наших нужд

Требования

  • Отличное понимание принципов работы Hadoop и Spark
  • Хорошее представление об экосистеме Hadoop в целом и областях применения отдельных инструментов в частности
  • Опыт программирования на Java&Python
  • Опыт написания MapReduce и Spark программ на Java&Python
  • Желателен опыт работы с Avro|Parquet
  • Желание разбираться в существующих биоинформатических пайпланах с целью их переноса на Hadoop&Spark
  • Желание экспериментировать

Условия

  • Полная занятость
  • Трудоустройство по договору подряда
  • Офис на территории технопарка Сколково
  • Возможна удаленная работа
  • ЗП 100 - 160к
  • Стол, стул, Макбук и 4K монитор

Подробности

---

От себя добавлю, что компания людей, с которыми предстоит работать, приятнейшие люди ну и просто топовые ученые с публикациями вплоть до Nature.

 , , , ,

silw
()

Облачные вычисления в науке и воркшоп по биоинформатике

Привет ЛОР!

Мы с товарищами из FutureBiotech решили тут делать научпоп в формате стримов, посвященных всему, что связано с современной биологией: открытия, лекарства, технологии. Это такие апгрейженные онлайн-трансляции, где мы очень внимательно читаем комментарии в чатах и отвечаем на вопросы зрителей. Форматы бывают достаточно разные - стримы прямо из лабораторий, интервью с людьми «в теме», трансляции интересных мероприятий из области.

В этот раз мы стримим лекцию и воркшоп по биоинформатике:

Наверняка вы слышали кучу страшилок про то, что антибиотики скоро перестанут работать и человечество вымрет под гнетом инфекций от суперустойчивых бактерий. Но как же это происходит? Почему бактерии приобретают устойчивость и как они ее передают.

Сегодня в об этом расскажет обворожительная Анна Костикова, PhD в области вычислительной биологии и сравнительной геномики, University of Lausanne, Switzerland. В вводной лекции она раскроет роль облачных вычислений в биоинформатике, а в ходе воршкопа каждый сможет самостоятельно попробовать что это такое - использовать топовые научные инструменты для анализа геномов бактерий.

Ждем вас в физическом воплощении в Ключе или в 19:30 на наших канал на SC2TV и YouTube.

P.S. Записи прошлых стримов можно посмотреть на YouTube.

P.P.S. И да, смотреть можно в HTML5 а для стриминга а используется опенсорсный OBS Studio иногда даже и на онтопике.

 , , ,

silw
()

Проблема с cython

Немного играюсь с cython'ом. Решил написать небольшой враппер, скармливающий данные одной библиотеке, столкнулся с небольшой проблемой.

Код враппера:

# -*- coding: utf-8 -*-

#cython: wraparound=False
#cython: boundscheck=False

from cpython cimport array
import array

ctypedef public struct qmmmdata:
    int atomNR
    int* labels

cdef void gen_input_data(qmmmdata *data):

    cdef int N = 5
    cdef array.array labels = array.array('i', [6, 4, 6, 1, 1])

    data.atomNR = N

    data.labels = labels.data.as_ints

    print 'Before'

    print 'Atom N:', data.atomNR

    print 'Labels:', [data.labels[i] for i in range(data.atomNR)]

cdef void print_result(qmmmdata *data):

    print 'After'

    print 'Atom N:', data.atomNR

    print 'Labels:', [data.labels[i] for i in range(data.atomNR)]

cdef void do_work():

    cdef qmmmdata data
    gen_input_data(&data)
    print_result(&data)

if __name__ == '__main__':

    do_work()

И запускаю вот так:

$ rm -f test_array.c test_array.h test_array.exe
$ cython --embed test_array.pyx
$ gcc test_array.c -I/usr/include/python2.7 -L/usr/lib -lpython2.7 -o test_array.exe
$ ./test_array.exe
Before
Atom N: 5
Labels: [6, 4, 6, 1, 1]
After
Atom N: 5
Labels: [159730576, 4, 6, 1, 1]

Возможно ЛОР сможет подсказать причину изменения содержимого переменной data.labels? Если реализовать этот кусок иначе, например с numpy массивами и передачей указателей на них, то все ок. Но теперь интересует причина проблем в этом месте.

 ,

silw
()

Бластим. Вакансии в биотехе и науке

Приветствую.

На правах рекламы:

Мои друзья запилили сервис с вакансиями в биотехе/фарме/науке Бластим. Пусть это и контринтуитивно, но помимо разных научных сотрудников и менеджеров, иногда, требуются и кодеры/администраторы для различных коммерческих и научных проектов..

В качестве примера, специально для erzented: ДС2, HPC администратор, 50 000 до 80 000 руб.

 ,

silw
()

Проблема с DNS

Возникла какая-то странная проблема с одним из DNS серверов провайдера. С машин, которые работают за NAT все работает, а при попытке запроса с роутера DNS не отвечает. Схема подключения такая:

workstation -- myrouter -- ISP_network --ISP_router
                           |     | 
                           DNS1  DNS2

Соответственно DNS2 ведет себя странно: с workstation

silwer@xwing ~ $ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 50:e5:49:50:68:94  
          inet addr:10.0.0.13  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::52e5:49ff:fe50:6894/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:6000  Metric:1
          RX packets:832496204 errors:0 dropped:0 overruns:0 frame:0
          TX packets:865320530 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:536139025480 (536.1 GB)  TX bytes:639174828957 (639.1 GB)

silwer@xwing ~ $ dig @93.180.63.3 ya.ru

; <<>> DiG 9.8.1-P1 <<>> @93.180.63.3 ya.ru
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2441
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;ya.ru.				IN	A

;; ANSWER SECTION:
ya.ru.			2459	IN	A	213.180.193.3
ya.ru.			2459	IN	A	213.180.204.3
ya.ru.			2459	IN	A	93.158.134.3

;; AUTHORITY SECTION:
ya.ru.			150688	IN	NS	ns2.yandex.ru.
ya.ru.			150688	IN	NS	ns1.yandex.ru.

;; ADDITIONAL SECTION:
ns1.yandex.ru.		329866	IN	A	213.180.193.1
ns2.yandex.ru.		150037	IN	A	93.158.134.1

;; Query time: 0 msec
;; SERVER: 93.180.63.3#53(93.180.63.3)
;; WHEN: Mon Nov 23 19:38:56 2015
;; MSG SIZE  rcvd: 146

silwer@xwing ~ $ sudo tcpdump -ni eth0 | grep 93.180.63.3
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
19:47:13.557739 IP 10.0.0.13.36275 > 93.180.63.3.53: 8052+ A? ya.ru. (23)
19:47:13.558255 IP 93.180.63.3.53 > 10.0.0.13.36275: 8052 3/2/2 A 213.180.193.3, A 213.180.204.3, A 93.158.134.3 (146)

c myrouter (NAT):

silwer@router:~$ ifconfig wan0

wan0      Link encap:Ethernet  HWaddr 00:25:90:65:eb:8a  
          inet addr:93.180.63.165  Bcast:93.180.63.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4568205707 errors:234 dropped:11021323 overruns:0 frame:234
          TX packets:3337250552 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4851237581876 (4.8 TB)  TX bytes:1561545151788 (1.5 TB)
          Interrupt:16 Memory:fbce0000-fbd00000 

silwer@router:~$ dig @93.180.63.3 ya.ru

; <<>> DiG 9.8.1-P1 <<>> @93.180.63.3 ya.ru
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

silwer@router:~$ nmap 93.180.63.3 -p 53

Starting Nmap 5.21 ( http://nmap.org ) at 2015-11-23 19:55 MSK
Nmap scan report for pop.genebee.msu.ru (93.180.63.3)
Host is up (0.00030s latency).
PORT   STATE SERVICE
53/tcp open  domain

Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds

Причем аналогичная ситуация со всеми машинами из сети 93.180.63.0/24 (я имею доступ нескольким из них). По уверениями администратора провайдера никаких изменений в сервере никаких в последнее время не происходило, но мой Nagios утверждает, что проблема началась несколько дней назад и имеет «мигающий» характер (даунтаймы по несколько часов). Чтобы такого могло происходить с DNS сервером в эти моменты?

 ,

silw
()

Хранилище для небольшого кластера

Есть DAS HP MSA 2400 SAS LFF + 3 полки расширения (итого 48 х 4Tb SAS HDD). Все это должно стать СХД для небольшого кластера. Соответственно хочется собрать это в единый том, который будет раздаваться через NFS (отсутствие жестких требований к производительности, масштаб и сложность модификации существующей инфраструктуры делают Lustre неудобным вариантом).

Мне видится такая конфигурация конфигурация:

Внутри каждой полки Raid6 из 10 дисков + 2 hot-spare. А затем собрать mdadm Raid0 из 4х Raid6. То есть в итоге получится гибридный (hw + mdadm) Raid60 на ~ 120Tb.

Какие, потенциально, могут возникнуть проблемы при таком сетапе?

Что случится с Raid0 если, например, одна из полок отключится/включится?

Есть ли какие-нибудь альтернативные сетапы?

P.S. Оборудование такое, какое есть (повлиять на его закупку возможности, фактически, не было). Так что теперь надо оптимально использовать то, что есть.

 , ,

silw
()

Выбор ленточной библиотеки

Добрый день.

Расклад такой, имеется ~17Тб холодных данных, которые должны вырасти в ближайшие 3-4 года до 30Tб. Сейчас это лежит на Raid6, но старая полка и старые же диски (4-5 лет 2Tb HGST SATA) заставляют активно задумываться о дополнительном резервировании. Особенно с учетом того, что аналогичная полка недавно выдала множественный отказ дисков. Пуcть это и оказалось багом железки и все группы восстановились нормально с тех же дисков, но нервов съело порядочно.

Как один из вариантов, рассматривается покупка ленточной библиотеки. Но, как водится, с такой задачей я раньше не сталкивался и опыта в подборе не имею совсем, соответственно рассчитываю на помощь местной аудитории.

Формализация задачи:

  1. Данные уже демультепликсированны и сжаты, так что, видимо, надо ориентироваться на сырую емкость библиотеки без больших надежд на принудительную дедупликацию.
  2. Из-за п.1 - сырая емкость ~ 30Тб
  3. Данные холодные, прям очень. То есть это именно резерв на случай необратимых повреждений текущего Raid 6. Так что за Гб/с гнаться смысла нет.
  4. Интерфейсы большого значения не играют, наверное.
  5. Бюджет ограничен - мы не очередной газпром, а обычный такой вуз.

Вопросы:

  • Каков ваш опыт использования?
  • Какие конкретные модели можете посоветовать?
  • Имеет ли смысл покупать LTO-6 приводы и картриджи или LTO-5 хватит всем?
  • Как у них с масштабированием?

Я тут еще подумал. В принципе, данные квантуемые (запуски научного прибора), объем каждого куска, правда, скачет от 30 до 700Gb, в среднем 200-300Gb. Соответственно можно ли рассматривать в такой ситуации автозагрузчик с ручной сменой картриджей после копирования данных с каждого запуска? Насколько они они удобны в использовании?

 , ,

silw
()

Вконтакте умер, да здравствует «Я - гражданин России»

Собственно сабж - концепт новой социалочки.

для Ъ: по ссылке скриншоты презентации новой локальной социальной сети от одной малоизвестной общественной организации.

 

silw
()

Расшифровать код с Numpy

Есть такой алгоритм. В целях масштабирования, я хочу его немного перепилить, но что-то под ночь совсем голова закипает вот на этом куске:

    I = np.where(np.diag(A + R) > 0)[0]
    K = I.size  # Identify exemplars

    if K > 0:
        c = np.argmax(S[:, I], axis=1)
        c[I] = np.arange(K)  # Identify clusters
        # Refine the final set of exemplars and clusters and return results
        for k in range(K):
            ii = np.where(c == k)[0]
            j = np.argmax(np.sum(S[ii[:, np.newaxis], ii], axis=0))
            I[k] = ii[j]

        c = np.argmax(S[:, I], axis=1)
        c[I] = np.arange(K)
        labels = I[c]
        # Reduce labels to a sorted, gapless, list
        cluster_centers_indices = np.unique(labels)
        labels = np.searchsorted(cluster_centers_indices, labels)

S, A, R - квадратные несимметричные матрицы NxN

    I = np.where(np.diag(A + R) > 0)[0]
    K = I.size  # Identify exemplars
Складываем матрицы, находим на диагонали элементы большие 0, получаем одномерный массив с индексами таких cтолбцов, в которых эти элементы находятся. K <= N

c = np.argmax(S[:, I], axis=1)

S[:, I] - матрица, составленная из столбцов, индексы которых мы получили на предыдущем шаге (Причем, так как K <=N, то это уже не NxN, а NxK)

c - одномерный массив c индексами максимумов в строках матрицы NxK

А вот дальше совсем беда.

Если поможет, могу показать ссылку на исходный код на матлабе, с которого переписывался код по ссылке, и даже статью.

Заранее благодарю за помощь.

 ,

silw
()

Убрать панель в evince

После одно из недавних апдейтов, в evince в режиме презентации появилась назойливая панель, которую нельзя скрыть. Гугл тыкал, dconf смотрел, ничего не придумал. Может местная публика подскажет.

Выглядит эта панелька так.

ОС: Ubuntu 14.04

Evince: 3.10.3

P.S. Предупреждая ответы:

1. Enjoy your Gnome!

2. Да, я знаю об альтернативах и собираюсь перебираться на pdf presenter console, но все же...

 

silw
()

Разложение сигнала на составляющие

Есть набор таких вот расчетных кривых. И есть одна экспериментальная, которая, по идее, должна являться суммой расчетных с некоторыми коэффициентами. Есть ли способ разложить экспериментальную кривую на набор расчетных, так чтобы получить эти самые коэффициенты?

P.S. Кривые только выглядят гладкими, получены они численно.

 ,

silw
()

Бинарник на C в библиотеку для питона

Есть программка на C.

Вкратце, она делает следующее:

  • Последовательно загружаются 2 текстовых файла
  • Вычисляет по ним определенное значение
  • Выводит значение
  • Записывает выходные файлы

Хочется иметь ее функционал в виде библиотеки, которую можно дергать из питона, чтобы можно было делать следующее:

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

По сути, надо просто аккуратно распилить main на несколько функций.

В качестве вознаграждения - благодарность и/или пиво при встрече.

Подробности можно по почте или джаберу aozalevsky@gmail.com

 ,

silw
()

RSS подписка на новые темы