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

lczhangmath lczhangmath at 163.com
Fri Sep 29 23:59:02 AEST 2023


I mean the following code (by adding line = line.replace("\\", "\\\\") will aslo still return error.


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??"
line = line.replace("\\", "\\\\")
G = nx.from_graph6_bytes(line.encode())
print(G)




Therefore, once the program geng generates graph6  strings with characters  \ in the pipeline, there is likely to be a problem, because of character escape, I do not know how to deal with them.


Best wishes,
Licheng


Traceback (most recent call last):
  File "<string>", line 4, in <module>
  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 870 in graph6













At 2023-09-29 21:50:46, "lczhangmath" <lczhangmath at 163.com> wrote:
>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://mailman.anu.edu.au/mailman/listinfo/nauty
>>
>>_______________________________________________
>>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
>
>
>_______________________________________________
>Nauty mailing list
>Nauty at anu.edu.au
>https://mailman.anu.edu.au/mailman/listinfo/nauty


More information about the Nauty mailing list