Fastest Gephi's ForceAtlas2 graph layout algorithm implemented for Python and NetworkX

Overview

ForceAtlas2 for Python

A port of Gephi's Force Atlas 2 layout algorithm to Python 2 and Python 3 (with a wrapper for NetworkX and igraph). This is the fastest python implementation available with most of the features complete. It also supports Barnes Hut approximation for maximum speedup.

ForceAtlas2 is a very fast layout algorithm for force-directed graphs. It's used to spatialize a weighted undirected graph in 2D (Edge weight defines the strength of the connection). The implementation is based on this paper and the corresponding gephi-java-code. Its really quick compared to the fruchterman reingold algorithm (spring layout) of networkx and scales well to high number of nodes (>10000).

Spatialize a random Geometric Graph

Geometric Graph

Installation

Install from pip:

pip install fa2

To build and install run from source:

python setup.py install

Cython is highly recommended if you are buidling from source as it will speed up by a factor of 10-100x depending on the graph

Dependencies

  • numpy (adjacency matrix as complete matrix)
  • scipy (adjacency matrix as sparse matrix)
  • tqdm (progressbar)
  • Cython (10-100x speedup)
  • networkx (To use the NetworkX wrapper function, you obviously need NetworkX)
  • python-igraph (To use the igraph wrapper)

Spatialize a 2D Grid

Grid Graph

Usage

from fa2 import ForceAtlas2

Create a ForceAtlas2 object with the appropriate settings. ForceAtlas2 class contains three important methods:

forceatlas2 (G, pos, iterations)
# G is a graph in 2D numpy ndarray format (or) scipy sparse matrix format. You can set the edge weights (> 0) in the matrix
# pos is a numpy array (Nx2) of initial positions of nodes
# iterations is num of iterations to run the algorithm
# returns a list of (x,y) pairs for each node's final position
forceatlas2_networkx_layout(G, pos, iterations)
# G is a networkx graph. Edge weights can be set (if required) in the Networkx graph
# pos is a dictionary, as in networkx
# iterations is num of iterations to run the algorithm
# returns a dictionary of node positions (2D X-Y tuples) indexed by the node name
forceatlas2_igraph_layout(G, pos, iterations, weight_attr)
# G is an igraph graph
# pos is a numpy array (Nx2) or list of initial positions of nodes (see that the indexing matches igraph node index)
# iterations is num of iterations to run the algorithm
# weight_attr denotes the weight attribute's name in G.es, None by default
# returns an igraph layout

Below is an example usage. You can also see the feature settings of ForceAtlas2 class.

import networkx as nx
from fa2 import ForceAtlas2
import matplotlib.pyplot as plt

G = nx.random_geometric_graph(400, 0.2)

forceatlas2 = ForceAtlas2(
                        # Behavior alternatives
                        outboundAttractionDistribution=True,  # Dissuade hubs
                        linLogMode=False,  # NOT IMPLEMENTED
                        adjustSizes=False,  # Prevent overlap (NOT IMPLEMENTED)
                        edgeWeightInfluence=1.0,

                        # Performance
                        jitterTolerance=1.0,  # Tolerance
                        barnesHutOptimize=True,
                        barnesHutTheta=1.2,
                        multiThreaded=False,  # NOT IMPLEMENTED

                        # Tuning
                        scalingRatio=2.0,
                        strongGravityMode=False,
                        gravity=1.0,

                        # Log
                        verbose=True)

positions = forceatlas2.forceatlas2_networkx_layout(G, pos=None, iterations=2000)
nx.draw_networkx_nodes(G, positions, node_size=20, with_labels=False, node_color="blue", alpha=0.4)
nx.draw_networkx_edges(G, positions, edge_color="green", alpha=0.05)
plt.axis('off')
plt.show()

# equivalently
import igraph
G = igraph.Graph.TupleList(G.edges(), directed=False)
layout = forceatlas2.forceatlas2_igraph_layout(G, pos=None, iterations=2000)
igraph.plot(G, layout).show()

You can also take a look at forceatlas2.py file for understanding the ForceAtlas2 class and its functions better.

Features Completed

  • barnesHutOptimize: Barnes Hut optimization, n2 complexity to n.ln(n)
  • gravity: Attracts nodes to the center. Prevents islands from drifting away
  • Dissuade Hubs: Distributes attraction along outbound edges. Hubs attract less and thus are pushed to the borders
  • scalingRatio: How much repulsion you want. More makes a more sparse graph
  • strongGravityMode: A stronger gravity view
  • jitterTolerance: How much swinging you allow. Above 1 discouraged. Lower gives less speed and more precision
  • verbose: Shows a progressbar of iterations completed. Also, shows time taken for different force computations
  • edgeWeightInfluence: How much influence you give to the edges weight. 0 is "no influence" and 1 is "normal"

Documentation

You will find all the documentation in the source code

Contributors

Contributions are highly welcome. Please submit your pull requests and become a collaborator.

Copyright

Copyright (C) 2017 Bhargav Chippada [email protected].
Licensed under the GNU GPLv3.

The files are heavily based on the java files included in Gephi, git revision 2b9a7c8 and Max Shinn's port to python of the algorithm. Here I include the copyright information from those files:

Copyright 2016 Max Shinn Available under the GPLv3 Also, thanks to Eugene Bosiakov ">
Copyright 2008-2011 Gephi
Authors : Mathieu Jacomy 
     
      
Website : http://www.gephi.org
Copyright 2011 Gephi Consortium. All rights reserved.
Portions Copyrighted 2011 Gephi Consortium.
The contents of this file are subject to the terms of either the
GNU General Public License Version 3 only ("GPL") or the Common
Development and Distribution License("CDDL") (collectively, the
"License"). You may not use this file except in compliance with
the License.


      
       
Copyright 2016 Max Shinn 
       
        
Available under the GPLv3

Also, thanks to Eugene Bosiakov 
        

        
       
      
     
Comments
  • cython problems with Python 3.7.0

    cython problems with Python 3.7.0

    I'm getting clang errors when doing "pip3 install fa2":

    fa2/fa2util.c:13592:13: error: no member named 'exc_traceback' in 'struct _ts'; did you mean 'curexc_traceback'?
        tstate->exc_traceback = local_tb;
                ^~~~~~~~~~~~~
                curexc_traceback
    /usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:238:15: note: 'curexc_traceback' declared here
        PyObject *curexc_traceback;
                  ^
    15 errors generated.
    error: command 'clang' failed with exit status 1
    

    This may be because Python 3.7 has changed the Cython functions: https://github.com/cython/cython/issues/1978

    Could you re-cythonize the package ? Is there a way I can do that through pip?

    bug 
    opened by maximilianh 9
  • Potential Multithreaded merge

    Potential Multithreaded merge

    Hi,

    There's been a recent release of multithreaded implementation in Java: https://github.com/klarman-cell-observatory/forceatlas2

    Are there any plans to integrate this? It'd be very much appreciated!

    Best, Herbert

    opened by herbertfreeze 4
  • Fixes ZeroDivisionError for graph with small number of nodes

    Fixes ZeroDivisionError for graph with small number of nodes

    Hello,

    First, let me thank you for this very good work. Cythonized version is incredibly faster than Python's one!

    I found that adjustSpeedAndApplyForces can sometimes generate a ZeroDivisionError on very small graphes (around <5). I checked the original Java code and it seems that the faulty line is there also... I suppose the same error could be raised.

    Here is a possible fix for this.

    bug 
    opened by nicolaselie 4
  • 3D positions?

    3D positions?

    Good day, I have been experimenting with https://github.com/tpoisot/nxfa2/blob/master/forceatlas.py for generating 3D layouts. The claim that this library is fast is indeed true, especially when compared to the above (hours vs minutes for a 25K vertex Graph).

    Can you please help me produce a 3D version of this layout engine? I do not understand the deep mechanics of Force Atlas and your implementation in particular, yet functions such as Node, linRepulsion, linRepulsion_region, linGravity, strongGravity, linAttraction, Region, and updateMassAndGeometry do not look too complex to modify and within my reach, whereas buildSubRegions, applyForce, adjustSpeedAndApplyForces, and forceatlas2 appear a bit deeper probably needing your expert eye. Of course the devil is in the detail so I am sure I will come unstuck on some of the simple functions 8)

    It may be better to do this as ForceAtlas3D to avoid a huge number of if then's Cheers

    enhancement help wanted 
    opened by spmp 4
  • initialization is ignored after one iteration

    initialization is ignored after one iteration

    Hi! This a very nice package!

    This should be very easy to reproduce for you, if not I'll assemble a small-scale example: after one iteration, no trace of the init pos is visible in the layout, it looks almost random. After 0 iterations, one perfectly recovers the provided initial positions. Is this behavior intended!

    Alex

    question 
    opened by falexwolf 3
  • Coefficient isn't specified in apply_gravity when useStrongGravity is True

    Coefficient isn't specified in apply_gravity when useStrongGravity is True

    When apply_gravity function is called with useStrongGravity=True. The strongGravity function will be called without assigning coefficient value. https://github.com/bhargavchippada/forceatlas2/blob/ab0daf9838bbe2022a9a392d9f6a2c335c766550/fa2/fa2util.py#L125-L131

    Meanwhile, the default value of coefficient in strongGravity function is 0. https://github.com/bhargavchippada/forceatlas2/blob/ab0daf9838bbe2022a9a392d9f6a2c335c766550/fa2/fa2util.py#L84-L91

    It forces all factor to be 0 and makes no different to node's position.

    bug 
    opened by clyang 2
  • Implemented the adjustSizes feature

    Implemented the adjustSizes feature

    Hello. This is a great project, and I like using this layout in my projects. I decided to have a go at implementing the adjustSizes feature, which I find makes very nice images.

    Please have a look and feel free to accept this PR if you like.

    opened by davidtweddell 1
  • Region function modification

    Region function modification

    Hello Bhargav,

    I have made changes to the buildSubRegions() function of the Region class.

    • Commit b9c9f05 : The topleftNodes and bottomleftNodes array were reversed (same with toprightNodes/bottomrightNodes). I simply switched them.
    • Commit 3a0d069 : I've reviewed the distribution of nodes in the subregions.
      • Previously, each node of self.nodes was visited twice. Now, the list is browsed only once to distribute the nodes to the 4 subregions.
      • The lists of nodes named topNodes and bottomNodes have been removed as no longer useful.
      • topNodes and bottomNodes have also been removed from the file fa2util.pxd.
      • fa2util.c was regenerated with Cython
    opened by petitquentin 1
  • Very slow on a large graph needs threading

    Very slow on a large graph needs threading

    Hi,

    I am trying to use this to generate a force directed graph outside of gephi.

    The size of the graph is significant at 200K+ nodes.

    I have tried to fork but cython is a step further than my skills.

    If you can advise I can perhaps help.

    Cheers

    Joe

    opened by JoeyC1990 1
  • Thank you contributors!

    Thank you contributors!

    Hi there, Just want to take this opportunity to thank the contributors. Gephi's forceatlas2 algorithm is a really nice scalable layout engine, and having it pip installable to extent into the Python ecosystem is great.

    opened by swayson 1
  • Different results compared to Gephi

    Different results compared to Gephi

    My goal is to visualize NetworkX graphs with Gephi's ForceAtlas 2 algorithm without having to use Gephi. I tested this library by importing the same graph once in Gephi and once in NetworkX. I used the same algorithm parameters for both but got totally different layout results. This is the layout using the python version of ForceAtlas: image

    And this is what I get when running Gephi: image

    The main issue is that the edges in the plot of the python result are not separated from each other as it is the case when using Gephi.

    opened by eybee 1
  • Looking for a Graph Layout

    Looking for a Graph Layout

    Hey community, I am currently desperate. I created a network plot using VTK in python, but I am not able to remember how to get to the 3D sphere-like layout and was looking for a sophisticated community. I also remember having installed the forceatlas package for 3D, but I am not able to recreate this layout. I do not know anymore if this has been a layout from networkx, igraph, graphviz, cytoscape or gephi. I tried all software but I was not able to find the right layout - somehow spherical with optimized distances/overlaps. Here is the example.

    Unbenannt

    Does somebody recognize this type of layout by chance? I would be very grateful!

    opened by Bennyyy27 0
  • Installation issue on Ubuntu 22.04

    Installation issue on Ubuntu 22.04

    Hi,

    Many thanks for making available this great package!

    I have Ubuntu 22.04 and I am using Python 3.9.0.

    I tried the pip command installation without success. Then, I tried to compile it and got these error messages:

    python3 setup.py install

    Installing fa2 package (fastest forceatlas2 python implementation)

    Cython is installed? Yes

    Starting to install!

    running install /home/ivan/python_3.9.0/lib/python3.9/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. warnings.warn( /home/ivan/python_3.9.0/lib/python3.9/site-packages/setuptools/command/easy_install.py:144: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools. warnings.warn( running bdist_egg running egg_info creating fa2.egg-info writing fa2.egg-info/PKG-INFO writing dependency_links to fa2.egg-info/dependency_links.txt writing requirements to fa2.egg-info/requires.txt writing top-level names to fa2.egg-info/top_level.txt writing manifest file 'fa2.egg-info/SOURCES.txt' reading manifest file 'fa2.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'LICENSE' writing manifest file 'fa2.egg-info/SOURCES.txt' installing library code to build/bdist.linux-x86_64/egg running install_lib running build_py creating build creating build/lib.linux-x86_64-cpython-39 creating build/lib.linux-x86_64-cpython-39/fa2 copying fa2/fa2util.py -> build/lib.linux-x86_64-cpython-39/fa2 copying fa2/forceatlas2.py -> build/lib.linux-x86_64-cpython-39/fa2 copying fa2/init.py -> build/lib.linux-x86_64-cpython-39/fa2 copying fa2/fa2util.c -> build/lib.linux-x86_64-cpython-39/fa2 copying fa2/fa2util.pxd -> build/lib.linux-x86_64-cpython-39/fa2 running build_ext skipping 'fa2/fa2util.c' Cython extension (up-to-date) building 'fa2.fa2util' extension creating build/temp.linux-x86_64-cpython-39 creating build/temp.linux-x86_64-cpython-39/fa2 gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/home/ivan/python_3.9.0/include/python3.9 -c fa2/fa2util.c -o build/temp.linux-x86_64-cpython-39/fa2/fa2util.o fa2/fa2util.c: In function ‘__Pyx_ParseOptionalKeywords’: fa2/fa2util.c:12107:21: warning: ‘_PyUnicode_get_wstr_length’ is deprecated [-Wdeprecated-declarations] 12107 | (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : | ^ In file included from /home/ivan/python_3.9.0/include/python3.9/unicodeobject.h:1026, from /home/ivan/python_3.9.0/include/python3.9/Python.h:97, from fa2/fa2util.c:4: /home/ivan/python_3.9.0/include/python3.9/cpython/unicodeobject.h:446:26: note: declared here 446 | static inline Py_ssize_t _PyUnicode_get_wstr_length(PyObject *op) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~ fa2/fa2util.c:12107:21: warning: ‘PyUnicode_AsUnicode’ is deprecated [-Wdeprecated-declarations] 12107 | (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : | ^ In file included from /home/ivan/python_3.9.0/include/python3.9/unicodeobject.h:1026, from /home/ivan_phd/python_3.9.0/include/python3.9/Python.h:97, from fa2/fa2util.c:4: /home/ivan/python_3.9.0/include/python3.9/cpython/unicodeobject.h:580:45: note: declared here 580 | Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode( | ^~~~~~~~~~~~~~~~~~~ fa2/fa2util.c:12107:21: warning: ‘_PyUnicode_get_wstr_length’ is deprecated [-Wdeprecated-declarations] 12107 | (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : | ^ In file included from /home/ivan/python_3.9.0/include/python3.9/unicodeobject.h:1026, from /home/ivan_phd/python_3.9.0/include/python3.9/Python.h:97, from fa2/fa2util.c:4: /home/ivan/python_3.9.0/include/python3.9/cpython/unicodeobject.h:446:26: note: declared here 446 | static inline Py_ssize_t _PyUnicode_get_wstr_length(PyObject *op) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~ fa2/fa2util.c:12107:21: warning: ‘_PyUnicode_get_wstr_length’ is deprecated [-Wdeprecated-declarations] 12107 | (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : | ^ In file included from /home/ivan/python_3.9.0/include/python3.9/unicodeobject.h:1026, from /home/ivan_phd/python_3.9.0/include/python3.9/Python.h:97, from fa2/fa2util.c:4: /home/ivan/python_3.9.0/include/python3.9/cpython/unicodeobject.h:446:26: note: declared here 446 | static inline Py_ssize_t _PyUnicode_get_wstr_length(PyObject *op) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~ fa2/fa2util.c:12107:21: warning: ‘PyUnicode_AsUnicode’ is deprecated [-Wdeprecated-declarations] 12107 | (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : | ^ In file included from /home/ivan/python_3.9.0/include/python3.9/unicodeobject.h:1026, from /home/ivan_phd/python_3.9.0/include/python3.9/Python.h:97, from fa2/fa2util.c:4: /home/ivan/python_3.9.0/include/python3.9/cpython/unicodeobject.h:580:45: note: declared here 580 | Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode( | ^~~~~~~~~~~~~~~~~~~ fa2/fa2util.c:12107:21: warning: ‘_PyUnicode_get_wstr_length’ is deprecated [-Wdeprecated-declarations] 12107 | (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : | ^ In file included from /home/ivan/python_3.9.0/include/python3.9/unicodeobject.h:1026, from /home/ivan/python_3.9.0/include/python3.9/Python.h:97, from fa2/fa2util.c:4: /home/ivan/python_3.9.0/include/python3.9/cpython/unicodeobject.h:446:26: note: declared here 446 | static inline Py_ssize_t _PyUnicode_get_wstr_length(PyObject *op) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~ fa2/fa2util.c:12123:25: warning: ‘_PyUnicode_get_wstr_length’ is deprecated [-Wdeprecated-declarations] 12123 | (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : | ^ In file included from /home/ivan/python_3.9.0/include/python3.9/unicodeobject.h:1026, from /home/ivan/python_3.9.0/include/python3.9/Python.h:97, from fa2/fa2util.c:4: /home/ivan/python_3.9.0/include/python3.9/cpython/unicodeobject.h:446:26: note: declared here 446 | static inline Py_ssize_t _PyUnicode_get_wstr_length(PyObject *op) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~ fa2/fa2util.c:12123:25: warning: ‘PyUnicode_AsUnicode’ is deprecated [-Wdeprecated-declarations] 12123 | (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : | ^ In file included from /home/ivan/python_3.9.0/include/python3.9/unicodeobject.h:1026, from /home/ivan/python_3.9.0/include/python3.9/Python.h:97, from fa2/fa2util.c:4: /home/ivan/python_3.9.0/include/python3.9/cpython/unicodeobject.h:580:45: note: declared here 580 | Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode( | ^~~~~~~~~~~~~~~~~~~ fa2/fa2util.c:12123:25: warning: ‘_PyUnicode_get_wstr_length’ is deprecated [-Wdeprecated-declarations] 12123 | (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : | ^ In file included from /home/ivan/python_3.9.0/include/python3.9/unicodeobject.h:1026, from /home/ivan/python_3.9.0/include/python3.9/Python.h:97, from fa2/fa2util.c:4: /home/ivan/python_3.9.0/include/python3.9/cpython/unicodeobject.h:446:26: note: declared here 446 | static inline Py_ssize_t _PyUnicode_get_wstr_length(PyObject *op) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~ fa2/fa2util.c:12123:25: warning: ‘_PyUnicode_get_wstr_length’ is deprecated [-Wdeprecated-declarations] 12123 | (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : | ^ In file included from /home/ivan/python_3.9.0/include/python3.9/unicodeobject.h:1026, from /home/ivan_phd/python_3.9.0/include/python3.9/Python.h:97, from fa2/fa2util.c:4: /home/ivan/python_3.9.0/include/python3.9/cpython/unicodeobject.h:446:26: note: declared here 446 | static inline Py_ssize_t _PyUnicode_get_wstr_length(PyObject *op) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~ fa2/fa2util.c:12123:25: warning: ‘PyUnicode_AsUnicode’ is deprecated [-Wdeprecated-declarations] 12123 | (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : | ^ In file included from /home/ivan/python_3.9.0/include/python3.9/unicodeobject.h:1026, from /home/ivan/python_3.9.0/include/python3.9/Python.h:97, from fa2/fa2util.c:4: /home/ivan/python_3.9.0/include/python3.9/cpython/unicodeobject.h:580:45: note: declared here 580 | Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode( | ^~~~~~~~~~~~~~~~~~~ fa2/fa2util.c:12123:25: warning: ‘_PyUnicode_get_wstr_length’ is deprecated [-Wdeprecated-declarations] 12123 | (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : | ^ In file included from /home/ivan/python_3.9.0/include/python3.9/unicodeobject.h:1026, from /home/ivan/python_3.9.0/include/python3.9/Python.h:97, from fa2/fa2util.c:4: /home/ivan/python_3.9.0/include/python3.9/cpython/unicodeobject.h:446:26: note: declared here 446 | static inline Py_ssize_t _PyUnicode_get_wstr_length(PyObject *op) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~ gcc -shared build/temp.linux-x86_64-cpython-39/fa2/fa2util.o -o build/lib.linux-x86_64-cpython-39/fa2/fa2util.cpython-39-x86_64-linux-gnu.so creating build/bdist.linux-x86_64 creating build/bdist.linux-x86_64/egg creating build/bdist.linux-x86_64/egg/fa2 copying build/lib.linux-x86_64-cpython-39/fa2/fa2util.py -> build/bdist.linux-x86_64/egg/fa2 copying build/lib.linux-x86_64-cpython-39/fa2/fa2util.cpython-39-x86_64-linux-gnu.so -> build/bdist.linux-x86_64/egg/fa2 copying build/lib.linux-x86_64-cpython-39/fa2/fa2util.pxd -> build/bdist.linux-x86_64/egg/fa2 copying build/lib.linux-x86_64-cpython-39/fa2/fa2util.c -> build/bdist.linux-x86_64/egg/fa2 copying build/lib.linux-x86_64-cpython-39/fa2/forceatlas2.py -> build/bdist.linux-x86_64/egg/fa2 copying build/lib.linux-x86_64-cpython-39/fa2/init.py -> build/bdist.linux-x86_64/egg/fa2 byte-compiling build/bdist.linux-x86_64/egg/fa2/fa2util.py to fa2util.cpython-39.pyc byte-compiling build/bdist.linux-x86_64/egg/fa2/forceatlas2.py to forceatlas2.cpython-39.pyc byte-compiling build/bdist.linux-x86_64/egg/fa2/init.py to init.cpython-39.pyc creating stub loader for fa2/fa2util.cpython-39-x86_64-linux-gnu.so creating build/bdist.linux-x86_64/egg/EGG-INFO copying fa2.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO copying fa2.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying fa2.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying fa2.egg-info/requires.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying fa2.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO writing build/bdist.linux-x86_64/egg/EGG-INFO/native_libs.txt zip_safe flag not set; analyzing archive contents... creating dist creating 'dist/fa2-0.3.5-py3.9-linux-x86_64.egg' and adding 'build/bdist.linux-x86_64/egg' to it removing 'build/bdist.linux-x86_64/egg' (and everything under it) Processing fa2-0.3.5-py3.9-linux-x86_64.egg Copying fa2-0.3.5-py3.9-linux-x86_64.egg to /home/ivan_phd/python_3.9.0/lib/python3.9/site-packages Adding fa2 0.3.5 to easy-install.pth file

    Installed /home/ivan/python_3.9.0/lib/python3.9/site-packages/fa2-0.3.5-py3.9-linux-x86_64.egg Processing dependencies for fa2==0.3.5 Searching for tqdm==4.64.1 Best match: tqdm 4.64.1 Adding tqdm 4.64.1 to easy-install.pth file Installing tqdm script to /home/ivan_phd/python_3.9.0/bin

    Using /home/ivan/python_3.9.0/lib/python3.9/site-packages Searching for scipy==1.9.1 Best match: scipy 1.9.1 Adding scipy 1.9.1 to easy-install.pth file

    Using /home/ivan/python_3.9.0/lib/python3.9/site-packages Searching for numpy==1.23.3 Best match: numpy 1.23.3 Adding numpy 1.23.3 to easy-install.pth file Installing f2py script to /home/ivan_phd/python_3.9.0/bin Installing f2py3 script to /home/ivan_phd/python_3.9.0/bin Installing f2py3.9 script to /home/ivan_phd/python_3.9.0/bin

    Using /home/ivan/python_3.9.0/lib/python3.9/site-packages Finished processing dependencies for fa2==0.3.5

    Any suggestions?

    Best regards,

    Ivan

    opened by ivan-marroquin 0
  • Status / getting things moving again

    Status / getting things moving again

    Hi @bhargavchippada,

    As the author, would you mind clarifying whether there is commitment to maintaining ForceAtlas2 from yourself and / or another maintainer?

    Some really great work has gone into the project, and those it is derived from. IMHO, it is still the best Python graph layout algorithm around for many situations.

    It would be nice to get things updated and re-establish a way of getting PRs in and releases out from time to time. It would be a real shame if the project were to wither away.

    Thanks!

    opened by uros-r 2
  • Fixed setup file

    Fixed setup file

    The repo was not exposing the cython files correctly. The headers (pxd) exposing the functions were not installed in site-packages. This fixes that issue and runs now on python 3.10.

    opened by cvanelteren 0
  • Release a new version

    Release a new version

    Hi,

    I'm currently trying to use forceatlas2 from conda-forge with python3.9 but the build is failing because it's using the version 0.3.5 (recipe and logs). The build from master is working for python3.9. It would be nice if we could have a new release so we can bump the version on conda-forge and so we should be able to publish conda package for python3.9.

    Let me know if I can help with anything!

    Thank you

    opened by Ethyling 1
  • Problem installing fa2 on Python3.9

    Problem installing fa2 on Python3.9

    It seems that fa2 is not compatible with Python3.9

    `ERROR: Command errored out with exit status 1: command: /usr/local/opt/[email protected]/bin/python3.9 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/tb/yb5np6tx5tg852_7ktrz3qy40000gn/T/pip-install-345a9yt5/fa2_127e2c475c0344ff93462856df90b805/setup.py'"'"'; file='"'"'/private/var/folders/tb/yb5np6tx5tg852_7ktrz3qy40000gn/T/pip-install-345a9yt5/fa2_127e2c475c0344ff93462856df90b805/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(file) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /private/var/folders/tb/yb5np6tx5tg852_7ktrz3qy40000gn/T/pip-record-tehayj72/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3.9/fa2 cwd: /private/var/folders/tb/yb5np6tx5tg852_7ktrz3qy40000gn/T/pip-install-345a9yt5/fa2_127e2c475c0344ff93462856df90b805/ Complete output (214 lines): Installing fa2 package (fastest forceatlas2 python implementation)

    >>>> Cython is installed?
    Cython is not installed; using pre-generated C files if available
    Please install Cython first and try again if you face any installation problems
    
    >>>> Are pre-generated C files available?
    Yes
    
    >>>> Starting to install!
    
    running install
    running build
    running build_py
    creating build
    creating build/lib.macosx-10.15-x86_64-3.9
    creating build/lib.macosx-10.15-x86_64-3.9/fa2
    copying fa2/fa2util.py -> build/lib.macosx-10.15-x86_64-3.9/fa2
    copying fa2/__init__.py -> build/lib.macosx-10.15-x86_64-3.9/fa2
    copying fa2/forceatlas2.py -> build/lib.macosx-10.15-x86_64-3.9/fa2
    running egg_info
    writing fa2.egg-info/PKG-INFO
    writing dependency_links to fa2.egg-info/dependency_links.txt
    writing requirements to fa2.egg-info/requires.txt
    writing top-level names to fa2.egg-info/top_level.txt
    reading manifest file 'fa2.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    writing manifest file 'fa2.egg-info/SOURCES.txt'
    copying fa2/fa2util.c -> build/lib.macosx-10.15-x86_64-3.9/fa2
    copying fa2/fa2util.pxd -> build/lib.macosx-10.15-x86_64-3.9/fa2
    running build_ext
    building 'fa2.fa2util' extension
    creating build/temp.macosx-10.15-x86_64-3.9
    creating build/temp.macosx-10.15-x86_64-3.9/fa2
    clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -I/usr/local/include -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/include -I/usr/local/opt/[email protected]/include -I/usr/local/opt/sqlite/include -I/usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9 -c fa2/fa2util.c -o build/temp.macosx-10.15-x86_64-3.9/fa2/fa2util.o
    fa2/fa2util.c:10939:33: error: no member named 'tp_print' in 'struct _typeobject'
      __pyx_type_3fa2_7fa2util_Node.tp_print = 0;
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
    fa2/fa2util.c:10947:33: error: no member named 'tp_print' in 'struct _typeobject'
      __pyx_type_3fa2_7fa2util_Edge.tp_print = 0;
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
    fa2/fa2util.c:10960:35: error: no member named 'tp_print' in 'struct _typeobject'
      __pyx_type_3fa2_7fa2util_Region.tp_print = 0;
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
    fa2/fa2util.c:12133:22: warning: '_PyUnicode_get_wstr_length' is deprecated [-Wdeprecated-declarations]
                        (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
                         ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:261:7: note: expanded from macro 'PyUnicode_GET_SIZE'
          PyUnicode_WSTR_LENGTH(op) :                    \
          ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:451:35: note: expanded from macro 'PyUnicode_WSTR_LENGTH'
    #define PyUnicode_WSTR_LENGTH(op) _PyUnicode_get_wstr_length((PyObject*)op)
                                      ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:445:1: note: '_PyUnicode_get_wstr_length' has been explicitly marked deprecated here
    Py_DEPRECATED(3.3)
    ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/pyport.h:508:54: note: expanded from macro 'Py_DEPRECATED'
    #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                         ^
    fa2/fa2util.c:12133:22: warning: 'PyUnicode_AsUnicode' is deprecated [-Wdeprecated-declarations]
                        (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
                         ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:262:14: note: expanded from macro 'PyUnicode_GET_SIZE'
          ((void)PyUnicode_AsUnicode(_PyObject_CAST(op)),\
                 ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:580:1: note: 'PyUnicode_AsUnicode' has been explicitly marked deprecated here
    Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode(
    ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/pyport.h:508:54: note: expanded from macro 'Py_DEPRECATED'
    #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                         ^
    fa2/fa2util.c:12133:22: warning: '_PyUnicode_get_wstr_length' is deprecated [-Wdeprecated-declarations]
                        (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
                         ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:264:8: note: expanded from macro 'PyUnicode_GET_SIZE'
           PyUnicode_WSTR_LENGTH(op)))
           ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:451:35: note: expanded from macro 'PyUnicode_WSTR_LENGTH'
    #define PyUnicode_WSTR_LENGTH(op) _PyUnicode_get_wstr_length((PyObject*)op)
                                      ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:445:1: note: '_PyUnicode_get_wstr_length' has been explicitly marked deprecated here
    Py_DEPRECATED(3.3)
    ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/pyport.h:508:54: note: expanded from macro 'Py_DEPRECATED'
    #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                         ^
    fa2/fa2util.c:12133:52: warning: '_PyUnicode_get_wstr_length' is deprecated [-Wdeprecated-declarations]
                        (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
                                                       ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:261:7: note: expanded from macro 'PyUnicode_GET_SIZE'
          PyUnicode_WSTR_LENGTH(op) :                    \
          ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:451:35: note: expanded from macro 'PyUnicode_WSTR_LENGTH'
    #define PyUnicode_WSTR_LENGTH(op) _PyUnicode_get_wstr_length((PyObject*)op)
                                      ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:445:1: note: '_PyUnicode_get_wstr_length' has been explicitly marked deprecated here
    Py_DEPRECATED(3.3)
    ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/pyport.h:508:54: note: expanded from macro 'Py_DEPRECATED'
    #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                         ^
    fa2/fa2util.c:12133:52: warning: 'PyUnicode_AsUnicode' is deprecated [-Wdeprecated-declarations]
                        (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
                                                       ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:262:14: note: expanded from macro 'PyUnicode_GET_SIZE'
          ((void)PyUnicode_AsUnicode(_PyObject_CAST(op)),\
                 ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:580:1: note: 'PyUnicode_AsUnicode' has been explicitly marked deprecated here
    Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode(
    ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/pyport.h:508:54: note: expanded from macro 'Py_DEPRECATED'
    #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                         ^
    fa2/fa2util.c:12133:52: warning: '_PyUnicode_get_wstr_length' is deprecated [-Wdeprecated-declarations]
                        (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
                                                       ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:264:8: note: expanded from macro 'PyUnicode_GET_SIZE'
           PyUnicode_WSTR_LENGTH(op)))
           ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:451:35: note: expanded from macro 'PyUnicode_WSTR_LENGTH'
    #define PyUnicode_WSTR_LENGTH(op) _PyUnicode_get_wstr_length((PyObject*)op)
                                      ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:445:1: note: '_PyUnicode_get_wstr_length' has been explicitly marked deprecated here
    Py_DEPRECATED(3.3)
    ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/pyport.h:508:54: note: expanded from macro 'Py_DEPRECATED'
    #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                         ^
    fa2/fa2util.c:12149:26: warning: '_PyUnicode_get_wstr_length' is deprecated [-Wdeprecated-declarations]
                            (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
                             ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:261:7: note: expanded from macro 'PyUnicode_GET_SIZE'
          PyUnicode_WSTR_LENGTH(op) :                    \
          ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:451:35: note: expanded from macro 'PyUnicode_WSTR_LENGTH'
    #define PyUnicode_WSTR_LENGTH(op) _PyUnicode_get_wstr_length((PyObject*)op)
                                      ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:445:1: note: '_PyUnicode_get_wstr_length' has been explicitly marked deprecated here
    Py_DEPRECATED(3.3)
    ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/pyport.h:508:54: note: expanded from macro 'Py_DEPRECATED'
    #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                         ^
    fa2/fa2util.c:12149:26: warning: 'PyUnicode_AsUnicode' is deprecated [-Wdeprecated-declarations]
                            (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
                             ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:262:14: note: expanded from macro 'PyUnicode_GET_SIZE'
          ((void)PyUnicode_AsUnicode(_PyObject_CAST(op)),\
                 ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:580:1: note: 'PyUnicode_AsUnicode' has been explicitly marked deprecated here
    Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode(
    ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/pyport.h:508:54: note: expanded from macro 'Py_DEPRECATED'
    #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                         ^
    fa2/fa2util.c:12149:26: warning: '_PyUnicode_get_wstr_length' is deprecated [-Wdeprecated-declarations]
                            (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
                             ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:264:8: note: expanded from macro 'PyUnicode_GET_SIZE'
           PyUnicode_WSTR_LENGTH(op)))
           ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:451:35: note: expanded from macro 'PyUnicode_WSTR_LENGTH'
    #define PyUnicode_WSTR_LENGTH(op) _PyUnicode_get_wstr_length((PyObject*)op)
                                      ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:445:1: note: '_PyUnicode_get_wstr_length' has been explicitly marked deprecated here
    Py_DEPRECATED(3.3)
    ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/pyport.h:508:54: note: expanded from macro 'Py_DEPRECATED'
    #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                         ^
    fa2/fa2util.c:12149:59: warning: '_PyUnicode_get_wstr_length' is deprecated [-Wdeprecated-declarations]
                            (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
                                                              ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:261:7: note: expanded from macro 'PyUnicode_GET_SIZE'
          PyUnicode_WSTR_LENGTH(op) :                    \
          ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:451:35: note: expanded from macro 'PyUnicode_WSTR_LENGTH'
    #define PyUnicode_WSTR_LENGTH(op) _PyUnicode_get_wstr_length((PyObject*)op)
                                      ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:445:1: note: '_PyUnicode_get_wstr_length' has been explicitly marked deprecated here
    Py_DEPRECATED(3.3)
    ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/pyport.h:508:54: note: expanded from macro 'Py_DEPRECATED'
    #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                         ^
    fa2/fa2util.c:12149:59: warning: 'PyUnicode_AsUnicode' is deprecated [-Wdeprecated-declarations]
                            (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
                                                              ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:262:14: note: expanded from macro 'PyUnicode_GET_SIZE'
          ((void)PyUnicode_AsUnicode(_PyObject_CAST(op)),\
                 ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:580:1: note: 'PyUnicode_AsUnicode' has been explicitly marked deprecated here
    Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode(
    ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/pyport.h:508:54: note: expanded from macro 'Py_DEPRECATED'
    #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                         ^
    fa2/fa2util.c:12149:59: warning: '_PyUnicode_get_wstr_length' is deprecated [-Wdeprecated-declarations]
                            (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
                                                              ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:264:8: note: expanded from macro 'PyUnicode_GET_SIZE'
           PyUnicode_WSTR_LENGTH(op)))
           ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:451:35: note: expanded from macro 'PyUnicode_WSTR_LENGTH'
    #define PyUnicode_WSTR_LENGTH(op) _PyUnicode_get_wstr_length((PyObject*)op)
                                      ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/cpython/unicodeobject.h:445:1: note: '_PyUnicode_get_wstr_length' has been explicitly marked deprecated here
    Py_DEPRECATED(3.3)
    ^
    /usr/local/Cellar/[email protected]/3.9.1_3/Frameworks/Python.framework/Versions/3.9/include/python3.9/pyport.h:508:54: note: expanded from macro 'Py_DEPRECATED'
    #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                         ^
    12 warnings and 3 errors generated.
    error: command '/usr/bin/clang' failed with exit code 1
    ----------------------------------------
    

    ERROR: Command errored out with exit status 1: /usr/local/opt/[email protected]/bin/python3.9 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/tb/yb5np6tx5tg852_7ktrz3qy40000gn/T/pip-install-345a9yt5/fa2_127e2c475c0344ff93462856df90b805/setup.py'"'"'; file='"'"'/private/var/folders/tb/yb5np6tx5tg852_7ktrz3qy40000gn/T/pip-install-345a9yt5/fa2_127e2c475c0344ff93462856df90b805/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(file) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /private/var/folders/tb/yb5np6tx5tg852_7ktrz3qy40000gn/T/pip-record-tehayj72/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3.9/fa2 Check the logs for full command output. `

    opened by satrio-yudhoatmojo 7
Releases(v0.3.5)
  • v0.3.5(Jan 25, 2019)

  • v0.3.4(Jan 23, 2019)

    Changelog (v0.3 and v0.3.4)

    • Fix rendering of README.md on the PyPi project page
    • Updated setup.py file. Rebuild .c file if Cython is present
    • Use the pre-generated .c file if Cython is not installed
    • README.rst to README.md
    • Example python notebook added
    Source code(tar.gz)
    Source code(zip)
  • v0.3(Jan 23, 2019)

    Changelog

    • Updated setup.py file. Rebuild .c file if Cython is present
    • Use the pre-generated .c file if Cython is not installed
    • README.rst to README.md
    • example python notebook added
    Source code(tar.gz)
    Source code(zip)
  • v0.2(Oct 28, 2017)

    Changelog

    • Major changes in setup.py
    • Fixed python2 compatibility
    • MANIFEST file to include fa2/fa2util.c and fa2/fa2util.pxd files
    • Updated README
    Source code(tar.gz)
    Source code(zip)
  • v0.1(Oct 27, 2017)

    First release A port of Gephi’s Force Atlas 2 layout algorithm to Python 2 and Python 3 (with a wrapper for NetworkX). This is the fastest Python implementation available with most of the features complete. It also supports Barnes Hut approximation for maximum speedup.

    ForceAtlas2 algorithm is really fast compared to the Fruchterman Reingold algorithm (spring layout) of NetworkX and scales well to a high number of nodes (>10000).

    Source code(tar.gz)
    Source code(zip)
Owner
Bhargav Chippada
I graduated from IIT Bombay in 2016, specializing in Computer Science. I love science, math, and artificial intelligence. Experience @ GOOGL, MSFT, AMZN, OLA
Bhargav Chippada
A high-level plotting API for pandas, dask, xarray, and networkx built on HoloViews

hvPlot A high-level plotting API for the PyData ecosystem built on HoloViews. Build Status Coverage Latest dev release Latest release Docs What is it?

HoloViz 349 Feb 15, 2021
Generate graphs with NetworkX, natively visualize with D3.js and pywebview

webview_d3 This is some PoC code to render graphs created with NetworkX natively using D3.js and pywebview. The main benifit of this approac

byt3bl33d3r 68 Aug 18, 2022
Draw interactive NetworkX graphs with Altair

nx_altair Draw NetworkX graphs with Altair nx_altair offers a similar draw API to NetworkX but returns Altair Charts instead. If you'd like to contrib

Zachary Sailer 206 Dec 12, 2022
Draw interactive NetworkX graphs with Altair

nx_altair Draw NetworkX graphs with Altair nx_altair offers a similar draw API to NetworkX but returns Altair Charts instead. If you'd like to contrib

Zachary Sailer 156 Feb 6, 2021
By default, networkx has problems with drawing self-loops in graphs.

By default, networkx has problems with drawing self-loops in graphs. It makes it hard to draw a graph with self-loops or to make a nicely looking chord diagram. This repository provides some code to draw self-loops nicely

Vladimir Shitov 5 Jan 6, 2022
Alternative layout visualizer for ZSA Moonlander keyboard

General info This is a keyboard layout visualizer for ZSA Moonlander keyboard (because I didn't find their Oryx or their training tool particularly us

null 10 Jul 19, 2022
In-memory Graph Database and Knowledge Graph with Natural Language Interface, compatible with Pandas

CogniPy for Pandas - In-memory Graph Database and Knowledge Graph with Natural Language Interface Whats in the box Reasoning, exploration of RDF/OWL,

Cognitum Octopus 34 Dec 13, 2022
2D maze path solver visualizer implemented with python

2D maze path solver visualizer implemented with python

SS 14 Dec 21, 2022
The visual framework is designed on the idea of module and implemented by mixin method

Visual Framework The visual framework is designed on the idea of module and implemented by mixin method. Its biggest feature is the mixins module whic

LEFTeyes 9 Sep 19, 2022
Python ts2vg package provides high-performance algorithm implementations to build visibility graphs from time series data.

ts2vg: Time series to visibility graphs The Python ts2vg package provides high-performance algorithm implementations to build visibility graphs from t

Carlos Bergillos 26 Dec 17, 2022
A python visualization of the A* path finding algorithm

A python visualization of the A* path finding algorithm. It allows you to pick your start, end location and make obstacles and then view the process of finding the shortest path. You can also choose to include or exclude diagonal movement.

Kimeon 4 Aug 2, 2022
This project is an Algorithm Visualizer where a user can visualize algorithms like Bubble Sort, Merge Sort, Quick Sort, Selection Sort, Linear Search and Binary Search.

Algo_Visualizer This project is an Algorithm Visualizer where a user can visualize common algorithms like "Bubble Sort", "Merge Sort", "Quick Sort", "

Rahul 4 Feb 7, 2022
Focus on Algorithm Design, Not on Data Wrangling

The dataTap Python library is the primary interface for using dataTap's rich data management tools. Create datasets, stream annotations, and analyze model performance all with one library.

Zensors 37 Nov 25, 2022
Simple CLI python app to show a stocks graph performance. Made with Matplotlib and Tiingo.

stock-graph-python Simple CLI python app to show a stocks graph performance. Made with Matplotlib and Tiingo. Tiingo API Key You will need to add your

Toby 3 May 14, 2022
LabGraph is a a Python-first framework used to build sophisticated research systems with real-time streaming, graph API, and parallelism.

LabGraph is a a Python-first framework used to build sophisticated research systems with real-time streaming, graph API, and parallelism.

MLH Fellowship 7 Oct 5, 2022
Automatization of BoxPlot graph usin Python MatPlotLib and Excel

BoxPlotGraphAutomation Automatization of BoxPlot graph usin Python / Excel. This file is an automation of BoxPlot-Graph using python graph library mat

EricAugustin 1 Feb 7, 2022
Pyan3 - Offline call graph generator for Python 3

Pyan takes one or more Python source files, performs a (rather superficial) static analysis, and constructs a directed graph of the objects in the combined source, and how they define or use each other. The graph can be output for rendering by GraphViz or yEd.

Juha Jeronen 235 Jan 2, 2023
A python script to visualise explain plans as a graph using graphviz

README Needs to be improved Prerequisites Need to have graphiz installed on the machine. Refer to https://graphviz.readthedocs.io/en/stable/manual.htm

Edward Mallia 1 Sep 28, 2021
Import, visualize, and analyze SpiderFoot OSINT data in Neo4j, a graph database

SpiderFoot Neo4j Tools Import, visualize, and analyze SpiderFoot OSINT data in Neo4j, a graph database Step 1: Installation NOTE: This installs the sf

Black Lantern Security 42 Dec 26, 2022