Archive for the 'Python' Category

Пучок постов на earthpy

Почти год не писал на earthpy, при этом накопился кое-какой материал. Благо всё было уже в IPython ноутбуках, и особого труда перенести это дело на сайт не составило. Кому интересно, посты получились следующие:

Seaborn library — Библиотека, которая делает картинки matplotlib минимально приемлемыми для просмотра.

How to make your python code run faster — Небольшой рассказ с примерами о том как можно без особого напряжения увеличить скорость питоновского кода, в частности циклов. В качестве инструментов multiprocessing, cython и numba.

Select time ranges in multidimensional arrays with pandas — Небольшой трюк, показывающий как можно использовать pandas время для работы с многомерными массивами.

Работаем с метеоданными в Pandas

met06Задача: сконвертировать данные метеостанции по температуре для работы в pandas
?нструмент: pandas

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

В этой короткой заметке я покажу как сконвертировать метеоданные (температуру) полученные с сервера ВН??ГМ?-МЦД в pandas DataFrame.
Read more »

Миникурс «Python for Geosciences»

Я прочитал небольшое введение в питон для коллег — «Python for Geosciences». Записки с этой презентации доступны на гитхабе. Чтобы от курса была польза вы должны уже знать какой-либо язык программирования, предпочтительно Матлаб.

Они сделаны в виде IPython notebooks, то есть вы сможете загрузив их себе на компьютер и запустив ноутбук IPython исполнять показанный в записках код. Необходимые для работы библиотеки и способ запуска IPython notebooks описаны в третьей части. Чтобы посмотреть онлайн версии ноутбуков прокрутите гитхабовскую страничку немного вниз, там в ридми файле будет оглавление со ссылками на html версии. Код в этих версиях вы исполнять, конечно, не сможете, доступен только просмотр.

Большая часть этих записок также доступна на сайте EarthPy.org.

Конвертируем netCDF в ASCII при помощи Python в Windows

map_eurЗадача: Помочь друзьям виндузятникам сконвертировать netCDF в ASCII, попутно установив на их компьютеры Python, в надежде, что они таки постепенно забудут про дельфи, фортран и прочие гадости. Заодно попробовать удобно ли в ipython notebook писать посты.

?нструменты: cdo, Pyhton(x,y), ipython notebook

Важно: Этот пост изначально целиком написан в ipython notebook, что значит вы сможете при наличии установленного ipython notebook (как это сделать под Windows смотри ниже) исполнять и изменять код представленный в посте. Читать пост с хорошим форматированием, так как оно выглядит в ноутбуке, а также загрузить файл ноутбука можно здесь (загрузка файла в правом верхнем углу). Также доступна pdf версия этого поста автоматически сгенерированная nbconverter. А ещё версия этого поста в виде мимимишной презентации reveal. А теперь собственно пост:

Люди работающие под виндоуз любят ASCII, я знаю, я сам был такой. Они готовы переводить в ASCII всё на свете, включая данные моделей IPCC, которые занимая в бинарном формате сотни гигабайт, будучи переведены в ASCII превращаются в монстров, сжирающих всё доступное дисковое пространство в радиусе нескольких километров. Но таковы реалии виндузовой жизни, многие программы там, особенно занимающиеся отрисовкой и анализом данных, хотят, чтобы им скармливали текст и только текст.

У проблемы перевода из netCDF в ASCII существует множество решений. Можно сделать дамп всего файла, заголовка, или отдельной переменной при помощи программки ncdump.exe. Небольшую инструкцию как это сделать и где взять эту неуловимую программку можно почитать здесь (там пишут про HDF, но для netCDF эта инструкция также подходит). Правда этот дамп вам придётся потом ещё долго и печально разбирать, поскольку то, что вы увидите, будет довольно сильно отличаться от желаемой таблички время/широта/долгота/значение (я знаю мечтаете вы именно об этом :)).

Тем кто знаком с Matlab с некоторых пор вообще стало хорошо, поскольку там появилась поддержка netCDF файлов из коробки и о том, как их там открывать можно почитать тут.

Здесь я расскажу как сконвертировать netCDF в ASCII при помощи Python, при этом формат вывода вы сможете задавать какой пожелаете. Упражняться будем, как обычно, на файлах NCEP реанализа.
Read more »

Ipython notebook. Часть II — пример работы

Задача: Показать ipython notebook в действии. В частности будем рисовать нашу любимую температуру из файла NCEP реанализа.
�?нструменты: ipython notebook, scipy, Basemap

Попробуем использовать ipython notebook, установленный нами в первой части, для чего-нибудь полезного и в процессе ближе познакомимся с его возможностями.
Read more »

Ipython notebook. Часть I — установка в Ubuntu 12.04 и запуск.

Задача: поставить ipython notebook — среду для работы с ipython в браузере, и немножко рассказать о его возможностях.
?нструменты: iptyhon notebook

Думаю, что многим хорошо известен продвинутый питоновский шел ipython. Его создатели большие любители пакета Matematika, и при работе в питоне, они скучали по её рабочей среде, которая реализована в виде записной книжки. Там имеется возможность тут же решить уравнение, отобразить результаты решения, нарисовать график, снабдить всё это текстовым комментарием, а при изменении исходных данных всё пересчитать и перерисовать одним нажатием клавиши.

Примерно с год назад разработчики ipython решили, что так жить больше нельзя, и начали изобретать велосипед разрабатывать свою записную книжку. Да так их понесло, что до сих пор не могут остановиться — очень уж им нравится то, что в итоге получается. Под катом рассказ о том как поставить последнюю стабильную версию ipython notebook под Ubuntu, запустить её и посмотреть примеры. Во второй части я покажу свой пример сеанса работы с notebook.
Read more »

?збавляемся от ненужных циклов и ускоряем скрипт на Python

Задача: выбрать из массива данных только данные удовлетворяющие условию и сделать с ними какую ни-будь гадость
Решение: numpy.where

Слухи о тормознутости Python сильно преувеличены, просто нужно уметь его готовить. Конечно скорости C или Fortran вы на нем не добьетесь, но и его вполне можно заставить быстро обрабатывать огромные массивы информации. Если вы хотите считать быстро, то ваш враг номер один в Python (также как и в MATLAB, кстати) это циклы, заданные в явном виде (оператор for). От большинства из них можно избавиться, применяя нехитрые приемы. Об одном таком приеме, позволившем увеличить скорость обработки массива размером более 100 гигабайт в 46 раз, я очень коротко расскажу в этом посте.
Read more »

F2PY — ускоряем вычисления в Питоне в 500 раз

Лирическое отступление:

Сегодня у меня радостное событие, мне подарили новогодний подарок. Как известно лучший подарок это подарок сделанный своими руками, так и поступил Михаил ?ткин из ?нститута Метеорологии им. Макса Планка, подарив мне эту статью. Большое тебе, Миша, человеческое спасибо ) Если у кого появится подобное желание по поводу и без повода — пишите на koldunovn@gmail.com

Собственно статья:

Чистый питон очень сильно проигрывает низкоуровневым языкам программирования, длинные циклы могут замедлить выполнение программы на пару порядков. Часто узкие места можно обойти используя пакеты вроде numpy, в них функции написаны с использованием С? и Фортрана. Функционала numpy или PyNGL хватит для большинства рутинных задач, но если нужно применить вычисление к каждому элементу массива или, не дай бог, к «бегущему окну» — двигающемуся массиву меньшего размера, то придётся писать рутину самому.

Read more »

Массивы в scipy (numpy), шпаргалка.

Массивы SciPy

Решил перевести славную шпаргалку по массивам в scipy. Под катом
Read more »

VirtualBox образ системы для океанологов на основе Ubuntu

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

?нструменты: VirtualBox

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

sudo apt-get install cool-ocean-soft

и получить желаемый результат. Более того, зачастую даже для немного продвинутого в *nix системах человека правильно поставить некоторый океанологический софт представляется задачей нетривиальной. Он даже может после пары часов (в лучшем случае дней) плюнуть на это дело. Если же человек сидит на Виндоуз, то от него потребуются и вовсе титанические усилия, связанные с дополнительными трудностями перехода на новую систему.

Чтобы хотя бы частично избавиться от вопросов типа «почему у меня PyNGL на новой Убунте не устанавливается?» и «что прописать в .bashrc чтобы заработал Ferret» я решил создать образ системы в которой все основные программы о которых рассказывается на koldunov.net были бы уже установлены и работали.

За основу был взят LTS дистрибутив Ubuntu 8.04 . Программы были проинсталированы и более-менее проверены на работоспособность. В результате получился образ системы для VirtualBox, который вы можете развернуть как под Линукс, так и под Виндоуз.
Read more »

Следующая страница →