воскресенье, 19 июня 2011 г.

Python2.6 and control systems: building lapack, blas, slycot and python-control under win32_x86

Недавно начал разбираться с вейвлетами и решил под это дело изучать python. В тоже время на работе понадобилось считать АФЧХ линейных систем (ранее делал это в MATLAB, теперь же отказался от него в силу перехода на лицензионно чистый софт). Был найден пакет python-control, и началась эпопея установки всего этого дела под ОС Windows (ну что поделать, на работе пока не перешел на "кошерные" ОСи). Для начала установил сам python, модули numpy, scipy, matplotlib - это задача тривиальная, решается путем скачивания инсталляторов с соответствующих сайтов. Для установки python-control необходимо посетить http://sourceforge.net/projects/python-control/files/ и скачать архив с исходниками, после чего перейти в директорию с распакованными исходниками и выполнить setup.py install. Что тоже тривиально. Но вся эта канитель требует модуля slycot, который просто так не устанавливается, ибо использует модули написанные на фортране, которые надо собрать вместе с библиотеками lapack и blas. Итак:
  1. Сперва устанавливаем mingw32 (понадобится компилятор fortran, но я в придачу поставил и остальные) с http://mingw.org
  2. Посещаем http://www.netlib.org/lapack/ скачиваем релиз lapack-3.2.1. Распаковываем.
  3. В полученную директорию распаковываем LAPACK_gfortran_Win_7Nov2010.zip с http://gcc.gnu.org/wiki/LAPACK%20on%20Windows
  4. Запускаем bat-файл makelibs. Ждем. Полученные lapack.a и blas.a переименовываем в liblapack.a и libblas.a, копируем в mingw-dir/lib/gcc/mingw32/x.y.z, где mingw-dir - это директория куда установлен mingw (у меня D:/Program Files/MinGW), x.y.z - версия gcc (в моем случае 4.5.2)
  5. Скачиваем исходники slycot с https://github.com/avventi/Slycot и распаковываем. Переходим в распакованную директорию и правим setup.py: libraries=['lapack', 'blas']
  6. Далее топаем в Python26/Lib/site-packages/numpy/distutils и правим файл mingw32compiler.py: добавляем строку from distutils.version import LooseVersion после from distutils.version import StrictVersion и вместо self.gcc_version = StrictVersion(result.group(1)) пишем self.gcc_version = LooseVersion(result.group(1))
  7. Выполняем setup.py config_fc --fcompiler=gnu95 config_cc --compiler=mingw32 build
  8. Если все нормально соберется, выполняем setup.py install
В итоге имеем рабочий python-control. 

UPD. То же самое проделал в xubuntu 10.04, уже без плясок с бубном и всего за полчаса, из которых минут 20 собирался slycot. Что и ожидал, ибо нативность и доступность большинства вещей в репозитории (те же lapack и blas).

Получаются красивые картинки:
 

пятница, 3 июня 2011 г.

Dropbox

После недавней поломки ноутбука задумался о том, где хранить важные данные. Решил попробовать облачный сервис dropbox, который дает бесплатно до 2Гб под хранение данных. Есть клиент для разных осей, в том числе и для linux. Пока синхронизуются две машины: рабочая и домашний лаптоп. На рабочей машинке работает все довольно шустро, демон висит постоянно в трее, на слабом лаптопе запускаю только по надобности, хотя и можно поместить запуск демона в init.d, что описано здесь. Из минусов - не синхронизуются произвольные директории (для меня не страшно). Можно сделать апгрейд +8Гб по реферальной системе - 250Мб за одного реферала. Если еще нет аккаунта - переходите по моей реферальной ссылке http://db.tt/TUCkaVi. Кроме dropbox'а еть еще много подобного рода сервисов, например, wuala (до 1Гб бесплатно, говорят, можно забесплатно прокачать), livekive (нет клиента под linux, зато 5Гб бесплатно).

вторник, 31 мая 2011 г.

Состояние дел

Причиной поломки лаптопа оказался брак видеочипов от nvidia. У меня, конкретно, 8600 (как оказалось). Люди, не покупайте лаптопы с таким кристаллом видео на борту, и с другими бракованными тоже (а здесь гугл в помощь и всякие ixbt)! Пациент лежит у меня, пока не будет найдена новая материнка с интеловским видео. Пока притащил старый (зато разрешение экрана 1440х1050) ASUS B1000 с работы, поставил на него xubuntu 10.04, ибо остальное, что я пробовал установить, безбожно тормозит. Работать можно.