# -------------------------------------------------------------------------
# Script to get the model of the logistic curve fitting
# and update a table 'Model Parameters' with it
# -------------------------------------------------------------------------
import math
from Spotfire.Dxp.Application.Visuals import VisualContent
from Spotfire.Dxp.Application.Visuals.FittingModels import FittingModelTypeIdentifiers,LogisticRegressionFittingModel
viz=visual.As[VisualContent]()
for fm in viz.FittingModels:
if fm.TypeId==FittingModelTypeIdentifiers.LogisticRegressionFittingModel:
ds = fm.GetResultsDataSource()
if Document.Data.Tables.Contains("Model Parameters"):
#Replace data if table exists table=Document.Data.Tables["Model Parameters"]
table.ReplaceData(ds)
else:
#Create table if doesn't exists Document.Data.Tables.Add("Model Parameters", ds)
# call the script yo update the Y calculationfrom System.Collections.Generic import Dictionary
from Spotfire.Dxp.Application.Scripting import ScriptDefinition
import clr
scriptDef = clr.Reference[ScriptDefinition]()
Document.ScriptManager.TryGetScript("UpdateCalcY", scriptDef)
paramDict = {"visual":visual}
params = Dictionary[str, object](paramDict)
Document.ScriptManager.ExecuteScript(scriptDef.ScriptCode, params)
# -----------------------------------------------------------------------------------------------------------------------
# Script to recalculate the Y value corresponding to the X value in property SelectedX
# using the parameters in table 'Model Parameters', created by the other script
# -----------------------------------------------------------------------------------------------------------------------
import math
from Spotfire.Dxp.Application.Visuals import VisualContent
from Spotfire.Dxp.Application.Visuals.FittingModels import FittingModelTypeIdentifiers,LogisticRegressionFittingModel
from Spotfire.Dxp.Data import DataValueCursor
viz=visual.As[VisualContent]()
x=Document.Properties['SelectedX']
if Document.Data.Tables.Contains("Model Parameters"):
table=Document.Data.Tables["Model Parameters"]
minCol=table.Columns['min']
minCursor=DataValueCursor.Create[float](minCol)
maxCol=table.Columns['max']
maxCursor=DataValueCursor.Create[float](maxCol)
hillCol=table.Columns['Hill']
hillCursor=DataValueCursor.Create[float](hillCol)
lX50Col=table.Columns['LoggedX50']
lX50Cursor=DataValueCursor.Create[float](lX50Col)
for row in table.GetRows(minCursor,maxCursor,hillCursor,lX50Cursor):
y=minCursor.CurrentValue+((maxCursor.CurrentValue-minCursor.CurrentValue)/(1.00+math.pow(10,hillCursor.CurrentValue*(lX50Cursor.CurrentValue-x))))
Document.Properties['CalcY']=y
break;
# Script to get the model of the logistic curve fitting
# and update a table 'Model Parameters' with it
# -------------------------------------------------------------------------
import math
from Spotfire.Dxp.Application.Visuals import VisualContent
from Spotfire.Dxp.Application.Visuals.FittingModels import FittingModelTypeIdentifiers,LogisticRegressionFittingModel
viz=visual.As[VisualContent]()
for fm in viz.FittingModels:
if fm.TypeId==FittingModelTypeIdentifiers.LogisticRegressionFittingModel:
ds = fm.GetResultsDataSource()
if Document.Data.Tables.Contains("Model Parameters"):
#Replace data if table exists table=Document.Data.Tables["Model Parameters"]
table.ReplaceData(ds)
else:
#Create table if doesn't exists Document.Data.Tables.Add("Model Parameters", ds)
# call the script yo update the Y calculationfrom System.Collections.Generic import Dictionary
from Spotfire.Dxp.Application.Scripting import ScriptDefinition
import clr
scriptDef = clr.Reference[ScriptDefinition]()
Document.ScriptManager.TryGetScript("UpdateCalcY", scriptDef)
paramDict = {"visual":visual}
params = Dictionary[str, object](paramDict)
Document.ScriptManager.ExecuteScript(scriptDef.ScriptCode, params)
# -----------------------------------------------------------------------------------------------------------------------
# Script to recalculate the Y value corresponding to the X value in property SelectedX
# using the parameters in table 'Model Parameters', created by the other script
# -----------------------------------------------------------------------------------------------------------------------
import math
from Spotfire.Dxp.Application.Visuals import VisualContent
from Spotfire.Dxp.Application.Visuals.FittingModels import FittingModelTypeIdentifiers,LogisticRegressionFittingModel
from Spotfire.Dxp.Data import DataValueCursor
viz=visual.As[VisualContent]()
x=Document.Properties['SelectedX']
if Document.Data.Tables.Contains("Model Parameters"):
table=Document.Data.Tables["Model Parameters"]
minCol=table.Columns['min']
minCursor=DataValueCursor.Create[float](minCol)
maxCol=table.Columns['max']
maxCursor=DataValueCursor.Create[float](maxCol)
hillCol=table.Columns['Hill']
hillCursor=DataValueCursor.Create[float](hillCol)
lX50Col=table.Columns['LoggedX50']
lX50Cursor=DataValueCursor.Create[float](lX50Col)
for row in table.GetRows(minCursor,maxCursor,hillCursor,lX50Cursor):
y=minCursor.CurrentValue+((maxCursor.CurrentValue-minCursor.CurrentValue)/(1.00+math.pow(10,hillCursor.CurrentValue*(lX50Cursor.CurrentValue-x))))
Document.Properties['CalcY']=y
break;
ConversionConversion EmoticonEmoticon