It is very true that I am not familiar with geng, nor sagemath. I just 
installed on my machine a few days ago.

The reason I want to modify geng.c is I don't have a way to partition the 
output of "geng 12". I have finished up to "geng 11" so far, mostly with 
manual work. I know how many "geng 12" generates.

With "geng 12", the output, if written to a file, is too large for my 
machine to handle. I can write to about 300G, not anything like 1500G. 

That is why I am looking at res/mod, but it seems I can't easily control 
how large the output will be (or I just don't know how).

So if I can modify "geng" program, I can control the output range. Any 
other suggestion?



On Friday, March 22, 2019 at 12:28:32 AM UTC-7, nvcleemp wrote:
>
> Why would you want to modify geng.c? From your previous comments I get the 
> impression that you are not familiar with the algorithm that geng uses. 
> You're not even familiar with the way geng encodes graphs. In that case it 
> is almost guaranteed that you will break something if you modify it.
>
> So again, why would you want to modify it? If it is to obtain an even 
> split, then you can only do this by generating all graphs and then 
> splitting the output. The commands to do this without translating the 
> intermediate graphs to the Sage data structure have been shown in the other 
> thread. For anything larger than 12 this will still be too slow since there 
> are just so many graphs.
>
> The builtin splitting in geng works by generating the graphs and at a 
> certain depth in the generation tree counting the branches and only 
> proceeding if the number modulo mod is equal to res. This way not 
> everything is generated and if this is done at a suitable depth then the 
> splitting will be fairly equal.
>
> Cheers
> Nico
>
> Op vr 22 mrt. 2019 om 06:06 schreef Ai Bo <boai...@gmail.com <javascript:>
> >:
>
>> Sorry for not being clear.
>> I meant I used geng —help.
>> Apparently, the equal divide doesn’t help in my example case.  
>> Where is this geng.c file? If I modify geng.c, how should I build geng?
>>
>> On Thu, Mar 21, 2019 at 9:58 PM John H Palmieri <jhpalm...@gmail.com 
>> <javascript:>> wrote:
>>
>>>
>>>
>>> On Thursday, March 21, 2019 at 9:38:03 PM UTC-7, Ai Bo wrote:
>>>>
>>>> Saw this in the document:
>>>>  res/mod : only generate subset res out of subsets 0..mod-1
>>>>
>>>
>>> It would help if you gave some context for this. I'm guessing that most 
>>> Sage users won't know what "geng" is. I certainly didn't. I found by 
>>> searching the source code that you found this help message in the method 
>>> "nauty_geng" in graph_generators.py: you should have said this at the start 
>>> instead of just "saw this in the document". This makes it look like the 
>>> program "geng" comes from nauty. Now look at the nauty source code (there 
>>> is a tar file in the "upstream" directory, if you have a source code 
>>> version of Sage, also available at 
>>> http://files.sagemath.org/spkg/upstream/nauty/index.html). The nauty 
>>> manual says
>>>
>>> res/mod : only generate subset res out of subsets 0..mod-1
>>>
>>> and
>>>
>>> See program text for much more information.
>>>
>>> The file geng.c says
>>>  
>>>             mod, res = a way to restrict the output to a subset.
>>>                         All the graphs in G(n,mine..maxe) are divided 
>>> into
>>>                         disjoint classes C(0,mod),C(1,mod),...,C(mod-1,
>>> mod),
>>>                         of very approximately equal size.
>>>                         Only the class C(res,mod) is written.
>>>
>>>                         If the -x or -X switch is used, they must have 
>>> the 
>>>                         same value for different values of res; 
>>> otherwise 
>>>                         the partitioning may not be valid.  In this case
>>>                         (-x,-X with constant value), the usual 
>>> relationships 
>>>                         between modulo classes are obeyed; for example 
>>>                         C(3,4) = C(3,8) union C(7,8).  This is not true
>>>                         if 3/8 and 7/8 are done with -x or -X values
>>>                         different from those used for 3/4.
>>>
>>>  
>>>
>>>>
>>>> How is the output divided?
>>>>
>>>> I tried with : ../sage-8.6/local/bin/geng 6 -C 0/7
>>>> and then I iterated from 0/7, 1/7, 2/7, 3/7....
>>>> Why the output is 27, 21, 7, 1, 0, 0, ...
>>>>
>>>> How is the subset generated?
>>>>
>>>> Thank you.
>>>>
>>> -- 
>>> You received this message because you are subscribed to a topic in the 
>>> Google Groups "sage-devel" group.
>>> To unsubscribe from this topic, visit 
>>> https://groups.google.com/d/topic/sage-devel/FJZoODSZK3Q/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to 
>>> sage-devel+...@googlegroups.com <javascript:>.
>>> To post to this group, send email to sage-...@googlegroups.com 
>>> <javascript:>.
>>> Visit this group at https://groups.google.com/group/sage-devel.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "sage-devel" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to sage-devel+...@googlegroups.com <javascript:>.
>> To post to this group, send email to sage-...@googlegroups.com 
>> <javascript:>.
>> Visit this group at https://groups.google.com/group/sage-devel.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to