Работа на открытом воздухе. Эстуарий реки Ньюс

Давно ничего не писал. Попробую исправить, но о Японии больше не будет совсем. Будет об Америке.

Начну с небольшого предисловия. С недавнего времени живу в столице шатата Северная Каролина — Роли. Хожу в университет NC State. Изучаю качество воды местного эстуария реки Ньюс — однорукавного, воронкообразного устья реки, расширяющегося в сторону моря. Цель — смоделировать некоторые параметры: концентрацию кислорода или планктона в воде. Зная их, можно давать рекомендации и прогнозы по состоянию водного объекта управляющим госорганизациям. Это делается для сохранения животного и рыбного мира и защиты локальной экосистемы от человеческого воздействия. Ну рыбки же умирают почему-то, и надо это предотвратить!

В Штатах достаточное внимание уделяется экологическим проблемам, и это нормальная практика развитых стран. Ведется постоянный мониторинг крупных водных объектов. Например, данные для моей работы собираются более 20 лет проектом Модмон. Раз в две недели катер выходит в воды эстуария и забирает пробы в одних и тех же точках. Так образовывается база данных, которую можно анализировать и использовать для построения различных моделей — приближенного описания природных процессов. Данные — наше всё.

Осенью мне удалось побывать на одном из круизов: покататься на катерке по заливу, пособирать сэмплы и позагорать. В Северной Каролине мягкий климат, поэтому октябрьская погода очень похожа на июль средней полосы России. Листья только начинают опадать.

IMAG0101.jpg

Залив находится примерно в двух часах езды от моего дома в Роли. Место встречи — небольшой парк в городе Нью Берн. Круиз начинается в 8 часов утра, поэтому проснуться пришлось пораньше.

IMAG0072.jpg

Из посетителей парка — утки и несколько ранних бегунов

IMAG0073.jpg

IMAG0075.jpg

IMAG0077.jpg

Катер прибуксировали на грузовичке, быстро спустили на воду и отплыли. Обычно маршрут выглядит так: сначала катер добирается до самых дальних станций — они далеко в заливе, примерно 50 км от стартовой точки. Затем лодка движется в обратном направлении — и доходит дотаточно далеко вверх по течению. В том месте Ньюс выглядит как обычная речка.

Старт

IMAG0076.jpg

Весь круиз занимает примерно 6 часов. На то, чтобы добраться до дальней станции уходит примерно час. Катер гонит со скоростью 50 км/ч, против волн. Чем ближе открытое море — тем больше тряска. Хорошо, что позавтракал 3 часа назад.

На катере обычно работает 2 человека: один собирает пробы химического состава воды, которые потом анализируют в лаборатории.

IMAG0078.jpg

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

IMAG0080.jpg

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

IMAG0079.jpg

По мере движения вверх по заливу, ветер становится слабее, куртки сбрасываются. Вода становится холоднее. Морская же прогрета после лета. Этот круиз состоялся как раз после урагана, которые частое явление на восточном побережье США.

IMAG0081.jpg

IMAG0082.jpg

IMAG0083.jpg

Оцените разницу: это фото уже где-то в середне залива, на полпути обратно

IMAG0084.jpg

И вот еще

IMAG0085.jpg

Ну пруд же почти — тишь да гладь

IMAG0086.jpg

IMAG0087.jpg

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

IMAG0088.jpg

IMAG0091.jpg

Здесь волн нет, и можно прибавить ходу

IMAG0098.jpg

Последняя точка сбора проб: сложно поверить, что эта речушка через пару десятков километров превратится в огромный резервуар и растворится в море

IMAG0099.jpg

Однако это так

IMAG0100.jpg

Логичным будет объяснить, зачем вообще всё это: зачем мерить кислород в воде, откуда планктон берется, как вообще происходит загрязнение воды и почему это плохо. Как-нибудь потом.

dplyr — легкая работа с данными

Сегодня опишу пакет dplyr, после изучения которого, манипуляции с данными упростятся до безобразия. Велосипед изобретать не буду и использую существующие статьи 1 и 2 по той же теме. Вот еще и на русском. Все гениальное просто, поэтому почти возможные варианты работы пакета базируются на нескольких функциях. Основные из них:
Select() выбирает заданные столбцы;
Filter() отбирает желаемые строки;
Arrange() сортирует строки в заданном порядке;
Mutate() создает новые столбцы из существующих данных;
Summarise() находит интересующие значения.

Установим собственно пакет, если еще не сделали этого
install.packages("dplyr")
И загрузим его
library(dplyr)
Воспользуемся данными о качестве воздуха в Нью-Йорке, измеренными в период с май по сентябрь далекого 1973 года
library(datasets)
Посмотрим на данные
head(airquality)
Ну данные как данные, ничего особенного
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 NA NA 14.3 56 5 5
6 28 NA 14.9 66 5 6

Смысл понятен, но информацию о данных в более удобоваримом виде можно получить используя функцию dplur glimplse(). Команда транспонирует данные (поменяет местами строки и столбцы) и укажет количество наблюдений и переменных.
glimpse(airquality)
Вот так это всё выглядит
Observations: 153
Variables: 6
$ Ozone (int) 41, 36, 12, 18, NA, 28, 23, 19, 8, NA, 7, 16, 11, 14, 18, 14, 34, 6, ...
$ Solar.R (int) 190, 118, 149, 313, NA, NA, 299, 99, 19, 194, NA, 256, 290, 274, 65, ...
$ Wind (dbl) 7.4, 8.0, 12.6, 11.5, 14.3, 14.9, 8.6, 13.8, 20.1, 8.6, 6.9, 9.7, 9.2...
$ Temp (int) 67, 72, 74, 62, 56, 66, 65, 59, 61, 69, 74, 69, 66, 68, 58, 64, 66, 5...
$ Month (int) 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, ...
$ Day (int) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20...

Select
Теперь перейдем к функционалу вышеуказанных команд. Начнем с отбора нужной нам информации, отфильтруем, так сказать, ненужное. Функция select() выберет требуемые столбцы. Она работает также, как и базовая команда subset(), однако включает в себя удобные подфункции contains(), starts_with() и ends_with(), которые облегчают определение и выбор желаемых столбцов.
Выберем только столбцы со скоростью ветра и днём
select(airquality, Wind, Day)
В этом и следующих двух примерах для компактности я покажу только первые три строчки результата.
Wind Day
1 7.4 1
2 8.0 2
3 12.6 3

Выберем все столбцы, имена которых содержат латинскую «o»
select(airquality, contains("o"))
Ozone Solar.R Month
1 41 190 5
2 36 118 5
3 12 149 5

Посмотрим на столбцы, имена которых начинаются с «Oz»
select(airquality, starts_with("Oz"))
Мы-то догадываемся, что в результате будет только столбец с концентрацией озона
Ozone
1 41
2 36
3 12

Filter
Продолжим отбирать интересующую нас информацию. Функция filter() оставит только строки, которые соответствуют заданным условиям. Ну например, выберем все наблюдения, когда температура поднималась выше 92 градусов по фаренгейту.
filter(airquality, Temp > 92)
Получаем
Ozone Solar.R Wind Temp Month Day
1 NA 259 10.9 93 6 11
2 76 203 9.7 97 8 28
3 118 225 2.3 94 8 29
4 84 237 6.3 96 8 30
5 85 188 6.3 94 8 31
6 73 183 2.8 93 9 3
7 91 189 4.6 93 9 4

Приятно, что условия можно комбинировать как душе угодно. Вот хочется мне узнать, когда в июне значения измеренной солнечной радиации превышали 300 Лэнгли. Да проще некуда
filter(airquality, Month == 6 & Solar.R > 300)
Такая картина вырисовывается
Ozone Solar.R Wind Temp Month Day
1 39 323 11.5 87 6 10
2 NA 332 13.8 80 6 14
3 NA 322 11.5 79 6 15

Arrange
Функция arrange() отсортирует данные по переменным. Можно сортировать сразу по нескольким параметрам, а также в порядке возрастания или убывания. Для примера расположим наблюдения по месяцам по убыванию и дням по возрастанию.
arrange(airquality, desc(Month),Day)
В результате (только первые 5 строк)
Ozone Solar.R Wind Temp Month Day
1 96 167 6.9 91 9 1
2 78 197 5.1 92 9 2
3 73 183 2.8 93 9 3
4 91 189 4.6 93 9 4
5 47 95 7.4 87 9 5

Mutate
Переходим к моей любимой команде mutate(), которая позволяет добавлять новые переменные (столбцы). Добавим столбец с температурой в цельсиях, который назовем TempInC
mutate(airquality, TempInC = (Temp - 32) * 5 / 9)
Легко и просто (опять покажу только первые 5 строк результата)
Ozone Solar.R Wind Temp Month Day TempInC
1 41 190 7.4 67 5 1 19.44444
2 36 118 8.0 72 5 2 22.22222
3 12 149 12.6 74 5 3 23.33333
4 18 313 11.5 62 5 4 16.66667
5 NA NA 14.3 56 5 5 13.33333

Summarise
Функция summarise() позволяет получить быстрое представление о всех данных в одном значении, например, посчитать среднее арифметическое. В комбинации с командой группировки данных group_by() можно легко находить интересующие значения для группированных данных. Простой пример: посчитаем среднюю температуру в каждом из месяцев.
summarise(group_by(airquality, Month), mean_monthly_temp=mean(Temp, na.rm = TRUE))
na.rm = TRUE просто не учитывает все отсутствующие данные при расчете среднего. В итоге имеем
Month mean_monthly_temp
(int) (dbl)
1 5 65.54839
2 6 79.10000
3 7 83.90323
4 8 83.96774
5 9 76.90000

В рамках summarise() помимо нахождения среднего арифметического, можно использовать и другие команды, возвращающие скалярные значения, например min(), max(), sum(), sd(), median().

Pipe
Оператор %>% позволяет совершать последовательные операции без сохранения промежуточных результатов. Допустим, мы хотим увидеть, какая максимальная температура в градусах цельсия была зарегистрирована в летние месяцы.
airquality %>%
filter(Month == c(6,7,8)) %>% #оставляем только летние месяцы
mutate(TempInC = (Temp - 32) * 5 / 9)%>% # считаем температуру в градусах цельсия
group_by(Month) %>% # группируем по месяцам
summarise(max_temp_C = max(TempInC, na.rm = TRUE)) # находим максимальное значение температуры для каждого из летних месяцев

В итоге получаем
Month max_temp_C
(int) (dbl)
1 6 33.33333
2 7 31.66667
3 8 36.11111

Незаменимая команда, когда переменных и наблюдений достаточно много.

Я постарался коротко изложить основные моменты работы с dplur, думаю, они будут очень полезны для начинающих. Конечно же, в пакете присутствуют и другие команды, но для одного поста достаточно.

Немного об R

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

Хирошима и Миядзима

Выходные получились насыщенными: удалось наконец побывать в Хирошиме, а также наведаться на Мияджиму, которая на самом деле называется Ицукусима. Не знаю, как правильно писать и произносить: Хиросима или Хирошима, Миядзима или Мияджима. Нас тут учат говорить Ш и Ж, когда как в русских источниках светятся С и З, соответственно. Ну не суть. Остановлюсь на варианте с шипящими.
В Хирошиме я не просто пинал, а съездил с целью — участие в небольшой уютной конференции, посвященной различным вопросам изучения подземных вод и не только. Таким образом, удалось совместить приятное с полезным.
Пятница, утро, путешествие начинается. На Шинкансене из Окаямы до университета Хирошимы — всего-то около часа пути. Однако, стоит заметить, что университет Хирошимы расположен в достаточной удаленности от самого города, примерно 80 км.
Кадры любого туриста, чо

Погода не сильно в пятницу радовала, зато не жарко. В следующие два дня распогодилось, и было солнечно.
Пройтись немного по кампусу университета, напоминающий парк, всегда интересно
IMG_1291.JPG

Ну и с умным видом посидеть тож надо уметь
IMG_1292.JPG

Я на фоне студентоты. Кажется, будто среди восьмиклассников, не правда ли?
IMG_1294.JPG

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

Хирошима понравилась.
Если кто не в курсе, в августе 1945 года несущие демократию решили устроить экстерминатус на территории Японии, а конкретнее в Хирошиме, посредством сброса атомной бомбы, пытаясь склонить неуступчивых сушиедов к завершению войны. Вторая бомба через пару дней прилетела в Нагасаки. Метод сработал: война закончилась, и все бы ничего, если бы не стёртый с лица земли город и около 200000 в общей сложности погибших людей. 200000, Карл.

Город выглядит свежо, приятно и интересно. Атмосфера располагает чтоль, сложно объяснить. Вот так бывает, приехал — и прям в своей тарелке.
IMG_1295.JPG

IMG_1296.JPG

Самое популярное здание в Хирошиме. Благодаря инженерному таланту архитектора, не развалилось от взрыва бомбы, хотя находилось очень близко к эпицентру. Купол сохранили нетронутым после взрыва, как напоминание о том, чего больше не стоит делать человечеству.
IMG_1297.JPG

IMG_1298.JPG

Еще памятники жертвам бомбардировок
IMG_1301.JPG

IMG_1299.JPG

IMG_1302.JPG

Ну, довольно о грустном. В субботу в Хирошиме был праздник, поэтому можно было наблюдать девушек в юкатах — такое летнее кимоно. Да и вообще много людей на улицах.
IMG_1303.JPG

Очень много
IMG_1304.JPG

IMG_1305.JPG

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

IMG_1306.JPG

В общем, на паром скорее!
IMG_1307.JPG

IMG_1308.JPG

Остров, действительно, необычный. Сойдя с парома, сразу натыкаешься на местных обитателей. Олени скромностью не отличаются и хватают все, что только можно и пытаются жевать. Бумагу, например. А если увидят еду! Не отстанут уж никогда.
IMG_1309.JPG

Местные блюстители правопорядка
IMG_1310.JPG

Народу тож не мало, суббота ж
IMG_1311.JPG

Везде праздник, в общем
IMG_1313.JPG

Тории являются неофициальным символом Японии. Ныне существующие красные ворота высотой 16 метров были построены из камфорного дерева в 1875 году. Во время прилива море затапливает сушу до самого Святилища. Спасибо Википедии. Мы как раз-то подъехали во время прилива.
IMG_1314.JPG

IMG_1317.JPG

Можно и другие достопримечательности осмотреть
Пагода Годзю-но, хороша
IMG_1316.JPG

Везде эти олени

IMG_1318.JPG

Мне очень понравился храм Дайшо-ин
IMG_1319.JPG

IMG_1320.JPG

IMG_1321.JPG

IMG_1322.JPG

IMG_1323.JPG

IMG_1324.JPG

Как насчет группового фото с оленями?
IMG_1325.JPG

IMG_1326.JPG

Хочется приехать еще раз.

Окинава. Дождливая поездка в самую южную часть Японии

А Гонконг все откладывается и откладывается на потом. Чую, сил и желания писать о нем все убавляется и воспоминания проходят 🙂 Сегодня — об Окинаве. Необычная префектура, в состав которой входят несколько островов, находится в достаточной удаленности от основной Японии, в двух часах полета от Осаки, например. Мне удалось посетить только главный остров — Окинава, маленькие, но, по слухам, очень красивые островки оставлены на «как-нибудь в другой раз». Окинава чуть менее, чем наполовину населена американскими солдатами, а немалая часть территории занята американскими военными объектами соответственно. Но, очевидно, что прекрасной природе этого притягательного острова и мне, конечно же, как-то все равно.
Отдых планировался короткий и пляжный — всего 3 полных дня. Однако сезон дождей изменил расклады: удалось немношк покататься по острову, осматривая окрестности. Путешествовал я не один, а с компанией аж из восьми студентов по обмену из разных стран, что, конечно же, обеспечило много позитива и хорошего настроения. Вероятно, именно из-за не солнечной погоды двухчасовой перелет туда-обратно Осака-Окинава у авиакомпании Peach стоил всего примерно 50 евро. На самом деле, даже в сезон дождей температура на Окинаве не опускается ниже 27 градусов днем, а вечером и ночью ниже 25, просто небо тучами затянуто и дождик периодически случается. Тем не менее, искупаться мне тож удалось, хотя и в вечернее время.
Итак, первый день — перелет, проезд до места пребывания, легкий отдых, короткое вечернее купание и сон. Кстати, впервые столкнулся с тем, что купаться после 6 вечера запрещено! А пляж работает только до 10 вечера, то есть можно находиться на территории, но купаться нельзя. Ходят полицейские и вежливо просят уйти =) Только в Японии, что ж сказать еще.
Второй день получился насыщенным — долгая поездка на водопад Хиджи (Hiji) на северной оконечности острова. Добираться до него долго, на двух автобусах с остановкой в Наго. Будете на Окинаве, имейте в виду: автобусное расписание абсолютно не выполняет своей функции, и руководствоваться им не стоит. Просто ждите на остановке, автобус обещал скоро подъехать.
Вид изнутри транспорта
IMG_1208.JPG

IMG_1209.JPG

Странный транспорт можно иногда встретить
IMG_1210.JPG

На подходе к парку с водопадом
IMG_1211.JPG

А дождь все шел
IMG_1212.JPG

Трава какая-то растет
IMG_1213.JPG

IMG_1215.JPG

В общем, типичный ландшафт
IMG_1214.JPG

Сам парк, в целом, понравился. До водопада прилично топать: минут 30-40 придется повзбираться по лестницам, чтоб на чудо природы посмотреть.
IMG_1216.JPG

IMG_1217.JPG

IMG_1218.JPG

IMG_1220.JPG

IMG_1221.JPG

IMG_1222.JPG

Фото на память
IMG_1224.JPG

И продолжаем путь
IMG_1225.JPG

IMG_1226.JPG

А вот и он
IMG_1227.JPG

IMG_1228.JPG

Конечно же, селфи
11312652_1847910595433394_4706176747939241071_o.jpg

Третий день — поездка в Наху =) Как бы центральный населенный пункт Окинавы. В плане: замок, обед в приятном месте, прогулки. На автобусе — менее часа от Чатана.

Приехали
IMG_1229.JPG

Улица с сувенирами
11163165_1848018832089237_6204183186185312821_o.jpg

Уютное место. В этом районе издавна продают и производят глиняную посуду
IMG_1230.JPG

Игра — найди котейку на фото
IMG_1231.JPG

Ладно-ладно, вот, полегче
IMG_1233.JPG

Плакат прекрасен
IMG_1234.JPG

Пришло время и поесть. Место для этого выбрано просто замечательное.
IMG_1236.JPG

IMG_1238.JPG

Легкая медитация после обеда
11336891_1848018592089261_1187350613460553918_o.jpg

Замок Окинавы
IMG_1239.JPG

IMG_1240.JPG

Территория вокруг симпатичная, вход внутрь замка стоит 6 евро. Внешне замок смахивает на сарай, если честно
11133865_1848019342089186_5398937466240314509_o.jpg

Как обычно, вожу лицом
IMG_1241.JPG

IMG_1242.JPG

IMG_1243.JPG

Это — трон!
IMG_1244.JPG

Осмотр окончен =)
Только в Японии
IMG_1246.JPG

Пока, замок!
IMG_1247.JPG

Предпоследний день был разгрузочным, просто погуляли в районе нашей съемной квартиры. Жилье, кстати, снимали на airbnb. Только ленивый, кажется, этим сейчас не занимается.
Люди Окинавы показались милыми и добрыми, готовыми помочь. Наличие солдат США объясняет присутствие американских забегаловок в немалом количестве. Более того, существует даже большая зона развлечений с молом, теми же ресторанами, которая так и называется — American village.
Хотелось бы вернуться сюда снова и покататься по островам в округе =) Как-нибудь в другой раз.

А вот и видео для интересующихся