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

keith.briggs at bt.com keith.briggs at bt.com
Sat Sep 30 00:01:01 AEST 2023


This is getting off-topic, but in python it's much safer to use r-strings when you have backslashes in the string, like this: r'\'.

Keith


________________________________
From: lczhangmath <lczhangmath at 163.com>
Sent: Friday, September 29, 2023 2:50:59 pm
To: Briggs,KM,Keith,TUD2 R <keith.briggs at bt.com>
Cc: nauty at anu.edu.au <nauty at anu.edu.au>
Subject: Re:Re: [Nauty] Fw: Filters graphs with diameters greater than 2 and less than 4

Hello, Keith
You are right. May be I need write line = line.replace("\\", "\\\\").  I'm worried about the effect of escape characters, for example,

import networkx  as nx
line="ihChWC@?gE_@?@?A_ at g?@??C??j?@l??E??Ao??\???m??@I??DF??E`O??GM??@?g??S\@o?@g at O??G?w??C?I??D?@o?@g?D???_?M??@??I??D??FK?E_?@Q??G??N??@???CPCOaG\a??"
G = nx.from_graph6_bytes(line.encode())

It gives a error:  File "C:\Users\asus\AppData\Roaming\Python\Python310\site-packages\networkx\readwrite\graph6.py", line 118, in from_graph6_bytes
    raise NetworkXError(
networkx.exception.NetworkXError: Expected 861 bits but got 858 in graph6

So I replace all \\ to \\\\ But it remains wrong.

import networkx  as nx
line="ihChWC@?gE_@?@?A_ at g?@??C??j?@l??E??Ao??\???m??@I??DF??E`O??GM??@?g??S\@o?@g at O??G?w??C?I??D?@o?@g?D???_?M??@??I??D??FK?E_?@Q??G??N??@???CPCOaG\a??"
G = nx.from_graph6_bytes(line.encode())

Because the lower \a in the string is treated as x07 in advance. I can't do anything about it. I know that we can add a prefix r to the string and leave it as it is, without escaping. As follows:

import networkx  as nx
line=r"ihChWC@?gE_@?@?A_ at g?@??C??j?@l??E??Ao??\???m??@I??DF??E`O??GM??@?g??S\@o?@g at O??G?w??C?I??D?@o?@g?D???_?M??@??I??D??FK?E_?@Q??G??N??@???CPCOaG\a??"
G = nx.from_graph6_bytes(line.encode())
print(G)

Output: Graph with 42 nodes and 138 edges

But we have exported the string, it is already escaped (completed_process.stdout.splitlines()), I can't add the prefix r in front, do you have any good ideas? Of course, it seems that there are no annoying characters like \ in graphh6 when there are fewer vertices.

Best wishes,
Licheng







在 2023-09-29 15:26:10,keith.briggs at bt.com 写道:

The line.replace statement won't do anything, since you throw away the result.

Keith

________________________________
From: Nauty <nauty-bounces at anu.edu.au> on behalf of lczhangmath <lczhangmath at 163.com>
Sent: Friday, September 29, 2023 6:37:51 am
To: nauty <nauty at anu.edu.au>
Subject: [Nauty] Fw: Filters graphs with diameters greater than 2 and less than 4

[
---- 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://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmailman.anu.edu.au%2Fmailman%2Flistinfo%2Fnauty&data=05%7C01%7Ckeith.briggs%40bt.com%7C99e07c1b3fac49b7f7b308dbc0ae36a5%7Ca7f356889c004d5eba4129f146377ab0%7C0%7C0%7C638315626714540227%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=l55NjJSdBPmgVq9W2vulGj5HU6rrKFMZFsoExrdElxM%3D&reserved=0<https://mailman.anu.edu.au/mailman/listinfo/nauty>
>
>_______________________________________________
>Nauty mailing list
>Nauty at anu.edu.au
>https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmailman.anu.edu.au%2Fmailman%2Flistinfo%2Fnauty&data=05%7C01%7Ckeith.briggs%40bt.com%7C99e07c1b3fac49b7f7b308dbc0ae36a5%7Ca7f356889c004d5eba4129f146377ab0%7C0%7C0%7C638315626714540227%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=l55NjJSdBPmgVq9W2vulGj5HU6rrKFMZFsoExrdElxM%3D&reserved=0<https://mailman.anu.edu.au/mailman/listinfo/nauty>
_______________________________________________
Nauty mailing list
Nauty at anu.edu.au
https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmailman.anu.edu.au%2Fmailman%2Flistinfo%2Fnauty&data=05%7C01%7Ckeith.briggs%40bt.com%7C99e07c1b3fac49b7f7b308dbc0ae36a5%7Ca7f356889c004d5eba4129f146377ab0%7C0%7C0%7C638315626714540227%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=l55NjJSdBPmgVq9W2vulGj5HU6rrKFMZFsoExrdElxM%3D&reserved=0<https://mailman.anu.edu.au/mailman/listinfo/nauty>




More information about the Nauty mailing list