В этом году я впервые работала студенткой в ​​программе Google Summer of Code. Я был принят организацией Вычислительная биология в Университете Небраски-Линкольн для работы над Интерактивной веб-платформой для анализа данных на основе R. Цель этого поста — подвести итоги моих усилий, как достижений, так и неудач, за лето этого масштабного предприятия.

Хочу поблагодарить своих наставников Dr. Akram Mohammed и г-на Achilles Rasquinha из Helikar Labs за руководство в этом путешествии.

Статистическая платформа — Миссия

Статистическая платформа — это платформа, которая используется для выполнения различных статистических функций, таких как кластеризация, классификация, линейный график и т. д.

Мой проект с Helikar Labs был посвящен использованию R для анализа данных CSV.

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

Цель

Были реализованы новые алгоритмы:

  1. График плотности
  2. Кластеризация на основе распределения
  3. Кластеризация на основе плотности
  4. Анализ главных компонентов
  5. Машина опорных векторов

Чему я научился за этот период

Этим летом я многому научился, работая над этим проектом. Этот проект требовал навыков работы с 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 проекта. Но я преодолела эти трудности с помощью и поддержкой моих наставников.

Неудачи и недостатки

Этот проект был моим первым опытом профессионального кодирования. Я никогда не работал над проектом такого масштаба, размера и сложности. Хотя я горжусь тем, что добился прогресса, которого я добился до сих пор, есть некоторые проблемы, в которых я обнаружил, что мне не хватает

  • Улучшение пользовательского интерфейса панели инструментов.

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