Closed mantepse closed 1 year ago
Failed example:
r = findstat([(m, m.number_of_nestings()) for n in range(6) for m in PM(2*n)], depth=1); r # optional -- internet
Expected:
0: St000042oMp00116 (quality [100, 100])
1: St000041 (quality [20, 100])
...
Got:
0: St000233 (quality [16, 100])
...
comes from a difference in sorting collections. Every perfect matching is also a set partition, and the interface's automatic detection recognizes m
as a set partition. I suspect that before the change, the collection "Perfect Matchings" came before "Set Partitions" in the list of collections.
In summary, we need a more robust detection here. The code for deducing the collection from an object is as follows:
lambda x: isinstance(x, SetPartition)
for set partitions (line 4607), and
lambda x: isinstance(x, PerfectMatching)
for perfect matchings (line 4581), and the detection is done in FindStatCollections._element_constructor_(self, entry)
(line 4712), where it is checked whether entry
passes one of the tests - and the first test it passes is the chosen collection.
One way to fix it is to sort the collections appropriately.
Another idea was to make the test stricter, as currently for Standard Tableaux
and Semistandard Tableaux
, where we do
lambda x: isinstance(x, SemistandardTableau) and not isinstance(x, StandardTableau))
but this is not so good, because we then have:
sage: findstat("Semistandardtableaux", [(T, len(T)) for n in range(1,5) for T in StandardTableaux(n)])
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
AssertionError: [(1,)] are not elements of Cc0019: Semistandard tableaux
Essentially, we want to first try, whether there is an exact match, and only if there isn't we want to try something similar to coercion.
Branch pushed to git repo; I updated commit sha1. New commits:
1208b95 | adapt doctests to new website |
Commit: 1208b95
I decided to simply sort the collections. A more automatic approach would require to make the corresponding sage class another field in the dict, but I do not want to preclude collections which do not have such a class.
Branch pushed to git repo; I updated commit sha1. New commits:
14b8589 | remove OrderedDict |
OrderedDict is redundant, since we do not compare dictionaries
Branch pushed to git repo; I updated commit sha1. New commits:
54d036f | add forgotten # optional -- internet |
Branch pushed to git repo; I updated commit sha1. New commits:
83aa1b2 | adapt an error message |
Hi Martin, Thanks for these edits. The doctests pass, and the code seems to be working just as expected.
There is one issue that I'd like to raise. It may or may not be related. I executed the command print(list(FindStatMaps()))
, and it took 3 min 7 s. It seems to be something with the way that the information is stored, because I don't get the issue without the print, and because I can still access the individual maps in the list.
I don't know if this is something you want to fix here, and I'm not sure that this is a new issue (but I cannot check because FindStat.org has changed). Otherwise, everything looks good to me.
The reason is that list(FindStatMaps())
only fetches the list of id's, whereas print(list(FindStatMaps()))
fetches all information about all maps.
Maybe this could be improved, but certainly not in this ticket.
It is actually possible that you just had bad luck, it takes just a minute now on my computer. Could you try again?
I checked, all of the time is spent in _fetch_data
, which doesn't do anything but fetching the data from the webpage. It's not a big amount of data, but it seems that findstat cannot serve it faster.
Reviewer: Nadia Lafrenière
That's what I thought. Thanks for looking into this. The code provided for the ticket's purpose works well.
Changed branch from u/mantepse/adapt_findstat_interface_to_new_version_of_findstat_org to 83aa1b2
findstat.org very recently switched to python 3, which slightly affects doctests in the interface. The doctest failures are as follows.
CC: @tscrim
Component: combinatorics
Keywords: FindStat
Author: Martin Rubey
Branch/Commit:
83aa1b2
Reviewer: Nadia Lafrenière
Issue created by migration from https://trac.sagemath.org/ticket/34734