IterationsComponent

class lasif.components.iterations.IterationsComponent(iterations_folder, communicator, component_name)[source]

Component dealing with the iteration xml files.

Parameters:
  • iterations_folder – The folder with the iteration XML files.
  • communicator – The communicator instance.
  • component_name – The name of this component for the communicator.
count()[source]

Get the number of iterations managed by this component.

>>> comm = getfixture('iterations_comm')
>>> comm.iterations.count()
2
create_new_iteration(iteration_name, solver_name, events_dict, min_period, max_period, quiet=False, create_folders=True)[source]

Creates a new iteration XML file.

Parameters:
  • iteration_name – The name of the iteration.
  • solver_name – The name of the solver to be used for the new iteration.
  • events_dict – A dictionary specifying the used events.
  • min_period – The minimum period in seconds for the new iteration.
  • max_period – The maximum period in seconds for the new iteration.
  • quiet – Do not print anything if set to True.
  • create_folders – Create the folders for this iteration’s synthetic waveforms
>>> comm = getfixture('iterations_comm')
>>> comm.iterations.has_iteration("3")
False
>>> comm.iterations.create_new_iteration("3", "ses3d_4_1",
...     {"EVENT_1": ["AA.BB", "CC.DD"], "EVENT_2": ["EE.FF"]},
...     10.0, 20.0, quiet=True, create_folders=False)
>>> comm.iterations.has_iteration("3")
True
>>> os.remove(comm.iterations.get_iteration_dict()["3"])
create_successive_iteration(existing_iteration_name, new_iteration_name, create_folders=True)[source]

Create an iteration based on an existing one.

It will take all settings in one iteration and transfers them to another iteration. Any comments will be deleted.

Parameters:
  • existing_iteration_name – Name of the iteration to be used as a template.
  • new_iteration_name – Name of the new iteration.
  • create_folders – Create the folders for the next iteration’s synthetic waveforms

Note that the create_folders=False argument is only used here for testing purposes. In most cases you will want this to be True.

>>> comm = getfixture('iterations_comm')
>>> comm.iterations.has_iteration("3")
False
>>> comm.iterations.create_successive_iteration("1", "3",
...                                             create_folders=False)
>>> comm.iterations.has_iteration("3")
True

Comments of an iteration will be stripped.

>>> comm.iterations.get("1").comments
['Some', 'random comments']
>>> comm.iterations.get("3").comments
[]
>>> os.remove(comm.iterations.get_iteration_dict()["3"])

If the iteration template does not exist, a LASIFNotFoundError will be raised.

>>> comm.iterations.create_successive_iteration("99", "100")
Traceback (most recent call last):
    ...
LASIFNotFoundError: ...

A ValueError will be raised if the new iteration already exists.

>>> comm.iterations.create_successive_iteration("1", "2")
Traceback (most recent call last):
    ...
ValueError: ...
create_synthetics_folder_for_iteration(iteration_name)[source]

Create the synthetics folder if it does not yet exists.

Parameters:iteration_name – The iteration for which to create the folders.
get(iteration_name)[source]

Returns an iteration object.

Parameters:iteration_name – The name of the iteration to retrieve.
>>> comm = getfixture('iterations_comm')
>>> comm.iterations.get("1")  
<lasif.iteration_xml.Iteration object at ...>
>>> print comm.iterations.get("1")          
LASIF Iteration
    Name: 1
    ...

A LASIFNotFoundError will be raised, if the iteration is not known.

>>> comm.iterations.get("99")
Traceback (most recent call last):
    ...
LASIFNotFoundError: ...

It also works with the long iteration name and event an existing iteration object. This makes it simple to use, one path for all possibilities. >>> it = comm.iterations.get(“ITERATION_1”) >>> it # doctest: +ELLIPSIS <lasif.iteration_xml.Iteration object at …> >>> comm.iterations.get(it) <lasif.iteration_xml.Iteration object at …>

get_filename_for_iteration(iteration_name)[source]

Helper function returning the filename of an iteration.

get_iteration_dict()[source]

Returns a dictionary with the keys being the iteration names and the values the iteration filenames.

>>> import pprint
>>> comm = getfixture('iterations_comm')
>>> pprint.pprint(comm.iterations.get_iteration_dict())         
{'1': '/.../ITERATION_1.xml',
 '2': '/.../ITERATION_2.xml'}
get_long_iteration_name(iteration_name)[source]

Returns the long form of an iteration from its short name.

>>> comm = getfixture('iterations_comm')
>>> comm.iterations.get_long_iteration_name("1")
'ITERATION_1'
has_iteration(iteration_name)[source]

Test for existence of an iteration.

Parameters:iteration_name (str) – The name of the iteration.
>>> comm = getfixture('iterations_comm')
>>> comm.iterations.has_iteration("1")
True
>>> comm.iterations.has_iteration("99")
False
list()[source]

Get a list of all iterations managed by this component.

>>> comm = getfixture('iterations_comm')
>>> comm.iterations.list()
['1', '2']
plot_Q_model(iteration_name)[source]

Plots the Q model for a given iteration. Will only work if the iteration uses SES3D as its solver.

save_iteration(iteration)[source]

Save an iteration object to disc. :param iteration: