Cyclus Library Bindings (cyclus.lib)

Python wrapper for cyclus.

class cyclus.lib.Agent

The abstract base class used by all types of agents that live and interact in a simulation.

ancestor_of(other)

Returns true if this agent is an ancestor of an other agent (i.e., resides above an other agent in the family tree).

annotations

Agent annotations.

children

A frozen set of the children of this agent.

children_str()

Returns recursively generated string of the parent-child tree.

context

Returns this agent’s simulation context.

decendent_of(other)

Returns true if this agent is an decendent of an other agent (i.e., resides above an other agent in the family tree).

decommission()

Decommissions the agent, removing it from the simulation. Results in destruction of the agent object. If agents write their own decommission() function, they must call their superclass’ decommission function at the END of their decommission() function.

enter_time

The time step at which this agent’s Build function was called (-1 if the agent has never been built).

exit_time

The default time step at which this agent will exit the simulation (-1 if the agent has an infinite lifetime).

Decommissioning happens at the end of a time step. With a lifetime of 1, we expect an agent to go through only 1 entire time step. In this case, the agent should be decommissioned on the same time step it was created. Therefore, for agents with non-infinite lifetimes, the exit_time will be the enter time plus its lifetime less 1.

id

The agent instance’s unique ID within a simulation.

in_family_tree(other)

Returns true if this agent is in the parent-child family tree of an other agent.

kind

Returns a string that describes the agent subclass (e.g. Region, Facility, etc.)

lifetime

The number of time steps this agent operates between building and decommissioning (-1 if the agent has an infinite lifetime)

lifetime_force(n_timesteps)
parent()

Returns parent of this agent. Returns None if the agent has no parent.

parent_id

The id for this agent’s parent or -1 if this agent has no parent.

prototype

The agent’s prototype.

schema

An agent’s xml rng schema for initializing from input files. All concrete agents should override this function. This must validate the same xml input that the InfileToDb function receives.

spec

The agent’s spec.

tree_strs(m)

Returns a list of children strings representing the parent-child tree at the node for Agent m.

version

Agent version string.

class cyclus.lib.AgentSpec

AgentSpec C++ wrapper

Parameters:

spec : str or None, optional

This repesents either the full string form of the spec or just the path.

lib : str or None, optional

agent : str or None, optional

alias : str or None, optional

agent
alias
lib
path
sanatize()
class cyclus.lib.ColumnInfo

Python wrapper for ColumnInfo

col
dbtype
index
shape
table
class cyclus.lib.Context

A simulation context provides access to necessary simulation-global functions and state. All code that writes to the output database, needs to know simulation time, creates/builds facilities, and/or uses loaded composition recipes will need a context pointer. In general, all global state should be accessed through a simulation context.

Parameters:

timer : Timer, optional

An instance of the timer class.

recorder : Recorder, optional

An instance of the recorder class.

init : bool, optional

Whether or not to initialize a new context object.

Warning

  • The context takes ownership of and manages the lifetime/destruction of all agents constructed with it (including Cloned agents). Agents should generally NEVER be allocated on the stack.

  • The context takes ownership of the solver and will manage its destruction.

add_recipe(name, comp, basis)

Adds a new recipe to a simulation

Parameters:

name: str

name for recipe

comp: dict

dictionary mapping nuclides to their compostion fraction

basis: str

‘atom’ or ‘mass’ to specify the type of composition fraction

del_agent(agent)

Destructs and cleans up an agent (and it’s children recursively).

dt

The length of timer per time step, in seconds.

get_recipe(name, basis='mass')

Retrieve a registered recipe. This is intended for retrieving compositions loaded from an input file(s) at the start of a simulation and NOT for communicating compositions between facilities during the simulation. You must provide the basis as either “mass” or “atom”.

new_datum(title)

Returns a new datum instance.

schedule_build(parent, proto_name, t=-1)

Schedules the named prototype to be built for the specified parent at timestep t. The default t=-1 results in the build being scheduled for the next build phase (i.e. the start of the next timestep).

schedule_decom(agent, t=-1)

Schedules the given Agent to be decommissioned at the specified timestep t. The default t=-1 results in the decommission being scheduled for the next decommission phase (i.e. the end of the current timestep).

sim_id

The simulation ID.

time

The simulation time step number.

class cyclus.lib.Datum

Datum class.

add_val(field, value, shape=None, type=None)

Adds Datum value to current record as the corresponding cyclus data type.

Parameters:

field : str or bytes

The column name.

value : object

Value in table column, optional

shape : list or tuple of ints

Length of value.

type : dbtype or norm type

Data type as defined by cyclus typesystem

Returns:

self : Datum

record()

Records the Datum.

title

The datum name.

class cyclus.lib.DbInit

DbInit provides an interface for agents to record data to the output db that automatically injects the agent’s id and current timestep alongside all recorded data. The prefix ‘AgentState’ + [spec] (e.g. MyReactor) is also added to the datum title.

Parameters:

free : bool, optional

Whether or not to free the C++ instance on deallocation.

new_datum(title)

Returns a new datum to be used exactly as the Context.new_datum() method. Users must not add fields to the datum that are automatically injected: ‘SimId’, ‘AgentId’, and ‘SimTime’.

class cyclus.lib.DynamicModule

Dynamic Module wrapper class.

close_all()

Closes all dynamic modules.

exists(spec)

Tests whether an agent spec exists.

static make(ctx, spec)

Returns a newly constructed agent for the given module spec.

Parameters:

ctx : Context

spec : AgentSpec or str

Returns:

rtn : Agent

path
class cyclus.lib.Env

Environment wrapper class.

An environment utility to help locate files and find environment settings. The environment for a given simulation can be accessed via the simulation’s Context.

allow_milps

whether or not Cyclus should allow Mixed-Integer Linear Programs The default depends on a compile time option DEFAULT_ALLOW_MILPS, but may be specified at run time with the ALLOW_MILPS environment variable.

build_path

The Cyclus build path.

cyclus_path

A tuple of strings representing where cyclus searches for modules.

env_delimiter

the correct environment variable delimiter based on the file system.

static find_module(path)

Returns the full path to a module by searching through default install and CYCLUS_PATH directories.

static get(var)

Obtains an environment variable.

install_path

The Cyclus install path.

nuc_data

The nuc_data path.

static path_base(path)

Effectively basename

path_delimiter

the correct path delimiter based on the file system.

static rng_schema(flat=False)

Returns the current rng schema. Uses CYCLUS_RNG_SCHEMA env var if set; otherwise uses the default install location. If using the default ocation, set flat=True for the default flat schema.

static set_nuc_data_path(path=None)

Initializes the path to the cyclus_nuc_data.h5 file

By default, it is assumed to be located in the path given by GetInstallPath()/share; however, paths in environment variable CYCLUS_NUC_DATA are checked first.

class cyclus.lib.FullBackend

Full backend cyclus database interface.

query(table, conds=None)

Queries a database table.

Parameters:

table : str

The table name.

conds : iterable, optional

A list of conditions.

Returns:

results : pd.DataFrame

Pandas DataFrame the represents the table

schema(table)
tables

Retrieves the set of tables present in the database.

class cyclus.lib.Hdf5Back

HDF5 backend cyclus database interface.

close()

Closes the backend, flushing it in the process.

flush()

Flushes the database to disk.

name

The name of the database.

query(table, conds=None)

Queries a database table.

Parameters:

table : str

The table name.

conds : iterable, optional

A list of conditions.

Returns:

results : pd.DataFrame

Pandas DataFrame the represents the table

schema(table)
tables

Retrieves the set of tables present in the database.

class cyclus.lib.InfileTree

A class for extracting information from a given XML parser

Parameters:

free : bool, optional

Whether or not to free the C++ instance on deallocation.

classmethod from_parser(parser)

Initializes an input file tree from an XML parser.

Parameters:

parser : XMLParser

An XMLParser instance.

nmatches(query)

Investigates the current status and returns the number of elements matching a query.

Parameters:

query : str

The XML path to count.

Returns:

n : int

The number of query matches.

optional_query(query, default)

A query method for optional parameters.

Parameters:

query : str

The XML path to test if it exists.

default : any type

The default value to return if the XML path does not exist in the tree. The type of the return value (str, bool, int, etc) is determined by the type of the default.

query(path, dbtype, index=0)

A query method for required parameters.

Parameters:

path : str

The XML path to test if it exists.

dbtype : str or int

Represents primitive type in type system. Note that only primitive types are queryable, by design, and not all primitive types. Blobs and UUIDs are not included because they cannot be lexically cast.

index : int, optional

The instance to query.

subtree(query, index=0)

Populates a child infile based on a query and index.

Parameters:

query : str

The XML path to test if it exists.

index : int, optional

The index of the queried element, default 0.

Returns:

sub : InfileTree

A sub-tree repreresenting the query and the index.

class cyclus.lib.Logger

A logging tool providing finer grained control over standard output for debugging and other purposes.

no_agent

Set whether or not agent/agent log entries should be printed

no_mem
report_level

Use to get/set the (global) log level report cutoff.

static to_log_level(text)

Converts a string into a corresponding LogLevel value.

For strings that do not correspond to any particular LogLevel enum value the method returns the LogLevel value LEV_ERROR. This method is primarily intended for translating command line verbosity argument(s) in appropriate report levels. LOG(level) statements

static to_string(level)

Converts a LogLevel enum value into a corrsponding string.

For a level argments that have no corresponding string value, the string BAD_LEVEL is returned. This method is primarily intended for translating LOG(level) statement levels into appropriate strings for output to stdout.

class cyclus.lib.Position

a basic class that stores the geographic location in latitude and longitude and follows the ISO 6709 standard. Longitude and Latitude is stored as seconds of degrees. This allows the coordinate elements such as degrees, minutes, and seconds to “remain on the integral portion of values, with the exception of decimal of seconds, avoiding loss of precision.” This is calculated by multiplying decimal degrees by 3600. example: 05.2169 -> 18780.84

distance(other)

Computes the distance between this object and another position.

latitude
longitude
update(latitude=None, longitude=None)

Updates the latitude and/or longitude

class cyclus.lib.Recorder

Cyclus recorder interface.

close()

Closes the recorder.

dump_count

The frequency of recording.

flush()

Flushes the recorder to disk.

inject_sim_id

Whether or not to inject the simulation id into the tables.

new_datum(title)

Returns a new datum instance.

register_backend(backend)

Registers a backend with the recorder.

sim_id

The simulation id of the recorder.

class cyclus.lib.SimInit

Handles initialization of a simulation from the output database. After calling Init, Restart, or Branch, the initialized Context, Timer, and Recorder can be retrieved.

Parameters:

recorder : Recorder

The recorder class for the simulation.

backend : QueryableBackend

A backend to use for this simulation.

context

Returns the initialized context. Note that either Init, Restart, or Branch must be called first.

timer

Returns the initialized timer. Note that either Init, Restart, or Branch must be called first.

class cyclus.lib.SqliteBack

SQLite backend cyclus database interface.

close()

Closes the backend, flushing it in the process.

flush()

Flushes the database to disk.

name

The name of the database.

query(table, conds=None)

Queries a database table.

Parameters:

table : str

The table name.

conds : iterable, optional

A list of conditions.

Returns:

results : pd.DataFrame

Pandas DataFrame the represents the table

schema(table)
tables

Retrieves the set of tables present in the database.

class cyclus.lib.Timer

Controls simulation timestepping and inter-timestep phases.

Parameters:

init : bool, optional

Whether or not we should initialize a new C++ Timer instance.

run_sim()

Runs the simulation.

class cyclus.lib.XMLFileLoader

Handles initialization of a database with information from a cyclus xml input file.

Create a new loader reading from the xml simulation input file and writing to and initializing the backends in the recorder. The recorder must already have the backend registered. schema_file identifies the main xml rng schema used to validate the input file. The format specifies the input file format from one of: “none”, “xml”, “json”, or “py”.

load_sim()

Load an entire simulation from the inputfile.

class cyclus.lib.XMLFlatLoader

Handles initialization of a database with information from a cyclus xml input file.

Create a new loader reading from the xml simulation input file and writing to and initializing the backends in the recorder. The recorder must already have the backend registered. schema_file identifies the main xml rng schema used to validate the input file. The format specifies the input file format from one of: “none”, “xml”, “json”, or “py”.

Notes

This is not a subclass of the XMLFileLoader Python bindings, even though the C++ class is a subclass in C++. Rather, they are duck typed by exposing the same interface. This makes handling the instance pointers in Cython a little easier.

load_sim()

Load an entire simulation from the inputfile.

class cyclus.lib.XMLParser

A helper class to hold xml file data and provide automatic validation.

Parameters:

filename : str, optional

Path to file to load.

format : str, optional

The format to read in as: “none”, “xml”, “json”, or “py”. Applies to either filename or raw, if given.

raw : str, optional

XML string to load.

cyclus.lib.boost_version()

Boost version.

cyclus.lib.call_listeners(tsname, agent, time, value)

Calls the time series listener functions of cyclus agents.

cyclus.lib.capsule_agent_to_py(agent, ctx)

Returns an agent from its id

cyclus.lib.coincbc_version()

Coin CBC version.

cyclus.lib.coinclp_version()

Coin CLP version.

cyclus.lib.core_version()

Cyclus core version.

cyclus.lib.dbopen(fname)

Opens a Cyclus database.

cyclus.lib.describe_version()

Describes the Cyclus version.

cyclus.lib.discover_metadata_in_cyclus_path()

Discover archetype metadata in cyclus path. Returns a Jason.Value object.

cyclus.lib.discover_specs(path, library)

Discover archetype specifications for a path and library. Returns a set of strings.

cyclus.lib.discover_specs_in_cyclus_path()

Discover archetype specifications that live recursively in CYCLUS_PATH directories. Returns a set of strings.

cyclus.lib.get_warn_as_error()

Returns the current value for wether warnings should be treated as errors.

cyclus.lib.get_warn_limit()

Returns the current warning limit.

cyclus.lib.hdf5_version()

HDF5 version.

cyclus.lib.json_to_py(s)

Converts a JSON string into an equivalent Python string

cyclus.lib.json_to_xml(s)

Converts a JSON string into an equivalent XML string

cyclus.lib.load_string_from_file(filename, format=None)

Loads an XML file from a path or from a string and a format (‘xml’, ‘json’, or ‘py’).

cyclus.lib.make_py_agent(libname, agentname, ctx_capsule)

Makes a new Python agent instance.

cyclus.lib.normalize_bid_portfolio(inp)

Normalizes a bid portfolio into a standard Python form, ready to be traded. Note that this does not include the bidder object.

cyclus.lib.normalize_request_portfolio(inp)

Normalizes a request portfolio into a standard Python form, ready to be traded. Note that this does not include the requester object.

cyclus.lib.py_to_json(s)

Converts a Python string into an equivalent JSON string

cyclus.lib.py_to_xml(s)

Converts a Python string into an equivalent XML string

cyclus.lib.record_time_series(tstype, agent, value)

Python hook into RecordTimeSeries for Python archetypes

Parameters:

tstype : int or string

Time series type flag; POWER, ENRICH_SWU, etc or the string flag.

agent : object

Python agent, usually self when called by an archetype.

value : float

The value being recorded in the time series.

cyclus.lib.set_warn_as_error(wae)

Sets whether warnings should be treated as errors.

cyclus.lib.set_warn_limit(wl)

Sets the warning limit.

cyclus.lib.sqlite3_version()

SQLite3 version.

cyclus.lib.version()

Returns string of the cyclus version and its dependencies.

cyclus.lib.xml2_version()

libxml 2 version.

cyclus.lib.xml_to_json(s)

Converts an XML string into an equivalent JSON string

cyclus.lib.xml_to_py(s)

Converts an XML string into an equivalent Python string

cyclus.lib.xmlpp_version()

libxml++ version.