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 programming language built on top of Python to easily allow Swahili speakers to get started with programming without ever knowing English

pyswahili A programming language built over Python to easily allow swahili speakers to get started with programming without ever knowing english pyswa

Jordan Kalebu 72 Dec 15, 2022
Create a visualization for Trump's Tweeted Words Using Python

Data Trump's Tweeted Words This plot illustrates twitter word occurences. We already did the coding I needed for this plot, so I was very inspired to

7 Mar 27, 2022
Because trello only have payed options to generate a RunUp chart, this solves that!

Trello Runup Chart Generator The basic concept of the project is that Corello is pay-to-use and want to use Trello To-Do/Doing/Done automation with gi

Rômulo Schiavon 1 Dec 21, 2021
LinkedIn connections analyzer

LinkedIn Connections Analyzer 🔗 https://linkedin-analzyer.herokuapp.com Hey hey 👋 , welcome to my LinkedIn connections analyzer. I recently found ou

Okkar Min 5 Sep 13, 2022
Draw datasets from within Jupyter.

drawdata This small python app allows you to draw a dataset in a jupyter notebook. This should be very useful when teaching machine learning algorithm

vincent d warmerdam 505 Nov 27, 2022
Minimalistic tool to visualize how the routes to a given target domain change over time, feat. Python 3.10 & mermaid.js

Minimalistic tool to visualize how the routes to a given target domain change over time, feat. Python 3.10 & mermaid.js

Péter Ferenc Gyarmati 1 Jan 17, 2022
An application that allows you to design and test your own stock trading algorithms in an attempt to beat the market.

StockBot is a Python application for designing and testing your own daily stock trading algorithms. Installation Use the

Ryan Cullen 280 Dec 19, 2022
Make sankey, alluvial and sankey bump plots in ggplot

The goal of ggsankey is to make beautiful sankey, alluvial and sankey bump plots in ggplot2

David Sjoberg 156 Jan 03, 2023
Python script for writing text on github contribution chart.

Github Contribution Drawer Python script for writing text on github contribution chart. Requirements Python 3.X Getting Started Create repository Put

Steven 0 May 27, 2022
Friday Night Funkin - converts a chart from 4/4 time to 6/8 time, or from regular to swing tempo.

Chart to swing converter As seen in https://twitter.com/i_winxd/status/1462220493558366214 A program written in python that converts a chart from 4/4

5 Dec 23, 2022
Minimal Ethereum fee data viewer for the terminal, contained in a single python script.

Minimal Ethereum fee data viewer for the terminal, contained in a single python script. Connects to your node and displays some metrics in real-time.

48 Dec 05, 2022
view cool stats related to your discord account.

DiscoStats cool statistics generated using your discord data. How? DiscoStats is not a service that breaks the Discord Terms of Service or Community G

ibrahim hisham 5 Jun 02, 2022
A workshop on data visualization in Python with notebooks and exercises for following along.

Beyond the Basics: Data Visualization in Python The human brain excels at finding patterns in visual representations, which is why data visualizations

Stefanie Molin 162 Dec 05, 2022
Fast scatter density plots for Matplotlib

About Plotting millions of points can be slow. Real slow... 😴 So why not use density maps? ⚡ The mpl-scatter-density mini-package provides functional

Thomas Robitaille 473 Dec 12, 2022
Make visual music sheets for thatskygame (graphical representations of the Sky keyboard)

sky-python-music-sheet-maker This program lets you make visual music sheets for Sky: Children of the Light. It will ask you a few questions, and does

21 Aug 26, 2022
A Python Binder that merge 2 files with any extension by creating a new python file and compiling it to exe which runs both payloads.

Update ! ANONFILE MIGHT NOT WORK ! About A Python Binder that merge 2 files with any extension by creating a new python file and compiling it to exe w

Vesper 15 Oct 12, 2022
WhatsApp Chat Analyzer is a WebApp and it can be used by anyone to analyze their chat. 😄

WhatsApp-Chat-Analyzer You can view the working project here. WhatsApp chat Analyzer is a WebApp where anyone either tech or non-tech person can analy

Prem Chandra Singh 26 Nov 02, 2022
A shimmer pre-load component for Plotly Dash

dash-loading-shimmer A shimmer pre-load component for Plotly Dash Installation Get it with pip: pip install dash-loading-extras Or maybe you prefer Pi

Lucas Durand 4 Oct 12, 2022
This is a Boids Simulation, written in Python with Pygame.

PyNBoids A Python Boids Simulation This is a Boids simulation, written in Python3, with Pygame2 and NumPy. To use: Save the pynboids_sp.py file (and n

Nik 17 Dec 18, 2022
A deceptively simple plotting library for Streamlit

🍅 Plost A deceptively simple plotting library for Streamlit. Because you've been writing plots wrong all this time. Getting started pip install plost

Thiago Teixeira 192 Dec 29, 2022