#!/usr/bin/env python
# coding: utf-8

# # How To: Run SModelS using a parameter file

# In[1]:


# Set up the path to SModelS installation folder
import sys; sys.path.append("."); import importlib; importlib.import_module("smodels_paths") if importlib.util.find_spec("smodels_paths") else None


# In[2]:


# Import those parts of smodels that are needed for this exercise
from smodels.installation import installDirectory, version
from smodels.matching import modelTester
from smodels.tools import crashReport
from smodels.base import smodelsLogging
from smodels.base import runtime
from smodels.tools import particlesLoader
from importlib import reload


# In[3]:


#Define the SLHA file name
filename="inputFiles/slha/gluino_squarks.slha"
#Define the parameter file
parameterFile="./parameters.ini"


# In[4]:


#Read and check parameter file, exit parameterFile does not exist
parser = modelTester.getParameters(parameterFile)
#Display defined options:
for section in parser.sections():
    print(section)
    for option in parser.options(section):
        print('  ',option,'=',parser.get(section,option))


# In[5]:


#Change option:
parser.set('printer','outputtype','summary')


# In[6]:


#Determine particles module from ini file, if necessary """
if parser.has_option("particles","model"):
    runtime.modelFile = parser.get( "particles", "model" )
    reload(particlesLoader)

#Load the database defined in the parameters file, exit if not found """
database = modelTester.loadDatabase(parser,db=None)
listOfExpRes = modelTester.loadDatabaseResults(parser, database)


# In[7]:


#Set local dir as output folder:
outputDir = './'
#run SModelS with input file:
output = modelTester.testPoint(filename, outputDir, parser, database)


# In[8]:


# As we're not exiting the program, let's make sure all output is flushed
[ x.flush() for x in output.values() ]


# [Download output](./gluino_squarks.slha.smodels)

# ### Display output:

# In[9]:


get_ipython().system('cat gluino_squarks.slha.smodels')


# In[10]:


get_ipython().system('rm gluino_squarks.slha.smodels')

