-
Notifications
You must be signed in to change notification settings - Fork 235
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
Refactor convert_input
to Perform tasks via helper function
#3338
base: develop
Are you sure you want to change the base?
Refactor convert_input
to Perform tasks via helper function
#3338
Conversation
Return from convert_input via a helper function Update corresponding test files and add tests to ensure do_conversions isn't affected by current applied changes Signed-off-by: Abhinav Pandey <[email protected]>
Signed-off-by: Abhinav Pandey <[email protected]>
base/db/R/convert_input.R
Outdated
result_sizes <- checked.missing.files$result_sizes; | ||
outlist <- checked.missing.files$outlist; | ||
existing.input <- checked.missing.files$existing.input; | ||
existing.dbfile <- checked.missing.files$existing.dbfile; |
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 their any other way to unwrap these variables in a single context line. For example, inheriting the above list and utilising the list$var
syntax in-place. A lot of variable operations(assignment and reassignment) would consume extra memory in the heap. Should we also implement a Garbage Collection (gc()
) or is it automatically applied in R ?
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.
Rather than try to unwrap them in one line I'd consider whether they need to be assigned separate names at all -- e.g. can all places below that refer to result_sizes
refer to checked.missing.files$result_sizes
instead? If that's what you're suggesting by "utilising the list$var syntax in-place", then yes, I like that approach.
That said these objects are all very small and the runtime/memory overhead from reassignment will be negligible and R's reference-counting garbage collection will take care of the cleanup for us. Happily though, the same optimization gives (what I think is) a substantial improvement in code clarity, so I endorse it on those grounds.
Signed-off-by: Abhinav Pandey <[email protected]>
Signed-off-by: Abhinav Pandey <[email protected]>
Signed-off-by: Abhinav Pandey <[email protected]>
Signed-off-by: Abhinav Pandey <[email protected]>
Signed-off-by: Abhinav Pandey <[email protected]>
Signed-off-by: Abhinav Pandey <[email protected]>
This comment was marked as outdated.
This comment was marked as outdated.
Signed-off-by: Abhinav Pandey <[email protected]>
Signed-off-by: Abhinav Pandey <[email protected]>
|
||
if (nrow(machine) == 0) { | ||
PEcAn.logger::logger.error("machine not found", host$name) | ||
return(NULL) |
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.
Note that returning from get.machine.info could have different behavior than returning from convert.input. I'll need to read to the end to know whether that difference matters, but mentioning it now before I forget
@@ -0,0 +1,19 @@ | |||
test_that("`check_missing_files()` able to return correct missing 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.
Filename should match function name (so use _
not .
)
Come to think of it, same for the files containing the function definitions
existing.input = list(data.frame(file = character(0))), | ||
existing.dbfile = list(data.frame(file = character(0))) | ||
)) | ||
mockery::stub(convert_input, "add.database.entries", list(input.id = 1, dbfile.id = 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.
This feels like a lot of mocks and stubs, but I don't see any that aren't needed. Hopefully as we break up the function further we'll be able to simplify these.
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.
(need to update calls too)
Updating calls as well as tests
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.
Extra checks fail due to some reasons
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.
extras
check fail?
Signed-off-by: Abhinav Pandey <[email protected]>
Co-authored-by: Chris Black <[email protected]>
Co-authored-by: Chris Black <[email protected]>
Description
Following changes were performed :
run.meta.analysis
Motivation and Context
The main motive for these changes is to simplify convert_input by trying to break some of its components and branch it to other functions.
This PR may fix a task within #3307
Review Time Estimate
Types of changes
Checklist: