From 81bf5b2b0a0789f8e430439a4a8971fff0251bae Mon Sep 17 00:00:00 2001 From: achluma Date: Wed, 4 Oct 2023 01:14:05 +0100 Subject: [PATCH 1/5] Added nx_version file --- 2023-round-2/achluma/nx_version.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 2023-round-2/achluma/nx_version.txt diff --git a/2023-round-2/achluma/nx_version.txt b/2023-round-2/achluma/nx_version.txt new file mode 100644 index 00000000..06a44579 --- /dev/null +++ b/2023-round-2/achluma/nx_version.txt @@ -0,0 +1 @@ +3.1 \ No newline at end of file From e4cb985470e28fea5091456ef2cb927db518691e Mon Sep 17 00:00:00 2001 From: achluma Date: Wed, 4 Oct 2023 03:32:40 +0100 Subject: [PATCH 2/5] Added test output --- 2023-round-2/achluma/nx_dev_test_output.txt | 406 ++++++++++++++++++++ 1 file changed, 406 insertions(+) create mode 100644 2023-round-2/achluma/nx_dev_test_output.txt diff --git a/2023-round-2/achluma/nx_dev_test_output.txt b/2023-round-2/achluma/nx_dev_test_output.txt new file mode 100644 index 00000000..60f10d90 --- /dev/null +++ b/2023-round-2/achluma/nx_dev_test_output.txt @@ -0,0 +1,406 @@ +============================= test session starts ============================= +platform win32 -- Python 3.11.6, pytest-7.4.2, pluggy-1.3.0 +rootdir: C:\Users\achluma\Documents\Network2\networkx +plugins: cov-4.1.0 +collected 5220 items / 3 skipped + +networkx\algorithms\approximation\tests\test_approx_clust_coeff.py ..... [ 0%] +. [ 0%] +networkx\algorithms\approximation\tests\test_clique.py ........ [ 0%] +networkx\algorithms\approximation\tests\test_connectivity.py ........... [ 0%] +....... [ 0%] +networkx\algorithms\approximation\tests\test_distance_measures.py ...... [ 0%] +.. [ 0%] +networkx\algorithms\approximation\tests\test_dominating_set.py .... [ 0%] +networkx\algorithms\approximation\tests\test_kcomponents.py ............ [ 1%] +.... [ 1%] +networkx\algorithms\approximation\tests\test_matching.py . [ 1%] +networkx\algorithms\approximation\tests\test_maxcut.py ..... [ 1%] +networkx\algorithms\approximation\tests\test_ramsey.py . [ 1%] +networkx\algorithms\approximation\tests\test_steinertree.py .... [ 1%] +networkx\algorithms\approximation\tests\test_traveling_salesman.py ..... [ 1%] +....................................s. [ 2%] +networkx\algorithms\approximation\tests\test_treewidth.py .............. [ 2%] + [ 2%] +networkx\algorithms\approximation\tests\test_vertex_cover.py .... [ 2%] +networkx\algorithms\assortativity\tests\test_connectivity.py .......... [ 2%] +networkx\algorithms\assortativity\tests\test_correlation.py ............ [ 2%] +......... [ 3%] +networkx\algorithms\assortativity\tests\test_mixing.py ................. [ 3%] +.. [ 3%] +networkx\algorithms\assortativity\tests\test_neighbor_degree.py ...... [ 3%] +networkx\algorithms\assortativity\tests\test_pairs.py ........... [ 3%] +networkx\algorithms\bipartite\tests\test_basic.py ............... [ 4%] +networkx\algorithms\bipartite\tests\test_centrality.py ....... [ 4%] +networkx\algorithms\bipartite\tests\test_cluster.py ......... [ 4%] +networkx\algorithms\bipartite\tests\test_covering.py .... [ 4%] +networkx\algorithms\bipartite\tests\test_edgelist.py ............... [ 4%] +networkx\algorithms\bipartite\tests\test_generators.py .......... [ 4%] +networkx\algorithms\bipartite\tests\test_matching.py ................... [ 5%] +. [ 5%] +networkx\algorithms\bipartite\tests\test_matrix.py ........... [ 5%] +networkx\algorithms\bipartite\tests\test_project.py .................. [ 5%] +networkx\algorithms\bipartite\tests\test_redundancy.py ... [ 5%] +networkx\algorithms\bipartite\tests\test_spectral_bipartivity.py ... [ 6%] +networkx\algorithms\centrality\tests\test_betweenness_centrality.py .... [ 6%] +..................................... [ 6%] +networkx\algorithms\centrality\tests\test_betweenness_centrality_subset.py . [ 6%] +..................... [ 7%] +networkx\algorithms\centrality\tests\test_closeness_centrality.py ...... [ 7%] +....... [ 7%] +networkx\algorithms\centrality\tests\test_current_flow_betweenness_centrality.py . [ 7%] +................... [ 7%] +networkx\algorithms\centrality\tests\test_current_flow_betweenness_centrality_subset.py . [ 7%] +........ [ 8%] +networkx\algorithms\centrality\tests\test_current_flow_closeness.py .... [ 8%] + [ 8%] +networkx\algorithms\centrality\tests\test_degree_centrality.py ....... [ 8%] +networkx\algorithms\centrality\tests\test_dispersion.py .... [ 8%] +networkx\algorithms\centrality\tests\test_eigenvector_centrality.py .... [ 8%] +......... [ 8%] +networkx\algorithms\centrality\tests\test_group.py ..................... [ 8%] +... [ 9%] +networkx\algorithms\centrality\tests\test_harmonic_centrality.py ....... [ 9%] +...... [ 9%] +networkx\algorithms\centrality\tests\test_katz_centrality.py ........... [ 9%] +............... [ 9%] +networkx\algorithms\centrality\tests\test_laplacian_centrality.py ...... [ 9%] +. [ 9%] +networkx\algorithms\centrality\tests\test_load_centrality.py ........... [ 10%] +....... [ 10%] +networkx\algorithms\centrality\tests\test_percolation_centrality.py .... [ 10%] + [ 10%] +networkx\algorithms\centrality\tests\test_reaching.py ............... [ 10%] +networkx\algorithms\centrality\tests\test_second_order_centrality.py ... [ 10%] +..... [ 10%] +networkx\algorithms\centrality\tests\test_subgraph.py ..... [ 10%] +networkx\algorithms\centrality\tests\test_trophic.py .......... [ 11%] +networkx\algorithms\centrality\tests\test_voterank.py ...... [ 11%] +networkx\algorithms\coloring\tests\test_coloring.py ................. [ 11%] +networkx\algorithms\community\tests\test_asyn_fluid.py ..... [ 11%] +networkx\algorithms\community\tests\test_centrality.py ..... [ 11%] +networkx\algorithms\community\tests\test_kclique.py ........ [ 11%] +networkx\algorithms\community\tests\test_kernighan_lin.py ........ [ 11%] +networkx\algorithms\community\tests\test_label_propagation.py .......... [ 12%] +............. [ 12%] +networkx\algorithms\community\tests\test_louvain.py ........... [ 12%] +networkx\algorithms\community\tests\test_lukes.py .... [ 12%] +networkx\algorithms\community\tests\test_modularity_max.py ............. [ 12%] +..... [ 13%] +networkx\algorithms\community\tests\test_quality.py ....... [ 13%] +networkx\algorithms\community\tests\test_utils.py .... [ 13%] +networkx\algorithms\components\tests\test_attracting.py .... [ 13%] +networkx\algorithms\components\tests\test_biconnected.py ............. [ 13%] +networkx\algorithms\components\tests\test_connected.py ......... [ 13%] +networkx\algorithms\components\tests\test_semiconnected.py ........ [ 13%] +networkx\algorithms\components\tests\test_strongly_connected.py ........ [ 14%] +...... [ 14%] +networkx\algorithms\components\tests\test_weakly_connected.py ...... [ 14%] +networkx\algorithms\connectivity\tests\test_connectivity.py ............ [ 14%] +...................... [ 14%] +networkx\algorithms\connectivity\tests\test_cuts.py .................... [ 15%] +. [ 15%] +networkx\algorithms\connectivity\tests\test_disjoint_paths.py .......... [ 15%] +........ [ 15%] +networkx\algorithms\connectivity\tests\test_edge_augmentation.py ....... [ 15%] +............. [ 16%] +networkx\algorithms\connectivity\tests\test_edge_kcomponents.py ........ [ 16%] +............. [ 16%] +networkx\algorithms\connectivity\tests\test_kcomponents.py .sss...... [ 16%] +networkx\algorithms\connectivity\tests\test_kcutsets.py s........s..... [ 16%] +networkx\algorithms\connectivity\tests\test_stoer_wagner.py ..... [ 17%] +networkx\algorithms\flow\tests\test_gomory_hu.py ....s.... [ 17%] +networkx\algorithms\flow\tests\test_maxflow.py ......................... [ 17%] +.. [ 17%] +networkx\algorithms\flow\tests\test_maxflow_large_graph.py ...s.. [ 17%] +networkx\algorithms\flow\tests\test_mincost.py ................... [ 18%] +networkx\algorithms\flow\tests\test_networksimplex.py .................. [ 18%] +.... [ 18%] +networkx\algorithms\isomorphism\tests\test_ismags.py .......... [ 18%] +networkx\algorithms\isomorphism\tests\test_isomorphism.py .... [ 18%] +networkx\algorithms\isomorphism\tests\test_isomorphvf2.py .............. [ 19%] +.. [ 19%] +networkx\algorithms\isomorphism\tests\test_match_helpers.py .. [ 19%] +networkx\algorithms\isomorphism\tests\test_temporalisomorphvf2.py ...... [ 19%] +...... [ 19%] +networkx\algorithms\isomorphism\tests\test_tree_isomorphism.py ..... [ 19%] +networkx\algorithms\isomorphism\tests\test_vf2pp.py .................... [ 19%] +........................ [ 20%] +networkx\algorithms\isomorphism\tests\test_vf2pp_helpers.py ............ [ 20%] +................................. [ 21%] +networkx\algorithms\isomorphism\tests\test_vf2userfunc.py .............. [ 21%] +.............. [ 21%] +networkx\algorithms\link_analysis\tests\test_hits.py ...... [ 21%] +networkx\algorithms\link_analysis\tests\test_pagerank.py ............... [ 22%] +..................................... [ 22%] +networkx\algorithms\minors\tests\test_contraction.py ................... [ 23%] +............ [ 23%] +networkx\algorithms\operators\tests\test_all.py ................... [ 23%] +networkx\algorithms\operators\tests\test_binary.py .................... [ 24%] +networkx\algorithms\operators\tests\test_product.py .................... [ 24%] +........ [ 24%] +networkx\algorithms\operators\tests\test_unary.py ... [ 24%] +networkx\algorithms\shortest_paths\tests\test_astar.py ................ [ 25%] +networkx\algorithms\shortest_paths\tests\test_dense.py ........ [ 25%] +networkx\algorithms\shortest_paths\tests\test_dense_numpy.py ....... [ 25%] +networkx\algorithms\shortest_paths\tests\test_generic.py ............... [ 25%] +........... [ 25%] +networkx\algorithms\shortest_paths\tests\test_unweighted.py ............ [ 26%] +..... [ 26%] +networkx\algorithms\shortest_paths\tests\test_weighted.py .............. [ 26%] +.......................................... [ 27%] +networkx\algorithms\tests\test_asteroidal.py . [ 27%] +networkx\algorithms\tests\test_boundary.py ............. [ 27%] +networkx\algorithms\tests\test_bridges.py .......... [ 27%] +networkx\algorithms\tests\test_chains.py ..... [ 27%] +networkx\algorithms\tests\test_chordal.py .......... [ 28%] +networkx\algorithms\tests\test_clique.py ................ [ 28%] +networkx\algorithms\tests\test_cluster.py .............................. [ 29%] +............. [ 29%] +networkx\algorithms\tests\test_communicability.py .. [ 29%] +networkx\algorithms\tests\test_core.py ............... [ 29%] +networkx\algorithms\tests\test_covering.py ........... [ 29%] +networkx\algorithms\tests\test_cuts.py ................. [ 30%] +networkx\algorithms\tests\test_cycles.py ............................... [ 30%] +.............................. [ 31%] +networkx\algorithms\tests\test_d_separation.py ............... [ 31%] +networkx\algorithms\tests\test_dag.py .................................. [ 32%] +.......................... [ 32%] +networkx\algorithms\tests\test_distance_measures.py .................... [ 33%] +................................................... [ 34%] +networkx\algorithms\tests\test_distance_regular.py ....... [ 34%] +networkx\algorithms\tests\test_dominance.py ...................... [ 34%] +networkx\algorithms\tests\test_dominating.py ..... [ 34%] +networkx\algorithms\tests\test_efficiency.py ....... [ 34%] +networkx\algorithms\tests\test_euler.py ................................ [ 35%] + [ 35%] +networkx\algorithms\tests\test_graph_hashing.py ........................ [ 35%] + [ 35%] +networkx\algorithms\tests\test_graphical.py ............. [ 36%] +networkx\algorithms\tests\test_hierarchy.py ..... [ 36%] +networkx\algorithms\tests\test_hybrid.py .. [ 36%] +networkx\algorithms\tests\test_isolate.py ... [ 36%] +networkx\algorithms\tests\test_link_prediction.py ...................... [ 36%] +................................................... [ 37%] +networkx\algorithms\tests\test_lowest_common_ancestors.py .............. [ 38%] +......................................... [ 38%] +networkx\algorithms\tests\test_matching.py ............................. [ 39%] +................... [ 39%] +networkx\algorithms\tests\test_max_weight_clique.py ..... [ 39%] +networkx\algorithms\tests\test_mis.py ....... [ 39%] +networkx\algorithms\tests\test_moral.py . [ 40%] +networkx\algorithms\tests\test_node_classification.py ............... [ 40%] +networkx\algorithms\tests\test_non_randomness.py ...... [ 40%] +networkx\algorithms\tests\test_planar_drawing.py ............ [ 40%] +networkx\algorithms\tests\test_planarity.py ............................ [ 41%] +.. [ 41%] +networkx\algorithms\tests\test_reciprocity.py ..... [ 41%] +networkx\algorithms\tests\test_regular.py ............. [ 41%] +networkx\algorithms\tests\test_richclub.py ......... [ 41%] +networkx\algorithms\tests\test_similarity.py ........................... [ 42%] +.................. [ 42%] +networkx\algorithms\tests\test_simple_paths.py ......................... [ 43%] +................................................. [ 44%] +networkx\algorithms\tests\test_smallworld.py ...... [ 44%] +networkx\algorithms\tests\test_smetric.py .. [ 44%] +networkx\algorithms\tests\test_sparsifiers.py ....... [ 44%] +networkx\algorithms\tests\test_structuralholes.py ............. [ 44%] +networkx\algorithms\tests\test_summarization.py ................. [ 44%] +networkx\algorithms\tests\test_swap.py ..................... [ 45%] +networkx\algorithms\tests\test_threshold.py .................. [ 45%] +networkx\algorithms\tests\test_time_dependent.py ............ [ 45%] +networkx\algorithms\tests\test_tournament.py ..................... [ 46%] +networkx\algorithms\tests\test_triads.py ................ [ 46%] +networkx\algorithms\tests\test_vitality.py ...... [ 46%] +networkx\algorithms\tests\test_voronoi.py .......... [ 46%] +networkx\algorithms\tests\test_walks.py ...... [ 46%] +networkx\algorithms\tests\test_wiener.py .... [ 47%] +networkx\algorithms\traversal\tests\test_beamsearch.py ... [ 47%] +networkx\algorithms\traversal\tests\test_bfs.py ................... [ 47%] +networkx\algorithms\traversal\tests\test_dfs.py .................. [ 47%] +networkx\algorithms\traversal\tests\test_edgebfs.py ................ [ 48%] +networkx\algorithms\traversal\tests\test_edgedfs.py ............... [ 48%] +networkx\algorithms\tree\tests\test_branchings.py ...................... [ 48%] +.......... [ 49%] +networkx\algorithms\tree\tests\test_coding.py .............. [ 49%] +networkx\algorithms\tree\tests\test_decomposition.py ..... [ 49%] +networkx\algorithms\tree\tests\test_mst.py ............................. [ 49%] +........................s.s [ 50%] +networkx\algorithms\tree\tests\test_operations.py ... [ 50%] +networkx\algorithms\tree\tests\test_recognition.py ..................... [ 50%] +.... [ 50%] +networkx\classes\tests\test_backends.py .. [ 51%] +networkx\classes\tests\test_coreviews.py ............................... [ 51%] +......................... [ 52%] +networkx\classes\tests\test_digraph.py ................................. [ 52%] +................................................... [ 53%] +networkx\classes\tests\test_digraph_historical.py ...................... [ 54%] +.................... [ 54%] +networkx\classes\tests\test_filters.py ........... [ 54%] +networkx\classes\tests\test_function.py ................................ [ 55%] +....................................... [ 56%] +networkx\classes\tests\test_graph.py ................................... [ 56%] +............................. [ 57%] +networkx\classes\tests\test_graph_historical.py ........................ [ 57%] +.......... [ 57%] +networkx\classes\tests\test_graphviews.py .............................. [ 58%] +..... [ 58%] +networkx\classes\tests\test_multidigraph.py ............................ [ 59%] +........................................................................ [ 60%] +........................................................................ [ 61%] +............... [ 62%] +networkx\classes\tests\test_multigraph.py .............................. [ 62%] +........................................................................ [ 64%] +................................................... [ 65%] +networkx\classes\tests\test_reportviews.py ............................. [ 65%] +........................................................................ [ 67%] +........................................................................ [ 68%] +.................................................................... [ 69%] +networkx\classes\tests\test_special.py ................................. [ 70%] +........................................................................ [ 71%] +........................................................................ [ 73%] +........................................................................ [ 74%] +........................................................................ [ 75%] +........................... [ 76%] +networkx\classes\tests\test_subgraphviews.py ........................... [ 76%] +..... [ 77%] +networkx\drawing\tests\test_latex.py ...... [ 77%] +networkx\drawing\tests\test_layout.py .............................. [ 77%] +networkx\drawing\tests\test_pylab.py ................................... [ 78%] +.............................................................. [ 79%] +networkx\generators\tests\test_atlas.py ........ [ 79%] +networkx\generators\tests\test_classic.py .............................. [ 80%] +....... [ 80%] +networkx\generators\tests\test_cographs.py . [ 80%] +networkx\generators\tests\test_community.py ...................... [ 80%] +networkx\generators\tests\test_degree_seq.py ................... [ 81%] +networkx\generators\tests\test_directed.py .............. [ 81%] +networkx\generators\tests\test_duplication.py ....... [ 81%] +networkx\generators\tests\test_ego.py .. [ 81%] +networkx\generators\tests\test_expanders.py .......................... [ 82%] +networkx\generators\tests\test_geometric.py ............................ [ 82%] +.. [ 82%] +networkx\generators\tests\test_harary_graph.py .. [ 82%] +networkx\generators\tests\test_internet_as_graphs.py ..... [ 82%] +networkx\generators\tests\test_intersection.py .... [ 82%] +networkx\generators\tests\test_interval_graph.py ........ [ 83%] +networkx\generators\tests\test_joint_degree_seq.py .... [ 83%] +networkx\generators\tests\test_lattice.py ....................... [ 83%] +networkx\generators\tests\test_line.py ................................. [ 84%] +.. [ 84%] +networkx\generators\tests\test_mycielski.py ... [ 84%] +networkx\generators\tests\test_nonisomorphic_trees.py ..... [ 84%] +networkx\generators\tests\test_random_clustered.py .... [ 84%] +networkx\generators\tests\test_random_graphs.py ........................ [ 85%] +............................................. [ 85%] +networkx\generators\tests\test_small.py ................................ [ 86%] +...... [ 86%] +networkx\generators\tests\test_spectral_graph_forge.py . [ 86%] +networkx\generators\tests\test_stochastic.py ....... [ 86%] +networkx\generators\tests\test_sudoku.py ...... [ 86%] +networkx\generators\tests\test_time_series.py ....... [ 87%] +networkx\generators\tests\test_trees.py .................. [ 87%] +networkx\generators\tests\test_triads.py .. [ 87%] +networkx\linalg\tests\test_algebraic_connectivity.py ................... [ 87%] +..................................................................... [ 89%] +networkx\linalg\tests\test_attrmatrix.py ..... [ 89%] +networkx\linalg\tests\test_bethehessian.py . [ 89%] +networkx\linalg\tests\test_graphmatrix.py .... [ 89%] +networkx\linalg\tests\test_laplacian.py .... [ 89%] +networkx\linalg\tests\test_modularity.py ... [ 89%] +networkx\linalg\tests\test_spectrum.py ..... [ 89%] +networkx\readwrite\json_graph\tests\test_adjacency.py ........ [ 89%] +networkx\readwrite\json_graph\tests\test_cytoscape.py ....... [ 89%] +networkx\readwrite\json_graph\tests\test_node_link.py ........... [ 90%] +networkx\readwrite\json_graph\tests\test_tree.py ... [ 90%] +networkx\readwrite\tests\test_adjlist.py .................. [ 90%] +networkx\readwrite\tests\test_edgelist.py .......................... [ 90%] +networkx\readwrite\tests\test_gexf.py ..................... [ 91%] +networkx\readwrite\tests\test_gml.py ......................... [ 91%] +networkx\readwrite\tests\test_graph6.py ............................... [ 92%] +networkx\readwrite\tests\test_graphml.py ..................sssssssssssss [ 92%] +ssssssssssssssssssssssssssss [ 93%] +networkx\readwrite\tests\test_leda.py .. [ 93%] +networkx\readwrite\tests\test_p2g.py ... [ 93%] +networkx\readwrite\tests\test_pajek.py ........ [ 93%] +networkx\readwrite\tests\test_sparse6.py ................ [ 94%] +networkx\readwrite\tests\test_text.py ................................. [ 94%] +networkx\tests\test_all_random_functions.py s [ 94%] +networkx\tests\test_convert.py ............... [ 95%] +networkx\tests\test_convert_numpy.py ................................... [ 95%] +............... [ 95%] +networkx\tests\test_convert_pandas.py ...................... [ 96%] +networkx\tests\test_convert_scipy.py .................... [ 96%] +networkx\tests\test_exceptions.py ....... [ 96%] +networkx\tests\test_import.py .. [ 96%] +networkx\tests\test_lazy_imports.py .... [ 97%] +networkx\tests\test_relabel.py .............................. [ 97%] +networkx\utils\tests\test__init.py . [ 97%] +networkx\utils\tests\test_decorators.py ................................ [ 98%] +... [ 98%] +networkx\utils\tests\test_heaps.py .. [ 98%] +networkx\utils\tests\test_mapped_queue.py .............................. [ 98%] +................ [ 99%] +networkx\utils\tests\test_misc.py ............................... [ 99%] +networkx\utils\tests\test_random_sequence.py .... [ 99%] +networkx\utils\tests\test_rcm.py .. [ 99%] +networkx\utils\tests\test_unionfind.py ..... [100%] + +============================== warnings summary =============================== + compilation 12:4 + compilation 12:4: DeprecationWarning: + + random_tree is deprecated and will be removed in NX v3.4 + Use random_labeled_tree instead. + +networkx\drawing\tests\test_pylab.py:422 + C:\Users\achluma\Documents\Network2\networkx\networkx\drawing\tests\test_pylab.py:422: PytestUnknownMarkWarning: Unknown pytest.mark.mpl_image_compare - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html + @pytest.mark.mpl_image_compare + +networkx/algorithms/tree/tests/test_coding.py::TestNestedTuple::test_decoding +networkx/algorithms/tree/tests/test_coding.py::TestNestedTuple::test_decoding +networkx/algorithms/tree/tests/test_coding.py::TestNestedTuple::test_decoding +networkx/algorithms/tree/tests/test_coding.py::TestNestedTuple::test_sensible_relabeling +networkx/algorithms/tree/tests/test_coding.py::TestNestedTuple::test_sensible_relabeling +networkx/algorithms/tree/tests/test_coding.py::TestNestedTuple::test_sensible_relabeling + C:\Users\achluma\Documents\Network2\networkx\networkx\algorithms\tree\coding.py:198: DeprecationWarning: The function `join` is deprecated and is renamed `join_trees`. + The ``join`` function itself will be removed in v3.4 + return nx.tree.join([(_make_tree(child), 0) for child in sequence]) + +networkx/drawing/tests/test_pylab.py::test_house_with_colors + C:\Users\achluma\Documents\Network2\networkx-dev\Lib\site-packages\_pytest\python.py:198: PytestReturnNotNoneWarning: Expected None, but networkx/drawing/tests/test_pylab.py::test_house_with_colors returned
, which will be an error in a future version of pytest. Did you mean to use `assert` instead of `return`? + warnings.warn( + +networkx/linalg/tests/test_algebraic_connectivity.py::TestSpectralOrdering::test_cycle[lobpcg-False-expected_order0] + C:\Users\achluma\Documents\Network2\networkx\networkx\linalg\algebraicconnectivity.py:302: UserWarning: Exited at iteration 10 with accuracies + [0.02743716] + not reaching the requested tolerance 1e-08. + Use iteration 11 instead with accuracy + 0.02743715868521578. + + sigma, X = sp.sparse.linalg.lobpcg( + +networkx/linalg/tests/test_algebraic_connectivity.py::TestSpectralOrdering::test_cycle[lobpcg-False-expected_order0] + C:\Users\achluma\Documents\Network2\networkx\networkx\linalg\algebraicconnectivity.py:302: UserWarning: Exited postprocessing with accuracies + [0.02743716] + not reaching the requested tolerance 1e-08. + sigma, X = sp.sparse.linalg.lobpcg( + +networkx/linalg/tests/test_algebraic_connectivity.py::TestSpectralOrdering::test_cycle[lobpcg-True-expected_order1] + C:\Users\achluma\Documents\Network2\networkx\networkx\linalg\algebraicconnectivity.py:302: UserWarning: Exited at iteration 10 with accuracies + [0.00056623] + not reaching the requested tolerance 1e-08. + Use iteration 11 instead with accuracy + 0.0005662307712154139. + + sigma, X = sp.sparse.linalg.lobpcg( + +networkx/linalg/tests/test_algebraic_connectivity.py::TestSpectralOrdering::test_cycle[lobpcg-True-expected_order1] + C:\Users\achluma\Documents\Network2\networkx\networkx\linalg\algebraicconnectivity.py:302: UserWarning: Exited postprocessing with accuracies + [0.00056623] + not reaching the requested tolerance 1e-08. + sigma, X = sp.sparse.linalg.lobpcg( + +-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html +========== 5168 passed, 55 skipped, 13 warnings in 84.77s (0:01:24) =========== +(networkx-dev) \ No newline at end of file From fb05e87e958632aecc83211be57a1212baa48403 Mon Sep 17 00:00:00 2001 From: achluma Date: Wed, 4 Oct 2023 04:32:24 +0100 Subject: [PATCH 3/5] Added PR1 for Task 3 --- 2023-round-2/achluma/nx_pull_requests.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 2023-round-2/achluma/nx_pull_requests.txt diff --git a/2023-round-2/achluma/nx_pull_requests.txt b/2023-round-2/achluma/nx_pull_requests.txt new file mode 100644 index 00000000..a2edcdb0 --- /dev/null +++ b/2023-round-2/achluma/nx_pull_requests.txt @@ -0,0 +1 @@ +https://github.com/networkx/networkx/pull/6979 \ No newline at end of file From 5577cd7da534459451edd6afb5ecad0435ac4aaa Mon Sep 17 00:00:00 2001 From: achluma Date: Wed, 4 Oct 2023 04:56:49 +0100 Subject: [PATCH 4/5] create python script for directed graph --- 2023-round-2/achluma/nx_tutorial_script.py | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 2023-round-2/achluma/nx_tutorial_script.py diff --git a/2023-round-2/achluma/nx_tutorial_script.py b/2023-round-2/achluma/nx_tutorial_script.py new file mode 100644 index 00000000..ca80b0ed --- /dev/null +++ b/2023-round-2/achluma/nx_tutorial_script.py @@ -0,0 +1,45 @@ +import networkx as nx +import matplotlib.pyplot as plt + +# Create a NetworkX DiGraph graph object +G = nx.DiGraph() + +# Add nodes of multiple type +G.add_node(1, node_type='int') +G.add_node('A', node_type='str') +G.add_node((2, 3), node_type='tuple') +G.add_node('B', node_type='str') +G.add_node(4, node_type='int') +G.add_node('C', node_type='str') +G.add_node('D', node_type='str') +G.add_node((5, 6), node_type='tuple') +G.add_node('E', node_type='str') +G.add_node(7, node_type='int') + +# Add multiple edges between these nodes +G.add_edge(1, 'A') +G.add_edge('A', (2, 3)) +G.add_edge('A', 'B') +G.add_edge('B', 4) +G.add_edge('B', 'C') +G.add_edge('C', 'D') +G.add_edge('C', (5, 6)) +G.add_edge('C', 'E') +G.add_edge((5, 6), 7) +G.add_edge(7, 1) + +# Find the shortest path between all pairs of nodes in the graph +shortest_paths = dict(nx.all_pairs_shortest_path(G)) + +# Print shortest paths +for source_node, paths in shortest_paths.items(): + for target_node, path in paths.items(): + if source_node != target_node: + print(f"Shortest path from {source_node} to {target_node}: {path}") + +# Plot the graph using networkx.draw +pos = nx.spring_layout(G, seed=42) +node_colors = {'int': 'red', 'str': 'blue', 'tuple': 'green'} +node_colors_list = [node_colors[data['node_type']] for _, data in G.nodes(data=True)] +nx.draw(G, pos, with_labels=True, node_color=node_colors_list) +plt.show() \ No newline at end of file From 332d9c167b6210f1171fbcbbb7f4a659919d9cd8 Mon Sep 17 00:00:00 2001 From: achluma Date: Wed, 4 Oct 2023 07:29:30 +0100 Subject: [PATCH 5/5] Add timing output for betweenness_centrality --- .../heatmap_betweenness_centrality_timing.png | Bin 0 -> 44338 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 2023-round-2/achluma/heatmap_betweenness_centrality_timing.png diff --git a/2023-round-2/achluma/heatmap_betweenness_centrality_timing.png b/2023-round-2/achluma/heatmap_betweenness_centrality_timing.png new file mode 100644 index 0000000000000000000000000000000000000000..81421eedda1ec635b54f68be8f699b1ba1ff6bc8 GIT binary patch literal 44338 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