[Nauty] Fw: Filters graphs with diameters greater than 2 and less than 4

lczhangmath lczhangmath at 163.com
Fri Sep 29 15:34:35 AEST 2023




---- Forwarded Message ----
| From | lczhangmath<lczhangmath at 163.com> |
| Date | 09/29/2023 13:08 |
| To | Brendan McKay<brendan.mckay at anu.edu.au> |
| Subject | Re:Re: [Nauty] Filters graphs with diameters greater than 2 and less than 4 |
Dear  Prof. Brendan, 


Thank you for informing me of the overlooked option. Before you informed me, I wrote a Python script. Of course, this script can combine some parameter filtering, a bit like the SageMath call. But I am very looking forward to your handling in C language. 




Python script:


import subprocess
import sys
import networkx  as nx
completed_process = subprocess.run(['geng', '9', '8', '-b', '-c'], stdout=subprocess.PIPE, text=True)
output_lines = completed_process.stdout.splitlines()
count = 0
for line in output_lines:
    line=line.strip()
    #Eliminate the impact of escape characters
    line.replace("\\", "\\\\") 
    G = nx.from_graph6_bytes(line.encode())    
    if nx.diameter(G)<=4 and  nx.radius(G)>=2:
        count=count+1
        sg=nx.to_graph6_bytes(G)
        cleaned_g6string = sg[10:-1].decode()
        print(cleaned_g6string)
print(count,"graphs written to stdout")




Best wishes,
Licheng Zhang.











在 2023-09-28 20:19:36,"Brendan McKay" <Brendan.McKay at anu.edu.au> 写道:
>Hi Licheng,
>
>geng -c 7 | pickg -Z2:4
>
>You can use a range like that for all numerical parameters.  You can
>also use -Z:4 for <=4 and -Z2: for >=2.
>
>I'll answer your earlier question tomorrow.
>
>Brendan.
>
>On 28/9/2023 9:43 pm, lczhangmath wrote:
>> Hello,
>>
>>
>> The second question in my email, titled "matching number and operations between parameters", contains this question, and I recount it in detail here.
>>
>>
>> As with equations, we sometimes need to filter for cases that satisfy a parametric inequality. For example, I
>> would like to get all 7-vertex  graphs with diameter k where k is greater than or equal to 2 and less than or equal to 4.
>>
>>
>> At this time, either I use the external script (e.g. sagemath) or I run the following shell script, but the sctipt always repeats the execution of geng, so the efficiency is not high.
>>
>>
>> for i in {2..4}
>> do
>>      echo "Running geng 7 -c | pickg -V -Z$i"
>>      geng 7 -c | pickg -Z$i >> output.txt
>> done
>>
>>
>>   I don't know where I can change the source code to achieve this.
>>
>>
>>
>>
>> Best regards,
>> Licheng Zhang
>> _______________________________________________
>> Nauty mailing list
>> Nauty at anu.edu.au
>> https://mailman.anu.edu.au/mailman/listinfo/nauty
>
>_______________________________________________
>Nauty mailing list
>Nauty at anu.edu.au
>https://mailman.anu.edu.au/mailman/listinfo/nauty


More information about the Nauty mailing list