- 
                Notifications
    You must be signed in to change notification settings 
- Fork 271
          Implement the join_inputs_design into the current SDA workflows.
          #3634
        
          New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FYI, this provides an immediate fix, but really you should be passing in the new input_design object too, not just the new ensemble.size variable. That change is needed to get the desired result of sampling jointly once at the start of the SDA and then keeping that design as the SDA iterates.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just checked are was reminded that input_design is now the first argument to write.ensemble.configs and it's not optional, so adding that fix is actually required in this PR, not just a good next step for a future PR.
pecan/modules/uncertainty/R/ensemble.R
Line 228 in ccc5135
| write.ensemble.configs <- function(input_design , ensemble.size, defaults, ensemble.samples, settings, model, | 
I'd recommend that you add a call to modules/uncertainty/R/generate_joint_ensemble_design once in your code early on, that you save the design to restart, and that you read that design during restart rather than generating a new one (i.e., that if you have an "if restart" option, then the input_design is generated in the
"else")
join_inputs_design into the current SDA workflows.
      | TimeseriesPlot = FALSE, | ||
| debug = FALSE, | ||
| pause = FALSE, | ||
| Profiling = FALSE, | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removed unnecessary flags.
| control=list(TimeseriesPlot = FALSE, | ||
| OutlierDetection=FALSE, | ||
| parallel_qsub = TRUE, | ||
| parallel_qsub = FALSE, | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Set the parallel_qsub as FALSE because we can't use both local and remote qsub for the model execution.
| run_parallel = TRUE, | ||
| MCMC.args = NULL), | ||
| MCMC.args = NULL, | ||
| local.execution = TRUE), | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add the local.execution when we just want to run the jobs locally.
        
          
                base/logger/R/logger.R
              
                Outdated
          
        
      | "latin-ascii" | ||
| ) | ||
| if (nchar(long.msg) > 20 && wrap) { | ||
| if (wrap) { | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The hard-coded length in the if control should be removed. The wrap argument should fully define it.
|  | ||
| export(met2model.STICS) | ||
| export(model2netcdf.STICS) | ||
| export(pecan2stics) | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is generated by building the existing pecan files.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The newest commits provide the new debias workflow (which has already been implemented in the current SDA workflows), and the old script has been moved to the inst folder. This is cleaner and easier to understand, which could also benefit any future development of the debiasing algorithm.
| } | ||
| cores <- cores - 1 | ||
| # if we only have one CPU. | ||
| if (cores < 1) cores <- 1 | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Update the parallel registration.
| #' `qsub_parallel`, where we first combine jobs and submit them into the SCC. | ||
| #' @param debias List: R list containing the covariance directory and the start year. | ||
| #' covariance directory should include GeoTIFF files named by year. | ||
| #' start year is numeric input which decide when to start the debiasing feature. | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removed the previous debias workflow and replaced it with the new workflow.
This reverts commit 77bda48.
| } | ||
| PEcAn.logger::logger.info("SMAP SMP Prep Completed!") | ||
| list(SMP_Output = SMAP_Output, time_points = time_points, var = "SoilMoist") | ||
| list(SMP_Output = SMAP_Output, time_points = time_points, var = "SoilMoistFrac") | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Correct the variable name from SoilMoist to  SoilMoistFrac.
|  | ||
|  | ||
|  | ||
| return(list(X = design_matrix)) | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it important that this be a list? All the uses I've seen so far immediately subset the result to only store the X component, so would it make sense to return design_matrix unwrapped in the first place?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is important so that the sobol version works correctly. This ensures that regardless of whether the sobol or non-sobol version is called that the output is a list that includes the design as X. In the sobol version the list includes additional info beyond just X that's required by the function that does the sobol index calculations, but not required to do the runs themselves
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 Can you add this to the function docs, please? I think it'd be enough to list in the @return block the possible items for the Sobol case and mention that in the non-sobol case the list only contains X
Description
Motivation and Context
Review Time Estimate
Types of changes
Checklist: