Skip to content

Python Libraries

Library for IN.DAT Files

process/io/in_dat.py

A set of Python classes to read, modify and write an IN.DAT file.

class InDat

Class InDat for handling IN.DAT data. It handles

  • Reading IN.DAT files
  • Writing IN.DAT files
  • Storing information in dictionary for use in other codes
  • Alterations to IN.DAT

To open a PROCESS input file and store the information in a Python class use:

    i = InDat(filename="IN.DAT")

To get values of input file entries from the object

    i.data["ixc"].value
    i.number_of_constraints
    i.number_of_itvars
    i.data["fimp"].value
    i.data["ipfloc"].value

To add/remove constraints, iteration variables

    i.remove_constraint_equation(2)
    i.add_constraint_equation("3")
    i.add_constraint_equation(2)
    i.add_iteration_variable(103)
    i.add_iteration_variable("2")
    i.remove_iteration_variable(2)
    i.remove_iteration_variable("3")
    # Add bound will change the bound value if it already exists
    i.add_bound(103, "upper", 5.0)
    i.remove_bound(2, "upper")

To change the value or add/remove a regular input

# Add parameter will change the parameter value if it already exists
i.add_parameter("blnktthdsd", 0.5)
i.add_parameter("iavail", 1)
i.remove_parameter("blnkithsddd")
i.remove_parameter("blnkith")
i.add_parameter("sweep", [3.0, 3.0])

To write the modified IN.DAT to file

i.write_in_dat()
i.write_in_dat(output_filename="new_IN.DAT")

Library for MFILE.DAT Files

process/io/mfile.py

A set of Python classes to read and extract data from the MFILE.DAT.

class MFile

To open an MFILE.DAT as a Python object:

m = MFile(filename="MFILE.DAT")

As a PROCESS run may contain a scan, access to the MFILE data is determined by scan number. To find the number of scans use

m.data["rmajor"].get_number_of_scans()

To get an individual scan for a variable use

m.data["rmajor"].get_scan(2)

If the file contains no scan, but a single data point then one can use the above with the argument of -1 like below

m.data["rmajor"].get_scan(-1)

To get all of the scans as a list (if there is a single point it returns list length of 1) use

m.data["rmajor"].get_scans()