GN⁺: 과학적으로 페타바이트 데이터를 분석하는 ROOT
(root.cern)√-1ROOT: 대규모 데이터 분석 및 시각화를 위한 소프트웨어
ROOT 개요
- ROOT는 대규모 데이터의 통계적 분석과 시각화를 가능하게 하는 고성능 소프트웨어임.
- **C++**로 주로 작성되었으며, Linux, macOS, Windows에서 사용 가능함.
- 오픈 소스 소프트웨어로 자유롭게 사용, 수정, 기여 가능함.
주요 기능
- 빠른 프로토타이핑을 위한 강력한 C++ 인터프리터 제공.
- Python과의 원활한 통합을 통해 Python과 C++ 간의 동적 바인딩 가능.
- Jupyter 노트북에서도 사용 가능함.
RNTuple: 현재와 미래
- RNTuple은 TTree의 후속으로 개발 중이며, Run 4에서 사용될 예정임.
- 새로운 시스템의 필요성과 현재 상태, 첫 프로덕션 릴리스 전 작업 내용, 그리고 향후 계획에 대해 설명함.
- 이미 RNTuple을 시도해볼 수 있는 방법 제공.
웹 기반 캔버스 기본 설정
- 웹 기반 TCanvas 구현이 ROOT 마스터 버전에서 기본 설정으로 변경됨.
- 2017년부터 ROOT에 존재했으며, 웹 기반 TBrowser에서도 사용됨.
새로운 클래스 TScatter
- 새로운 클래스 TScatter 소개.
ROOT 개발 환경 개선
- QtCreator를 사용하여 ROOT 개발 및 디버깅 환경을 개선할 수 있는 방법 제안.
- Eclipse IDE에서 CERN ROOT 스크립트 및 ROOT 기반 프로그램 디버깅 가능.
최신 릴리스
- Release 6.32/00 - 2024년 5월 28일
- Release 6.30.06 - 2024년 4월 3일
- Release 6.30.04 - 2024년 1월 31일
- Release 6.30/02 - 2023년 11월 28일
- Release 6.30/00 - 2023년 11월 7일
GN⁺의 의견
- ROOT는 대규모 데이터 분석에 최적화된 도구로, 특히 과학 연구에서 유용함.
- Python과의 통합 덕분에 C++에 익숙하지 않은 사용자도 쉽게 접근 가능함.
- 웹 기반 캔버스 기본 설정은 사용자 경험을 크게 향상시킬 수 있음.
- RNTuple의 도입은 성능 및 기능 향상을 기대할 수 있음.
- QtCreator와 Eclipse IDE를 활용한 개발 환경 개선은 생산성을 높이는 데 도움이 됨.
Hacker News 의견
- 과거의 추억: 입자 물리학에서 ROOT를 많이 사용했음. 기술 부채와 특이점이 많았지만, 히스토그램이나 구조화된 데이터 처리 등 특정 작업은 ROOT가 더 쉬웠음. 객체 지향 API가 직관적이었음.
- 변화의 과정: 5년 전에 떠났지만, ROOT는 변화 중이었음. CINT 인터프리터를 제거하고 클랭 기반 코드로 전환했으며, 이제 Jupyter에서 C++ 또는 Python으로 분석 가능함.
- 새로운 분석 도구: 새로운 분석에는 ROOT 대신 uproot 같은 더 사용자 친화적인 도구를 사용하는 것이 좋음. 일부는 레거시 워크플로우 때문에 ROOT를 계속 사용할 수 있음.
- 흥미로운 404 페이지: ROOT의 404 페이지가 재미있음. (방 404와는 무관함)
- 과학적 발견: 대규모 소프트웨어 프로젝트가 과학적 발견에 사용되는 것이 멋짐. 예를 들어, LIGO에서 중력파를 GStreamer로 발견했음.
- ROOT의 문제점: ROOT는 많은 기능을 가지고 있지만, API 설계가 좋지 않고 라이브러리와 프로그램 간의 분리가 부족함. ROOT 6에서 일부 문제를 해결하려 했지만 시간이 걸림.
- 입출력 형식 문제: 오래된 ROOT의 입출력 형식이 잘 문서화되지 않았음. 이제는 groot와 uproot 덕분에 ROOT 데이터를 쉽게 읽고 쓸 수 있음.
- ROOT 6의 감사: 매일 ROOT 6 이상의 버전을 사용하게 되어 감사함.
- 디버깅의 추억: 컴퓨터 과학 배경이 없는 뛰어난 물리학자들이 작성한 코드를 밤새 디버깅했던 기억이 떠오름.
- 입자 물리학의 중추: ROOT는 실험 입자 물리학에서 많은 작업의 중추이지만, 새로운 대학원생들에게는 악몽임.
- Cling 사용: Jupyter 노트북에서 C++ 인터프리터 Cling과 Xeus를 사용함. Python 3보다 훨씬 빠름. Cling을 주로 C++로 컴파일되는 언어의 JIT로 사용함.
- 소스 코드: ROOT 프로젝트의 소스 코드는 GitHub에서 확인 가능함.
- 디버깅 악몽: CERN ROOT 스크립트와 프로그램을 Eclipse IDE에서 디버깅하는 것은 악몽이었음. 하지만 끔찍한 환경에서도 놀라운 것을 만들 수 있다는 것을 보여줌.