Open PavelBal opened 2 years ago
hum...we show all parameters except the one that were marked explicitly as hidden. What are you missing?
@StephanSchaller Maybe you can comment.
Vote against this. s. https://github.com/Open-Systems-Pharmacology/PK-Sim/issues/2103#issuecomment-1067943947
Vote for.
Vote against this. s. https://github.com/Open-Systems-Pharmacology/PK-Sim/issues/2103#issuecomment-1067943947
Why?... do you have a reason (except that users might make mistakes)?. Like a technical hurdle or huge effort?
The effort is low, the impact is high.
E.g. imagine enabling for editing constant parameters which may not be overwritten. And then you use "add all const" parameters in the sensitivity calculation. This will result in: a) huge wasting of time, because calcualtion of sensitivity of those parameters does not make any sense b) results are absolute garbage, because changing those parameters breaks the model
And so on. It just does not make any sense.
interestingly, when setting ALL parameters to visible in v11, I cannot open a simulation anymore:
Application:
PK-Sim® 11.0.82
Sequence contains no elements
Stack trace:
at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)
at PKSim.Presentation.Mappers.DynamicGroupExpander.closestAppliedMolecule(IParameter parameter)
at System.Linq.Lookup`2.Create[TSource](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
at System.Linq.GroupedEnumerable`3.GetEnumerator()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.OrderedEnumerable`1.<GetEnumerator>d__1.MoveNext()
at PKSim.Presentation.Mappers.DynamicGroupExpander.addDynamicParameterGroupNodeTo(ITreeNode node, String subGroupName, IEnumerable`1 allParameters, Func`2 keySelector, Func`2 keyAvailableFunc)
at PKSim.Presentation.Mappers.DynamicGroupExpander.addDynamicParameterGroupNodeTo(ITreeNode node, String subGroupName, IEnumerable`1 allParameters, Func`2 keySelector)
at PKSim.Presentation.Mappers.DynamicGroupExpander.addCompoundApplicationTo(ITreeNode node, IEnumerable`1 allParameters)
at PKSim.Presentation.Mappers.DynamicGroupExpander.AddDynamicGroupNodesTo(ITreeNode node, IReadOnlyCollection`1 allParameters)
at PKSim.Presentation.Services.ParameterGroupNodeCreator.<>c__DisplayClass5_0.<mapGroup>b__0(ITreeNode n)
at OSPSuite.Utility.Extensions.EnumerableExtensions.Each[T](IEnumerable`1 list, Action`1 action)
at PKSim.Presentation.Services.ParameterGroupNodeCreator.mapGroup(IGroup group, IReadOnlyCollection`1 allParameters, Func`2 mapper, Boolean addDynamicNode, Boolean removeEmptyGroups)
at PKSim.Presentation.Services.ParameterGroupNodeCreator.MapFrom(IGroup group, IReadOnlyCollection`1 allParameters)
at PKSim.Presentation.Presenters.Parameters.ParameterGroupsPresenter.<>c__DisplayClass43_0.<parameterGroupsFor>b__3(IGroup group)
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at PKSim.Presentation.Presenters.Parameters.ParameterGroupsPresenter.parameterGroupsFor(IEnumerable`1 visibleParameters)
at PKSim.Presentation.Presenters.Parameters.ParameterGroupsPresenter.defaultNodesFor(IEnumerable`1 parameters)
at PKSim.Presentation.Presenters.Parameters.ParameterGroupsPresenter.initSimpleGroupView()
at PKSim.Presentation.Presenters.Parameters.ParameterGroupsPresenter.set_ParameterGroupingMode(ParameterGroupingMode value)
at PKSim.Presentation.Presenters.Parameters.ParameterGroupsPresenter.InitializeWith(IContainer container, IEnumerable`1 allParameters)
at PKSim.Presentation.Presenters.Simulations.IndividualSimulationParametersPresenter.EditSimulation(IndividualSimulation simulation)
at PKSim.Presentation.Presenters.Simulations.EditSimulationPresenter`4.<>c__DisplayClass1_0.<InitializeSubPresentersWith>b__0(TSubPresenter x)
at OSPSuite.Utility.Extensions.EnumerableExtensions.Each[T](IEnumerable`1 list, Action`1 action)
at PKSim.Presentation.Presenters.Simulations.EditSimulationPresenter`4.InitializeSubPresentersWith(TSimulation simulation)
at OSPSuite.Presentation.Presenters.EditAnalyzablePresenter`4.Edit(TAnalyzable analyzable)
at OSPSuite.Presentation.Presenters.SubjectPresenter`3.Edit(Object objectToEdit)
at PKSim.Presentation.Core.SingleStartPresenterTask.StartForSubject[T](T subject)
at PKSim.Presentation.Services.BuildingBlockTask.Edit(IPKSimBuildingBlock buildingBlockToEdit)
at PKSim.Presentation.Presenters.Main.ExplorerPresenter`2.EditBuildingBlock(IPKSimBuildingBlock buildingBlock)
at PKSim.Presentation.Presenters.Main.SimulationExplorerPresenter.NodeDoubleClicked(ITreeNode node)
at OSPSuite.UI.Views.BaseExplorerView.<>c__DisplayClass16_0.<nodeDoubleClick>b__0()
at OSPSuite.Utility.Extensions.ExceptionExtensions.DoWithinExceptionHandler(Object callerObject, Action actionToExecute)
I would also vote for exposing all the parameters. There are certain parameters like 1) kcat interaction factor for transporter proteins 2) Organism > Lumen > Transcellular absorption sink condition etc. which are accessible in MOBI and via codes but not using PK-Sim. However, those parameters would be of interest for PBPK models of certain compounds.
@Sulav1 That's why we need to list all parameters that can be of interest :)
Specifically look at https://github.com/Open-Systems-Pharmacology/PK-Sim/issues/2104#issuecomment-1068038711
@msevestre Probably, such extended list might be possible. Probably @sfrechen can comment.
I actually would vote for exposing ALL parameters. Maybe via a setting in the PK-Sim configuration.
I actually would vote for exposing ALL parameters.
As read only - to be discussed. As editable - never ever.
To show all currently hidden parameters (as read only) - maybe in Hierarchy mode? So as soon as the user switches into this mode - ALL parameters are shown and you see more or less what you see in MoBi now:
Alternatively: define new "Super advanced" mode for this
As editable - never ever.
But that is exactly what is required in special cases. And there is no list of "most common ones"... It cannot be predicted what is needed at some time in some project...
Alternatively: define new "Super advanced" mode for this
Fine for me. Sounds appropriate for the way we work ;-)
Super advanced but editable.
Super advanced but editable.
Definitely editable. Everything else is useless...
We have a bunch of parameters that are marked as read only. The assumptions in the software is that these parameters cannot be changed. We are using this to simplify many of our checks when exporting parameters, checking if a value has changed etc ...this would all have to be checked again and tested. I would therefore also be against allowing read-only params to be edited. This will have unexpected side effects...I can guarantee
Now , the solution is to remove the read-only flag on parameters that could potentially be changed and leave it only on those where changing it would definitely result in model corruption. Or we remove the read-only flag altogether, I don't care anymore at this point. But allowing read-only parameter to be edited in PKSim will result in a lot of pain
Call it "Expert" view.
Well I would agree to find a solution without causing pain, but I agree with Sebastian
But that is exactly what is required in special cases. And there is no list of "most common ones"... It cannot be predicted what is needed at some time in some project...
Also, we can handle MoBi, so we should be fine not to "destroy model integrity" ?
So let's find a convenient path forward for everyone :-)
as I said, the only way is to remove readonly flag. I feel Like I am repeating myself more and more these days. So one last time 1-the solution is to remove the read-only flag on parameters that could potentially be changed and leave it only on those where changing it would definitely result in model corruption OR 2- we remove the read-only flag altogether,
Allowing editing of Read-only parameter will create bugs in the software. Snapshot will not be exported as expected etc.. Clear?
ReadOnlyParameters.xlsx Attached is the list of all parameters which are currently read only in PK-Sim. I have splitted them into 3 groups:
I feel Like I am repeating myself more and more these days.
Ah well, I misunderstood and didn't get that "removing the read-only flag altogether" would already be the painless solution.
@Yuri05 , thanks for this overview. I would agree that changing yellow and blue parameters does not make much sense. I would still vote for removing the flag altogether as I still believe users should be able to judge this themselves.
- Yellow highlighted parameters: should never ever be editable. Changing them will corrupt the model 100%.
Isn't FcRn concentration in container
a parameter that only defines the initial condition based on an analytical solution for a steadystate and could also be allowed to be changed? For the rest I agree, but most people understand not to change formula-based (dependent) parameters.
- Blue highlighted parameters: changing them will either corrupt the model with pretty high probability or does not make any sense
Here I could imagine a use-case where someone would want to evaluate the change in partitioning coefficient value Partition coefficient (intracellular/water)
even if it violates the assumption of equal pls/tissue free concentrations but it would not destroy mass balance.
- Parameters without highlighing: can be potentially set as editable. When changing them - good luck. But at least the model will not be corrupted (in the worst case - just badly parameterized)
Should interstitial|Volume
not be marked yellow in this case? changing this would leat to total organ volume no longer matching the sum of subcompartment volumes?
So overall, we don't know what users might want to try and not allowing this at all makes no sense to me if removing the read-only property can be a setting that has to be explicitly selected by the user and is not a default.
I would still vote for removing the flag altogether as I still believe users should be able to judge this themselves.
I will not give my vote for this option. S. the discussion above.
Isn't FcRn concentration in container a parameter that only defines the initial condition based on an analytical solution for a steadystate and could also be allowed to be changed?
No, it's the current concetration of FcRn in EndogenousIgg.
<Tissue Organ>|<Compartment>|FcRn Concentration
=> EndogenousIgG|<Compartment>|FcRn|Concentration
Here I could imagine a use-case where someone would want to evaluate the change in partitioning coefficient value Partition coefficient (intracellular/water) even if it violates the assumption of equal pls/tissue free concentrations but it would not destroy mass balance.
Agree, would not destroy mass balance. Would remove the connection to K_cell_pls, but that's than in the responsibility of a user.
Should interstitial|Volume not be marked yellow in this case? changing this would leat to total organ volume no longer matching the sum of subcompartment volumes?
Yep, you are right. The table was just a first draft and must be reviewed for sure.
The table was just a first draft and must be reviewed for sure.
Nice to have but not needed if we remove the flag altogether ;-)
Nice to have but not needed if we remove the flag altogether ;-)
In the hierarchy view, show all parameters of the model.