Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
Parameters
----------
{recursive}
{filtername}
{filterclass}
Returns
-------
list of bytes
names of objects and subdirectories in the file.
""".format(**rootdirectory_fragments)
_method(uproot.rootio.ROOTDirectory.values).__doc__ = \
u"""Return objects in this directory.
Parameters
----------
{recursive}
{filtername}
{filterclass}
Returns
-------
list of :py:class:`ROOTStreamedObject `
freshly read objects from the ROOT file.
""".format(**rootdirectory_fragments)
path : str
URL specifying the location of a file.
{httpsource}
{options}
Returns
-------
:py:class:`ROOTDirectory `
top-level directory of the ROOT file.
""".format(**open_fragments)
################################################################ uproot.rootio.ROOTDirectory
uproot.rootio.ROOTDirectory.__doc__ = \
u"""Represents a ROOT file or directory, an entry point for reading objects.
Although this class has a constructor that could be called by a user, objects are usually created from ROOT files through :py:func:`open ` or :py:func:`xrootd `.
:py:class:`ROOTDirectory ` objects may be accessed as Python containers:
- square brackets (``__getitem__``) read objects from the file by key name (see :py:meth:`get `).
- the ``len`` function (``__len__``) returns the number of keys.
- iteration (``__iter__``) iterates over the *names* of the keys only (like a ``dict``, see :py:meth:`keys `).
**Attributes, properties, and methods:**
- **name** (*bytes*) name of the file or directory *as read from the ROOT file*. (ROOT files may be imprinted with a different name than they have in the file system.)
- **compression** (:py:class:`Compression `) the compression algorithm and level specified in the file header. (Some objects, including TTree branches, may have different compression settings than the global file settings.)
def _classof(context, classname):
if classname == b"TDirectory" or classname == b"TDirectoryFile":
cls = ROOTDirectory
else:
cls = context.classes.get(_safename(classname), None)
if cls is None:
cls = ROOTObject.__metaclass__("Undefined_" + str(_safename(classname)), (Undefined,), {"_classname": classname})
return cls
_method(uproot.rootio.ROOTDirectory.allitems).__doc__ = \
u"""Return *(key name, object)* pairs at all levels of depth (shortcut for passing ``recursive=True`` to :py:meth:`items `).
Parameters
----------
{filtername}
{filterclass}
Returns
-------
list of (bytes, :py:class:`ROOTStreamedObject `)
name-object pairs from the file.
""".format(**rootdirectory_fragments)
_method(uproot.rootio.ROOTDirectory.allclasses).__doc__ = \
u"""Return *(key name, class object)* pairs at all levels of depth (shortcut for passing ``recursive=True`` to :py:meth:`classes `).
This method does not read objects.
Parameters
----------
{filtername}
{filterclass}
Returns
-------
list of (bytes, class object)
name-class object pairs from the file.
""".format(**rootdirectory_fragments)
{filtername}
{filterclass}
Returns
-------
iterator over bytes
names of objects and subdirectories in the file.
Notes
-----
This method can be accessed more directly by simply iterating over a :py:class:`ROOTDirectory ` object.
""".format(**rootdirectory_fragments)
_method(uproot.rootio.ROOTDirectory.itervalues).__doc__ = \
u"""Iterate over objects in this directory.
Parameters
----------
{recursive}
{filtername}
{filterclass}
Returns
-------
iterator over :py:class:`ROOTStreamedObject `
freshly read objects from the ROOT file.
""".format(**rootdirectory_fragments)
def read(source, *args, **options):
if len(args) == 0:
try:
read_streamers = options.pop("read_streamers", True)
if len(options) > 0:
raise TypeError("unrecognized options: {0}".format(", ".join(options)))
# See https://root.cern/doc/master/classTFile.html
cursor = Cursor(0)
magic, fVersion = cursor.fields(source, ROOTDirectory._format1)
if magic != b"root":
raise ValueError("not a ROOT file (starts with {0} instead of 'root')\n in file: {1}".format(repr(magic), source.path))
if fVersion < 1000000:
fBEGIN, fEND, fSeekFree, fNbytesFree, nfree, fNbytesName, fUnits, fCompress, fSeekInfo, fNbytesInfo, fUUID = cursor.fields(source, ROOTDirectory._format2_small)
else:
fBEGIN, fEND, fSeekFree, fNbytesFree, nfree, fNbytesName, fUnits, fCompress, fSeekInfo, fNbytesInfo, fUUID = cursor.fields(source, ROOTDirectory._format2_big)
tfile = {"_fVersion": fVersion, "_fBEGIN": fBEGIN, "_fEND": fEND, "_fSeekFree": fSeekFree, "_fNbytesFree": fNbytesFree, "nfree": nfree, "_fNbytesName": fNbytesName, "_fUnits": fUnits, "_fCompress": fCompress, "_fSeekInfo": fSeekInfo, "_fNbytesInfo": fNbytesInfo, "_fUUID": fUUID}
# classes requried to read streamers (bootstrap)
streamerclasses = {"TStreamerInfo": TStreamerInfo,
"TStreamerElement": TStreamerElement,
"TStreamerBase": TStreamerBase,
"TStreamerBasicType": TStreamerBasicType,
"TStreamerBasicPointer": TStreamerBasicPointer,
"TStreamerLoop": TStreamerLoop,
"TStreamerObject": TStreamerObject,
"TStreamerObjectPointer": TStreamerObjectPointer,
"TStreamerObjectAny": TStreamerObjectAny,
"TStreamerObjectAnyPointer": TStreamerObjectAnyPointer,
"TStreamerString": TStreamerString,
"TStreamerSTL": TStreamerSTL,
def __init__(
self,
file,
treename="Events",
entrystart=None,
entrystop=None,
cache=None,
mixin_map=None,
metadata=None,
):
if not isinstance(file, uproot.rootio.ROOTDirectory):
file = uproot.open(file)
self._tree = file[treename]
self._entrystart, self._entrystop = uproot.tree._normalize_entrystartstop(
self._tree.numentries, entrystart, entrystop
)
self._keyprefix = "/".join(
[
file._context.uuid.hex(),
treename,
str(self._entrystart),
str(self._entrystop),
]
)
NanoEventsFactory._active[self._keyprefix] = self
if cache is None:
cycle : ``None`` or int
`TKey ` cycle number to disambiguate keys of the same name. This argument overrides a number after a "``;``".
Returns
-------
:py:class:`ROOTStreamedObject `
a freshly read object from the ROOT file.
Notes
-----
This method, without the ``cycle`` argument, can be accessed more directly through square brackets (``__getitem__``) on the :py:class:`ROOTDirectory ` object.
""".format(**rootdirectory_fragments)
_method(uproot.rootio.ROOTDirectory.iterkeys).__doc__ = \
u"""Iterate over key names in this directory.
This method does not read objects.
Parameters
----------
{recursive}
{filtername}
{filterclass}
Returns
-------
iterator over bytes
names of objects and subdirectories in the file.
Start at this entry offset in the tree (default 0)
entrystop : int, optional
Stop at this entry offset in the tree (default end of tree)
cache : dict, optional
A dict-like interface to a cache object, in which any materialized virtual arrays will be kept
methods : dict, optional
A mapping from collection name to class deriving from `awkward.array.objects.Methods`
that implements custom additional mixins beyond the defaults provided.
metadata : dict, optional
Arbitrary metadata to embed in this NanoEvents table
Returns a NanoEvents object
'''
if cache is None:
cache = {}
if not isinstance(file, uproot.rootio.ROOTDirectory):
file = uproot.open(file)
tree = file[treename]
entrystart, entrystop = uproot.tree._normalize_entrystartstop(tree.numentries, entrystart, entrystop)
arrays = {}
for bname in tree.keys():
interpretation = uproot.interpret(tree[bname])
if isinstance(interpretation, uproot.asjagged):
virtualtype = awkward.type.ArrayType(float('inf'), interpretation.content.type)
else:
virtualtype = awkward.type.ArrayType(entrystop - entrystart, interpretation.type)
array = awkward.VirtualArray(
tree[bname].array,
(),
{'entrystart': entrystart, 'entrystop': entrystop, 'flatten': True},
type=virtualtype,
persistentkey=';'.join(str(x) for x in (_hex(file._context.uuid), _ascii(treename), entrystart, entrystop, _ascii(bname))),
Parameters
----------
{recursive}
{filtername}
{filterclass}
Returns
-------
list of (bytes, class object)
name-class object pairs from the file.
""".format(**rootdirectory_fragments)
_method(uproot.rootio.ROOTDirectory.allkeys).__doc__ = \
u"""Return keys at all levels of depth (shortcut for passing ``recursive=True`` to :py:meth:`keys `).
This method does not read objects.
Parameters
----------
{filtername}
{filterclass}
Returns
-------
list of bytes
names of objects and subdirectories in the file.
""".format(**rootdirectory_fragments)