-
-
Notifications
You must be signed in to change notification settings - Fork 453
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
Basic Block design methods #16534
Comments
comment:2
Hmm, a part of this was the intent of the ticket #16287. However, a linear combination of my own laziness and limited internet and sage access has made it impossible for me to finish the ticket. We should probably close that one in favour of this which mentions one more operation: the union of block designs. |
comment:3
Hey, On #16552 we are talking about reimplementing Vincent |
Dependencies: #16553 |
Branch: u/brett/design |
New commits:
|
Commit: |
comment:8
I rebuilt my old code on top of Vincent's major changes to the file. |
comment:9
I would also like to discuss the "maximal packing" method that Vincent created in his revisions. Where is the appropriate space to have this discussion? |
comment:10
How can I close/delete #7422 |
Changed keywords from none to Block Design, Incidence Structure, Residual, Derived, Complement, Supplement, Point Deletion |
comment:13
By email or on sage-devel, depending on who you want to involve. If you want to discuss it by email I would be glad to be in Cc, by the way Nathann |
comment:14
Hellooooooo Brett, Here is a first-pass review of your branch:
Tell me what you think about the points above. Cheers, Nathann |
comment:15
Replying to @nathanncohen:
OK, I will put my name at the top and remove from code.
This should be no problem
sure, in any particular order?
sure
You mean in the other functions I will see how to have the same functionality without the waste of time and space?
this is much nicer!
way back when I started these methods, the blocks were not sorted and this led to
In design theory when we delete points we keep the blocks that had the point, we just remove the points from them. This is like truncating a group in a TD (you keep the group) or going from projective plane to the affine plane it contains (you keep all the lines, except the one which ends up empty). I don't mind this doing this inplace like the graphs.
induced is not at all the same method (as that throws away blocks which lose any points) you are right it seems that trace does what I am doing for "delete_points" do you agree from my description above?
|
comment:16
In general when should a method return a new incidence structure and when should it modify the current incidence structure in place? Is there a sage philosophy for this? |
comment:17
Hello,
As you see fit. I would say 'respect the alphabetical order' if the existing entries do, otherwise reorder them, otherwise add them to the end of the list, otherwise [...].
Indeed.
Oh I see. Well, this has been solved some time ago and you do not have to sort the blocks anymore. You can, optionally, give the blocks to
Well, doing this inplace raises new problems: you cannot do that in an object of type Cheers, Nathann |
comment:18
I know how to skip lines of output in a doctest and still have the testing recognize the output:
But how can I skip part of a line of output and makes sure the test still recognizes the output? |
comment:19
OK, I figured out how to make what I needed work:
where the ellipsis match the line number that appears between the colons. But I had tried ellipsis in other various ways and they did not work. I cannot find a clear explanation of exactly what ellipsis will match in the output of a doctest. Do any of you know exactly how they work? |
Branch pushed to git repo; I updated commit sha1. New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:29
Hello Brett, It seems that your branch still includes traces of a failed merge. Look for strings like ">>>>" in the design/ files and you will find them. Also, I had to ask you about the two "todo" that you add: we have a Nathann P.S.: Also, something weird happened as every commit appears twice in your branch. You will see that if you click on the 'commits' link that appears right next to the name of your branch at the head of the ticket. |
comment:30
(it is much easier to use git if you have some graphical way to visualize the branches. I use 'tig' which works in command line, but there are many others) |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:32
Replying to @nathanncohen:
I think I got them all this time.
An incidence structure is group divisible iff its dual is resolvable so the is_resolvable method can be used to determine if the IS is group divisible. The question is if we find that a IS is group divisible, what do we want to do. Do we want to store the groups as a part fo the IS?
I am using
should I be doing something differently? |
comment:33
Hello,
You did.
From your question I wonder if we are talking about the same thing. I was simply saying that we have a function In particular, I do not understand how that could be equivalent to finding out whether the dual is resolvable: we have a
No, those commands look okay. It must be something that happened before. Nathann |
comment:34
Replying to @nathanncohen:
could this have been caused by my rebasing to develop? |
comment:35
Replying to @nathanncohen:
It looks to me as if your is_group_divisible_design requires the user to hand the method the groups. I was thinking of building a function to determine if an IS is group divisible without knowing what the groups might be. I was slightly incorrect before. A more accurate statement would be that the dual of a resolvable IS is an group divisible IS with the property that the blocks are transversal. It is important to note that neither may be designs. This fact follows from dualising thew definition of resolvable: A IS is resolvable if there exists a partition of the blocks into classes such that every point is incident with exactly one block in each class. the dual of this statement is there exists a partition of the points into classes (groups) such that every block is incident with exactly one point in each class (group)
|
comment:36
Hello,
It does.
Okay.
Oh, I see. I found it weird that there could exist a way to not solve the actual packing problem Nathann |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:39
Hellooooooooooo again, Some remarks follow... It is a bit long, which is one of the reasons why we try
- if delete:
- int_points = frozenset(int(x) for x in self._points if x not in points)
- else:
- int_points = frozenset(int(x) for x in points)
+ if delete:
+ int_points = frozenset(self._points).difference(points)
+ else:
+ int_points = frozenset(int(x) for x in points) The same pattern appears several times.
Nathann |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:41
How do I link the places I use the [Col2007] reference with its appearance in the reference list? I did not change residual and derived to use trace because I thought they are probably fine as they are and deleting a block to create a new IS only to then call trace on it seemed not particularly efficient I have done everything else. |
comment:42
Helloooooooo Brett,
I added a commit on top of yours at public/16534. Please mind corner-cases in Cheers, Nathann |
includes complement, supplement, block derivation, block residue and union of block designs
Depends on #16553
CC: @KPanComputes @videlec @sagetrac-melissah @sagetrac-danziger
Component: combinatorial designs
Keywords: Block Design, Incidence Structure, Residual, Derived, Complement, Supplement, Union
Author: Brett Stevens
Branch/Commit: u/brett/design @
910b437
Issue created by migration from https://trac.sagemath.org/ticket/16534
The text was updated successfully, but these errors were encountered: