"""
This example script adds new batches to an existing batch project
"""
import umetrics
import os
from tkinter import messagebox, Tk
def show_message(message):
# Show a tkinter messagebox with the message.
tk_main=Tk()
tk_main.withdraw()
messagebox.showinfo(title='Complement Batch Project', message=message)
tk_main.destroy()
def run():
show_message('This script will add new batches to an existing project and\n'+
'create a new batch evolution model group with the added batches.')
# Close the current open project
project = umetrics.SimcaApp.get_active_project()
if project.is_open :
if not umetrics.simca.ProjectHandler.close_project(project, True):
return
# The path for the data file and where the project is located
scriptpath = os.path.dirname(os.path.realpath(__file__))
datapath = scriptpath + r'\Data\NewBatches.dif'
projectpath = scriptpath + r'\Data\BatchProject.usp'
importOptions = ''
# Open the project
project = umetrics.simca.ProjectHandler.open_project(projectpath)
datafile = umetrics.impdata.read_file(datapath, openoptions = importOptions)
# Set the project as the active project in SIMCA
umetrics.SimcaApp.set_active_project(project)
# Test that it is a batch project
if not (project.is_batch_project) :
raise Exception("The project must be a batch project!")
# Specify primary and secondary ID and batch and phase ID
# Set first row to primary variable ID
datafile.importspec.set_row_type(0, umetrics.impdata.ImportSpecification.rowtype.primaryvarid)
# Set first colum to primary observation ID
datafile.importspec.set_col_type(0, umetrics.impdata.ImportSpecification.columntype.primaryobsid)
# Exclude non used column
datafile.importspec.set_col_type(1, umetrics.impdata.ImportSpecification.columntype.excluded)
# Set batch ID
datafile.importspec.set_col_type(2, umetrics.impdata.ImportSpecification.columntype.batchid)
# Set phase ID
datafile.importspec.set_col_type(3, umetrics.impdata.ImportSpecification.columntype.phaseid)
# Create the dataset
ds_num = project.create_dataset(datafile, "NewBatches")
# Create a new workset from the first model group that we want to complement with new batches
workset = project.new_as_workset(-1)
# Add the new dataset with the new batches
workset.add_dataset(ds_num)
# Create and fit the models
models = workset.create_model()
for modelNumber in models :
project.fit_model(modelNumber)
if __name__ == "__main__":
run()