Skip to content
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

Hardness benchmark #440

Open
wants to merge 13 commits into
base: main
Choose a base branch
from
Open

Hardness benchmark #440

wants to merge 13 commits into from

Conversation

ritalyu17
Copy link

@ritalyu17 ritalyu17 commented Dec 3, 2024

Work in progress Integrated Hardness benchmarking task.

To-do:

  • replace the dataset

@CLAassistant
Copy link

CLAassistant commented Dec 3, 2024

CLA assistant check
All committers have signed the CLA.

@ritalyu17 ritalyu17 marked this pull request as ready for review December 16, 2024 08:11
@ritalyu17
Copy link
Author

ritalyu17 commented Dec 16, 2024

The hardness benchmark is ready for review and some feedbacks.

Currently, the bayesian optimization component and multi-task component are set to two Benchmark. Main reason for seperating them is because the arguments in simulate_scenarios are different, specifically initial_data. Maybe there is a way to make the code look nicer?

Thank you!

dfComposition_temp = dfComposition_temp.sort_values(by="load")
# if there are any duplicate values for load, drop them
dfComposition_temp = dfComposition_temp.drop_duplicates(subset="load")
# if there are less than 5 values, continue to the next composition
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Too verbose I think, comments like this can be removed which are very self-explanatory. Overall, just too many comments like this

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quick comment from my side as I also have some stuff regarding comments in my review: I agree with @sgbaird that such individual line comments are not necessary. However, I would appreciate a bit more "high-level" comments like "Filtering composition for which less than 5 hardness values are available", descring what a full block of code is doing.

Note that I only unresolved this comment to make it easier for you to spot this comment here of mine, feel free to immediately un-resolve :)

benchmarks/domains/Hardness.py Outdated Show resolved Hide resolved
@AVHopp
Copy link
Collaborator

AVHopp commented Dec 19, 2024

Just FYI: I will give my review here mid of January :)

Copy link
Collaborator

@AVHopp AVHopp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First of all, thanks for the benchmark :) This is a very first and quick review since I think that minor changes from your end will simplify the review process for me quite significantly. Also, note that the way that there was a PR involving the lookup mechanism (#441 ) This might (or might not) have an influence on your benchmark here.

Hence, I would appreciate if you could rebase your example onto main, verify that this benchmark is compatible with the new lookup and include the first batch of comments. Then I'll be more than happy to give it a full and proper review :)

benchmarks/domains/Hardness.py Show resolved Hide resolved
benchmarks/domains/Hardness.py Show resolved Hide resolved
)


# IMPORT AND PREPROCESS DATA------------------------------------------------------------------------------
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is no need for these kind of headers, ideally remove them or replace them by more descriptive comments.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ideally, you could briefly describe what happens here in the pre-processing: That is, what does this benchmark describe, what is the pre-processing doing and why is it necessary.

Also, general question (also to @AdrianSosic and @Scienfitz ): Wouldn't it be sufficient to just have the pre-processed data as a .csv file here?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The processing steps clarify how the data is derived. The data are from different source, dfMP from Materials Project and dfExp from experiments.

benchmarks/domains/Hardness.py Show resolved Hide resolved
# sort the data by load
dfComposition_temp = dfComposition_temp.sort_values(by="load")
dfComposition_temp = dfComposition_temp.drop_duplicates(subset="load")
if len(dfComposition_temp) < 5: # continue to the next composition
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do you continue in this case?

benchmarks/domains/__init__.py Outdated Show resolved Hide resolved
benchmarks/domains/__init__.py Outdated Show resolved Hide resolved
benchmarks/domains/Hardness.py Show resolved Hide resolved

benchmark_config = ConvergenceExperimentSettings(
batch_size=1,
n_doe_iterations=20,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you elaborate on why you chose these values?

# create a list of dataframes with n samples from dfLookupTable_source to use as initial data
lstInitialData_temp = [dfLookupTable_source.sample(n) for _ in range(settings.n_mc_iterations)]

return simulate_scenarios(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Something is weird here: You only ever call this with the latest value of n, which is 30. Why do you then create several different campaigns and lists?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants