Объекты, считанные из ROOT-файлов, имеют интерпретацию Pythonic, только если «методы» включены в uproot-методы. TProfile
не был обработан таким образом - единственная причина, по которой все работает для вас, заключается в том, что TProfile
является подклассом TH1
, а TH1
имеет метод .pandas()
. Поскольку TH1
для одномерных гистограмм, в него не входит код, который обрабатывает второе измерение.
uproot-методы предоставлены пользователем. Если вам нужны методы TProfile
, вы можете добавить их здесь и отправить запрос на извлечение:
https://github.com/scikit-hep/uproot-methods/tree/master/uproot_methods/classes
Если вы добавите сюда модуль TProfile
, содержащий класс Methods
,uproot автоматически загрузит его и применит его к TProfile
объектам, которые он загружает из файлов ROOT.
Для любого класса, даже тех, о которых мы не слышали, uproot загружает все данные закрытого члена в Pythonобъект. Вы найдете все ваши данные TProfile
в атрибутах, которые начинаются с _f
, таких как _fSumw2
и _fBinEntries
. Методы просто используют эти «внутренние» атрибуты, чтобы представить более удобную для пользователя картину данных, например, Pandas.
Вот пример получения данных из неинтерпретированной TProfile
:
>>> import numpy
>>> import uproot
>>>
>>> file = uproot.open("http://scikit-hep.org/uproot/examples/hepdata-example.root")
>>> hprof = file["hprof"]
>>>
>>> numpy.sqrt(numpy.array(hprof._fSumw2) / numpy.array(hprof._fBinEntries))
выведет
-c:1: RuntimeWarning: invalid value encountered in true_divide
array([18.00160401, 17.08522023, 16.98982401, 15.18948269, 13.73788834,
13.37976188, 13.55597897, 12.66036748, 12.68400763, 11.86598111,
11.69668773, 11.64276616, 10.08540753, 10.15367219, 9.76541727,
8.84047502, 8.73065944, 8.24346727, 7.46907584, 7.6620407 ,
7.09749961, 6.62763951, 6.42199904, 5.98234406, 5.78193984,
5.14476043, 5.15432392, 4.715674 , 4.50246509, 4.36212988,
3.86741244, 3.80635409, 3.60625837, 3.29332404, 3.04594764,
2.98292569, 2.74283755, 2.50385849, 2.50978034, 2.30446027,
2.29145554, 2.18459822, 1.99270465, 1.92651016, 1.86253428,
1.79821825, 1.807856 , 1.80803939, 1.75249321, 1.81588997,
1.8226282 , 1.74867267, 1.79842962, 1.75790778, 1.70895758,
1.859834 , 1.82793384, 1.96163584, 1.81903189, 2.0223054 ,
2.14521968, 2.24565426, 2.24184203, 2.48460961, 2.63208939,
2.69851588, 2.98989799, 3.1141892 , 3.25304525, 3.46517157,
3.53320406, 3.98586013, 4.25062225, 4.57520817, 4.75338005,
5.18494724, 5.387066 , 5.6277353 , 5.8802666 , 6.34427442,
6.51966721, 7.24680462, 7.33759813, 7.63198011, 8.34535604,
9.30064575, 8.82698396, 9.4099613 , 9.60905376, 10.31570735,
11.17540473, 11.13947421, 12.78232904, 12.1993165 , 12.39763587,
16.68535354, 13.30451531, 14.67711301, 14.96741772, nan,
18.32199478, 17.84275258])
, которые являются значениями y для этого TProfile
. Ошибки этих значений оставлены читателю в качестве упражнения.