Интеграция с Python, ROOT и MINUIT?
Я скромный аспирант кафедры физики частиц высоких энергий. Имея необоснованное отвращение к C/C++ и глубокую любовь к Python, я до сих пор прибегаю к Python для анализа данных (просто легкая штука) и собираюсь попытаться поддержать сценарии Python для библиотек ROOT и, в частности, использовать MINUIT для минимизация некоторых параметров.
Наряду с вопросом, есть ли у кого-нибудь какие-либо советы по их установке и использованию, я подумал, стоит ли даже пытаться делать это или просто впасть в "норму" использования C/C++, или можно использовать такие вещи, как pyminuit., Или вы думаете, что я мог бы обернуть все сценарии C/C++ в код Python, чтобы использовать мои существующие методы самописного анализа (у меня пока нет опыта работы с оберткой). Извините за неопределенность; Я направляюсь в великое неизвестное, которое намного перевешивает мой текущий опыт.
3 ответа
Вы знаете о PyROOT, верно?
Сам никогда не пробовал, поэтому я не знаю, как это может соответствовать вашим потребностям.
Вероятно, стоит проверить rootpy. Возможно, еще не совсем зрелый, но это шаг в правильном направлении.
Да, rootpy построен поверх PyROOT, но с некоторыми дополнительными функциями:
- он подчеркивает питонический интерфейс и скрывает уродливость ROOT;
- он интегрируется с matlibplot, который имеет большее сообщество разработчиков и большее присутствие в SO, не говоря уже о более привлекательных графиках;
- он позволяет конвертировать файлы в формат HDF5, что позволит вам делиться данными с людьми, которые не могут потратить время на установку монолитного ROOT-пакета.
К сожалению, пока вы работаете с чем-то, построенным поверх CINT (то есть PyROOT), вам все равно придется иметь дело с одной из самых уродливых частей ROOT.
Другой вариант, если вам надоело возиться с PyROOT, это использовать один из пакетов, который конвертирует ROOT напрямую в HDF5.
Некоторое время назад я написал оболочку minuit (в моем примере 1 опыта minuit ROOT кажется более надежным, чем pyminuit, и мне больше нравится вывод ROOT Minuit)
https://github.com/piti118/RTMinuit
С возможностью чтения корневого файла
https://github.com/piti118/root_numpy
И не такая отточенная примерка библиотеки и генерации игрушек и т. Д. На основе RTMinuit и numpy
https://github.com/piti118/dist_fit
Обучающие программы и помощь все даны в пакете