В этом году я впервые работала студенткой в программе Google Summer of Code. Я был принят организацией Вычислительная биология в Университете Небраски-Линкольн для работы над Интерактивной веб-платформой для анализа данных на основе R. Цель этого поста — подвести итоги моих усилий, как достижений, так и неудач, за лето этого масштабного предприятия.
Хочу поблагодарить своих наставников Dr. Akram Mohammed и г-на Achilles Rasquinha из Helikar Labs за руководство в этом путешествии.
Статистическая платформа — Миссия
Статистическая платформа — это платформа, которая используется для выполнения различных статистических функций, таких как кластеризация, классификация, линейный график и т. д.
Мой проект с Helikar Labs был посвящен использованию R для анализа данных CSV.
Идея заключалась в том, чтобы реализовать несколько новых алгоритмов и реализовать регистрацию пользователей на платформе.
Цель
Были реализованы новые алгоритмы:
- График плотности
- Кластеризация на основе распределения
- Кластеризация на основе плотности
- Анализ главных компонентов
- Машина опорных векторов
Чему я научился за этот период
Этим летом я многому научился, работая над этим проектом. Этот проект требовал навыков работы с R, React, Javascript, D3.js, высокопроизводительного анализа данных и опыта визуализации. Я работал над React до этого лета, но R был чем-то, чем я никогда раньше не пользовался, но мне было очень интересно его изучить. Когда начался период общения с сообществом, я начал больше узнавать о проекте от своих наставников, а также начал изучать R на МООК. К моему удивлению, R было довольно легко и весело изучать.
Курсы охватили все, начиная от базового синтаксиса в R и заканчивая построением красивых графиков с помощью ggplot2. В этом проекте также использовался Opencpu, который использовался в качестве сервера R для отправки и обработки данных JSON, чтобы их можно было отобразить в WebApp. Ранее в этом веб-приложении графики строились с использованием некоторой библиотеки визуализации, но с помощью Opencpu я мог легко строить графики R прямо на веб-странице.
На R-сервере
#The R function
function(ticker = "GOOG", from = "2013-01-01", to=Sys.time()){
mydata <- yahoodata(ticker, from, to);
qplot(Date, Close, data = mydata, geom = c("line", "smooth"));
}
На стороне клиента
//JavaScript client code
var ticker = $("#ticker").val();
var req = $("#plotdiv").rplot("smoothplot", {
ticker : ticker,
from : "2013-01-01"
})
//optional: add custom callbacks
req.fail(function(){
alert("R returned an error: " + req.responseText);
});
Я использовал приведенную выше функцию rplot, чтобы построить все 5 функций, которые мне нужно было отобразить на веб-странице.
Эти функции R были отправлены в репозиторий github, и с этим репозиторием был настроен веб-хук, чтобы при каждом обновлении пакета R новые функции могли обновляться в облаке Opencpu. Вебхук был настроен следующим образом.
Проблемы, с которыми я столкнулся
Самой сложной задачей для меня было преобразовать базу кода React из React 13 в React 16. Я понятия не имел о синтаксисе React 13, и в этих двух версиях React было много изменений. Кроме того, сложно было найти точки останова для всех зависимых API проекта. Но я преодолела эти трудности с помощью и поддержкой моих наставников.
Неудачи и недостатки
Этот проект был моим первым опытом профессионального кодирования. Я никогда не работал над проектом такого масштаба, размера и сложности. Хотя я горжусь тем, что добился прогресса, которого я добился до сих пор, есть некоторые проблемы, в которых я обнаружил, что мне не хватает
- Улучшение пользовательского интерфейса панели инструментов.
Хотя мой официальный период работы закончился, я хотел бы продолжить работу над этим проектом и довести его до завершения и развертывания!