# rangemapper.py#

A collection of classes for mapping indices to variable names and vice versa.

classopenmdao.utils.rangemapper.FlatRangeMapper(sizes)[source]Bases:

`RangeMapper`

A flat list mapping indices to variable key and relative indices.

- Parameters:

sizeslist of (key, size)Ordered list of (key, size) tuples. key must be hashable.

- Attributes:

rangeslist of (key, start, stop)List of (key, start, stop) tuples, where start and stop define the range of indices for that key. Ranges must be contiguous. key must be hashable.

- __getitem__(
idx)[source]Find the key corresponding to the given index.

- Parameters:

idxintThe index into the full array.

- Returns:

- object or None
The key corresponding to the given index, or None if not found.

- __init__(
sizes)[source]Initialize a FlatRangeMapper.

- __iter__()[source]
Iterate over (key, start, stop) tuples.

- Yields:

- (obj, int, int)
(key, start index, stop index), where key is a hashable object.

- between_iter(
start_key,stop_key)Iterate over (key, start, stop) tuples between the given start and stop keys.

- Parameters:

start_keyobjectKey corresponding to an index range.

stop_keyobjectKey corresponding to an index range.

- Yields:

- (obj, int, int)
(key, relative start index, relative stop index), where key is a hashable object.

staticcreate(sizes,max_flat_range_size=10000)Return a mapper that maps indices to variable names and relative indices.

- Parameters:

sizesiterable of (key, size)Iterable of (key, size) tuples.

max_flat_range_sizeintIf the total array size is less than this, a FlatRangeMapper will be returned instead of a RangeTree.

- Returns:

- FlatRangeMapper or RangeTree
A mapper that maps indices to variable key and relative indices.

- dump()
Dump the contents of the mapper to stdout.

- index2key_rel(
idx)[source]Find the key and relative index corresponding to the matched range.

- Parameters:

idxintThe index into the full array.

- Returns:

- object or None
The key corresponding to the matched range, or None if not found.

- int or None
The relative index into the matched range, or None if not found.

- inds2keys(
inds)Find the set of keys corresponding to the given indices.

- Parameters:

indsiter of intThe array indices.

- Returns:

- set of object
The set of keys corresponding to the given indices.

- key2range(
key)Get the range corresponding to the given key.

- Parameters:

keyobject (must be hashable)Data corresponding to an index range.

- Returns:

- tuple of (int, int)
The range of indices corresponding to the given key.

- key2size(
key)Get the size corresponding to the given key.

- Parameters:

keyobject (must be hashable)Key corresponding to an index range.

- Returns:

- int
The size corresponding to the given key.

- overlap_iter(
key,other)Find the set of keys that overlap between this mapper and another.

- Parameters:

keyobjectKey corresponding to an index range.

otherRangeMapperAnother mapper.

- Yields:

- (obj, int, int, obj, int, int)
(key, start, stop, otherkey, otherstart, otherstop).

classopenmdao.utils.rangemapper.RangeMapper(sizes)[source]Bases:

`object`

A mapper of indices to variable names and vice versa.

- Parameters:

sizesiterable of (key, size) tuplesIterable of (key, size) tuples. key must be hashable.

- Attributes:

sizeintTotal size of all of the sizes combined.

_key2rangedictDictionary mapping key to an index range.

- __getitem__(
idx)[source]Find the key corresponding to the given index.

- Parameters:

idxintThe index into the full array.

- __init__(
sizes)[source]Initialize a RangeMapper.

- __iter__()[source]
Iterate over (key, start, stop) tuples.

- Yields:

- (obj, int, int)
(key, start index, stop index), where key is a hashable object.

- between_iter(
start_key,stop_key)[source]Iterate over (key, start, stop) tuples between the given start and stop keys.

- Parameters:

start_keyobjectKey corresponding to an index range.

stop_keyobjectKey corresponding to an index range.

- Yields:

- (obj, int, int)
(key, relative start index, relative stop index), where key is a hashable object.

staticcreate(sizes,max_flat_range_size=10000)[source]Return a mapper that maps indices to variable names and relative indices.

- Parameters:

sizesiterable of (key, size)Iterable of (key, size) tuples.

max_flat_range_sizeintIf the total array size is less than this, a FlatRangeMapper will be returned instead of a RangeTree.

- Returns:

- FlatRangeMapper or RangeTree
A mapper that maps indices to variable key and relative indices.

- dump()[source]
Dump the contents of the mapper to stdout.

- inds2keys(
inds)[source]Find the set of keys corresponding to the given indices.

- Parameters:

indsiter of intThe array indices.

- Returns:

- set of object
The set of keys corresponding to the given indices.

- key2range(
key)[source]Get the range corresponding to the given key.

- Parameters:

keyobject (must be hashable)Data corresponding to an index range.

- Returns:

- tuple of (int, int)
The range of indices corresponding to the given key.

- key2size(
key)[source]Get the size corresponding to the given key.

- Parameters:

keyobject (must be hashable)Key corresponding to an index range.

- Returns:

- int
The size corresponding to the given key.

- overlap_iter(
key,other)[source]Find the set of keys that overlap between this mapper and another.

- Parameters:

keyobjectKey corresponding to an index range.

otherRangeMapperAnother mapper.

- Yields:

- (obj, int, int, obj, int, int)
(key, start, stop, otherkey, otherstart, otherstop).

classopenmdao.utils.rangemapper.RangeTree(sizes)[source]Bases:

`RangeMapper`

A binary search tree of sizes, mapping key to an index range.

Allows for fast lookup of the key corresponding to a given index. The sizes must be contiguous, but they can be of different sizes.

Search complexity is O(log2 n). Uses less memory than FlatRangeMapper when total array size is large.

- Parameters:

sizeslist of (key, start, stop)Ordered list of (key, start, stop) tuples, where start and stop define the range of indices for the key. Ranges must be contiguous. key must be hashable.

- Attributes:

rootRangeTreeNodeRoot node of the binary search tree.

- __getitem__(
idx)[source]Find the key corresponding to the given index.

- Parameters:

idxintThe index into the full array.

- Returns:

- object or None
The key corresponding to the given index, or None if not found.

- int or None
The rank corresponding to the given index, or None if not found.

- __init__(
sizes)[source]Initialize a RangeTree.

- __iter__()[source]
Iterate over (key, start, stop) tuples.

- Yields:

- (obj, int, int)
(key, start index, stop index), where key is a hashable object.

- between_iter(
start_key,stop_key)Iterate over (key, start, stop) tuples between the given start and stop keys.

- Parameters:

start_keyobjectKey corresponding to an index range.

stop_keyobjectKey corresponding to an index range.

- Yields:

- (obj, int, int)
(key, relative start index, relative stop index), where key is a hashable object.

- build(
ranges)[source]Build a binary search tree to map indices to variable key.

- Parameters:

rangeslist of (key, start, stop)List of (key, start, stop) tuples, where start and stop define the range of indices for the key. Ranges must be ordered and contiguous. key must be hashable.

- Returns:

- RangeTreeNode
Root node of the binary search tree.

staticcreate(sizes,max_flat_range_size=10000)Return a mapper that maps indices to variable names and relative indices.

- Parameters:

sizesiterable of (key, size)Iterable of (key, size) tuples.

max_flat_range_sizeintIf the total array size is less than this, a FlatRangeMapper will be returned instead of a RangeTree.

- Returns:

- FlatRangeMapper or RangeTree
A mapper that maps indices to variable key and relative indices.

- dump()
Dump the contents of the mapper to stdout.

- index2key_rel(
idx)[source]Find the key and relative index corresponding to the matched range.

- Parameters:

idxintThe index into the full array.

- Returns:

- obj or None
The key corresponding to the matched range, or None if not found.

- int or None
The relative index into the matched range, or None if not found.

- inds2keys(
inds)Find the set of keys corresponding to the given indices.

- Parameters:

indsiter of intThe array indices.

- Returns:

- set of object
The set of keys corresponding to the given indices.

- key2range(
key)Get the range corresponding to the given key.

- Parameters:

keyobject (must be hashable)Data corresponding to an index range.

- Returns:

- tuple of (int, int)
The range of indices corresponding to the given key.

- key2size(
key)Get the size corresponding to the given key.

- Parameters:

keyobject (must be hashable)Key corresponding to an index range.

- Returns:

- int
The size corresponding to the given key.

- overlap_iter(
key,other)Find the set of keys that overlap between this mapper and another.

- Parameters:

keyobjectKey corresponding to an index range.

otherRangeMapperAnother mapper.

- Yields:

- (obj, int, int, obj, int, int)
(key, start, stop, otherkey, otherstart, otherstop).

classopenmdao.utils.rangemapper.RangeTreeNode(key,start,stop)[source]Bases:

`RangeMapper`

A node in a binary search tree of sizes, mapping key to an index range.

- Parameters:

keyobjectData corresponding to an index range.

startintStarting index of the variable.

stopintEnding index of the variable.

- Attributes:

keyobjectData corresponding to an index range.

startintStarting index of the variable.

stopintEnding index of the variable.

leftRangeTreeNode or NoneLeft child node.

rightRangeTreeNode or NoneRight child node.

- __getitem__(
idx)Find the key corresponding to the given index.

- Parameters:

idxintThe index into the full array.

- __init__(
key,start,stop)[source]Initialize a RangeTreeNode.

- __iter__()
Iterate over (key, start, stop) tuples.

- Yields:

- (obj, int, int)
(key, start index, stop index), where key is a hashable object.

- between_iter(
start_key,stop_key)Iterate over (key, start, stop) tuples between the given start and stop keys.

- Parameters:

start_keyobjectKey corresponding to an index range.

stop_keyobjectKey corresponding to an index range.

- Yields:

- (obj, int, int)
(key, relative start index, relative stop index), where key is a hashable object.

staticcreate(sizes,max_flat_range_size=10000)Return a mapper that maps indices to variable names and relative indices.

- Parameters:

sizesiterable of (key, size)Iterable of (key, size) tuples.

max_flat_range_sizeint- Returns:

- FlatRangeMapper or RangeTree
A mapper that maps indices to variable key and relative indices.

- dump()
Dump the contents of the mapper to stdout.

- inds2keys(
inds)Find the set of keys corresponding to the given indices.

- Parameters:

indsiter of intThe array indices.

- Returns:

- set of object
The set of keys corresponding to the given indices.

- key

- key2range(
key)Get the range corresponding to the given key.

- Parameters:

keyobject (must be hashable)Data corresponding to an index range.

- Returns:

- tuple of (int, int)
The range of indices corresponding to the given key.

- key2size(
key)Get the size corresponding to the given key.

- Parameters:

keyobject (must be hashable)Key corresponding to an index range.

- Returns:

- int
The size corresponding to the given key.

- left

- overlap_iter(
key,other)Find the set of keys that overlap between this mapper and another.

- Parameters:

keyobjectKey corresponding to an index range.

otherRangeMapperAnother mapper.

- Yields:

- (obj, int, int, obj, int, int)
(key, start, stop, otherkey, otherstart, otherstop).

- right

- start

- stop