Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork7.9k
Sketch seed#26050
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:main
Are you sure you want to change the base?
Sketch seed#26050
Uh oh!
There was an error while loading.Please reload this page.
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.
Thank you for opening your first PR into Matplotlib!
If you have not heard from us in a week or so, please leave a new comment below and that should bring it to our attention. Most of our reviewers are volunteers and sometimes things fall through the cracks.
You can also join uson gitter for real-time discussion.
For details on testing, writing docs, and our review process, please seethe developer guide
We strive to be a welcoming and open project. Please follow ourCode of Conduct.
Thank you for your contribution@AryanSheka! Please put some information in the PR summary to tell us about the problem you are solving, with links to the issue being addressed and to the PR this replaces. You will also need torebase your branch to fix a conflict in a file that has changed both here and on our If you need help, feel free to ask questions here. Or you may prefer to ask them in ourincubator gitter room. |
Hi, I'm sorry I'm very new to this so I'm very confused about everything. |
Awesome, thanks for pulling this together! No need to apologize, we'd be happy to help you out w/ whatever you're confused about if you tell us what's tripping you up. We also have a new contributors meeting next tuesday that may be of helphttps://scientific-python.org/calendars/ |
AryanSheka commentedJun 3, 2023 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
I have tried to fix the code as much as possible, but still some tests are failing and I do not know how to fix it. Can someone please |
So the two tests that are failing are the xkcd image comparison tests, which means that this PR is probably messing with the default sketch. You can compare the expected and actual figures visually, see the image comparison test docs for how to find themhttps://matplotlib.org/devdocs/devel/testing.html#writing-an-image-comparison-test |
AryanSheka commentedJun 4, 2023 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
So basically the image comparision test compares the expected image to the one we get from plotting. But if we see the main issue#13479 we are changing the sketch transformation of xkcd to make it give us a randomized pattern result rather than the repeating pattern result like the expected image. |
If I have understood the code comment, the pattern will be different than it was before, but it will still be deterministic because it just adds one to the previous seed value matplotlib/src/path_converters.h Lines 1001 to 1003 in921ebda
So I think it should be enough to replace the baseline image with the result image that you now get? |
AryanSheka commentedJun 5, 2023 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Everytime I try to run the pytest in order to generate the images, I am always hit with the following error: ImportError: cannot import name '_c_internal_utils' from partially initialized module 'matplotlib' (most likely due to a circular import) (/workspaces/matplotlib/lib/matplotlib/init.py) I have tried fixing it but was unsuccessful. |
Did you rebase since you installed Matplotlib? If so I think you will need to install it again as the C code will have to be re-compiled. |
@AryanSheka are you sure what you're showing isn't the diff (expected-actual) image? |
AryanSheka commentedJun 6, 2023 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
I'm sorry my bad, I thought they were the same thing, I have updated the baseline images and am still getting an image_comparision error. It doesnt matter how many times I replace the baseline_images, the new one produced is always slightly (not very noticable) different from the old one and the test fails. Even if you reinstall matplotlib after replacing the images, and then test it , they fail. |
32087b7
to0b03de1
Compare@AryanSheka can you do me a favor and just try to generate the image twice not as part of the test suite and check if they're the same? |
AryanSheka commentedJun 7, 2023 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Yep here are 2 images generated together with the exact same parameters. An online image comparision shows a small difference in the marked area even though the parameters were same. |
Uh oh!
There was an error while loading.Please reload this page.
eudoxos commentedJun 9, 2023
@AryanSheka well done, I think now someone only needs to figure out where to allocate |
f200920
to170fddf
CompareAryanSheka commentedJun 14, 2023 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
I have tried searching for other ways to allocate value to Sketch::previous_seed from the past few days, I could not find any other way to do this other than the way it is done in the code ( ie create path_converters.cpp and allocate value to Sketch::previous_seed in it). At this point I do not know what to do further. |
eudoxos commentedJun 14, 2023
I tried and also did not succeed, it needs to be allocated both in |
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
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.
Some comments on the documentation (and a minor on the code).
AryanSheka commentedJul 19, 2023 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Well I have added tests, I will tell the significance of each of them: This tests whether passing a seed to the Artist.set_sketch actually changes the global rcParam
This tests the same but for xkcd
This tests xkcd with default parameters (seed==0). This indirectly also tests whether passing a seed to xkcd impacts the sketch.
This tests whether setting a seed through artist impacts the sketch (it should)
This tests whether changing the rcParam impacts the sketch (it should).
Overall these tests cover all the changes made in this pr(including seed rolling) and can ensure that future commits do not break the changes the made in this pr. Note: The image comparision tests also test the rolling charecteristic of seed |
The relevant failures here are
|
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
d81bcae
to6a1d20e
CompareThere 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.
So the reason I'm kind of advocating usinghttps://matplotlib.org/devdocs/api/testing_api.html#matplotlib.testing.decorators.check_figures_equal after verifying that the seed isn't 0 is b/c there's not a great here to verify that the image is using the passed in seed.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
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.
Big thing is I'd like to see verification that the non-patch artists participate in the rolling behavior.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
@@ -823,7 +823,8 @@ def draw(self, renderer): | |||
gc.set_foreground(ec_rgba, isRGBA=True) | |||
if self.get_sketch_params() is not None: | |||
scale, length, randomness = self.get_sketch_params() | |||
gc.set_sketch_params(scale/2, length/2, 2*randomness) | |||
seed = self._sketch_seed | |||
gc.set_sketch_params(scale/2, length/2, 2*randomness, seed) |
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.
since this isn't incremented, are you sure that the rolling is correctly implemented?
like xkcd(seed=1234)
ax1.plot([1,2,3])
ax2.plot([1,2,3])
should have lines that look different - and yes please test if you haven't
m_rand(0), | ||
m_seed(seed) |
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.
I'm confused what's going on here
AryanSheka commentedAug 17, 2023 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Apologies for the delay in making the changes. Have been quite busy the past few week and also will be busy for some time in the future (possibly next few weeks), hence I wont be able to work on this pr during that time. In the mean time anyone can feel free to finish this. |
Seed can be manually set for path.sketch by modifying the value of rcParams path.sketch_seed or by passing a seed value to xkcd or Artist.set_sketch . Seed will also have a rolling(auto incrementing) behaviour.Co-Authored-By: Oscar Gustafsson <8114497+oscargus@users.noreply.github.com>Co-Authored-By: eudoxos <1029876+eudoxos@users.noreply.github.com>
story645 commentedAug 18, 2023 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Thanks for all the work so far, I rebased it to make it a little bit easier to review. |
Hey@AryanSheka, just wanted to check about your availability for finishing this? otherwise I'll write finish this out. |
Hey@story645, I don't think so I will be able to contribute to this pr further. Please feel free to move ahead. |
Uh oh!
There was an error while loading.Please reload this page.
PR summary
The pr is related to#25796
closes#13479
rebased from@oscargus
PR checklist