UUPharmacometrics / libsoc

A library for creating, writing and reading PharmML standard output files
GNU Lesser General Public License v3.0
8 stars 2 forks source link

all_population_estimates empty if Bayesian results #4

Open stumoodie opened 6 years ago

stumoodie commented 6 years ago

If a Bayesian estimation results are held by SO then the function all_population_estimates returns an empty data frame.

This doesn't seem correct as the SO does contain Bayesian population estimates. These and estimates in the `OtherMethod' list should be included.

rikardn commented 6 years ago

The purpose of the all_population_estimates method is to return a table of the population estimates across all SOBlocks in an SO. This facilitates for example gathering of results in methods such as bootstrap and cdd. It currently only picks up the MLEs so I guess the name of the method is a bit misguiding. I don't know how to change this method in a consistent way. You might for example have both the MLE and the Bayesian estimates in the SO. Which one should the method then pick?

Could you perhaps explain a bit more in detail what you are using the method for. I could for example add other methods that get other types of population estimates i.e. all_bayesian_population_estimates etc or with an option like all_population_estimates(type) where type could be "MLE", "Bayesian", "Bootstrap" etc.

stumoodie commented 6 years ago

Hmmm. I'm not clear on the usage of the SOBlock. Is it there to prove additional data? Can it have repeated datasets? I looked in the SO spec and there is no mention of its role in the organisation of the SO document.

Coming back to the function - perhaps the name is mis-leading. It's worth noting that there is no function documentation available to help understand it's behaviour. I just presumed it was a convenience method to get all population estimates regardless of type.

What's the best approach? I'm not sure. It would be nice to have a catch all method that gave me all the population estimates in a given SO block regardless of type.

Having multiple blocks does confuse things. What does the function do if there are the same parameters across blocks?

rikardn commented 6 years ago

One SOBlock can be viewed as a totally separated set of results. It could as well have been in another SO-file, but for some applications it is good to have the results from multiple runs in the same file and to easily be able to extract for example parameter estimates over a set of runs at the same time. This is the purpose of all_population_estimates method which is a method on the top level SO class. We could imagine a convenience method, as you propose, on the SOBlock that extracts all population estimates regardless of type. I guess then we would need a new column with the name of the type of the estimate.

About documentation: thought there was documentation, I need to check.

stumoodie commented 6 years ago

Ok. That makes sense.

Perhaps leave any changes to the API just now and see what feedback I get from IOR testing. That will give us an idea about how modellers are trying to access MLE and Bayesian data.