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
Productivity Tools for Plotly + Pandas

Cufflinks This library binds the power of plotly with the flexibility of pandas for easy plotting. This library is available on https://github.com/san

Jorge Santos 2.7k Dec 30, 2022
:bowtie: Create a dashboard with python!

Installation | Documentation | Gitter Chat | Google Group Bowtie Introduction Bowtie is a library for writing dashboards in Python. No need to know we

Jacques Kvam 753 Dec 22, 2022
🌀❄️🌩️ This repository contains some examples for creating 2d and 3d weather plots using matplotlib and cartopy libraries in python3.

Weather-Plotting 🌀 ❄️ 🌩️ This repository contains some examples for creating 2d and 3d weather plots using matplotlib and cartopy libraries in pytho

Giannis Dravilas 21 Dec 10, 2022
Gallery of applications built using bqplot and widget libraries like ipywidgets, ipydatagrid etc.

bqplot Gallery This is a gallery of bqplot examples. View the gallery at https://bqplot.github.io/bqplot-gallery. Contributing new examples Clone this

8 Aug 23, 2022
This is a small repository for me to implement my simply Data Visualisation skills through Python.

Data Visualisations This is a small repository for me to implement my simply Data Visualisation skills through Python. Steam Population Chart from 10/

9 Dec 31, 2021
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
Movies-chart - A CLI app gets the top 250 movies of all time from imdb.com and the top 100 movies from rottentomatoes.com

movies-chart This CLI app gets the top 250 movies of all time from imdb.com and

3 Feb 17, 2022
flask extension for integration with the awesome pydantic package

Flask-Pydantic Flask extension for integration of the awesome pydantic package with Flask. Installation python3 -m pip install Flask-Pydantic Basics v

249 Jan 06, 2023
A tool for automatically generating 3D printable STLs from freely available lidar scan data.

mini-map-maker A tool for automatically generating 3D printable STLs from freely available lidar scan data. Screenshots Tutorial To use this script, g

Mike Abbott 51 Nov 06, 2022
Visualization ideas for data science

Nuance I use Nuance to curate varied visualization thoughts during my data scientist career. It is not yet a package but a list of small ideas. Welcom

Li Jiangchun 16 Nov 03, 2022
Pretty Confusion Matrix

Pretty Confusion Matrix Why pretty confusion matrix? We can make confusion matrix by using matplotlib. However it is not so pretty. I want to make con

Junseo Ko 5 Nov 22, 2022
GUI for visualization and interactive editing of SMPL-family body models ie. SMPL, SMPL-X, MANO, FLAME.

Body Model Visualizer Introduction This is a simple Open3D-based GUI for SMPL-family body models. This GUI lets you play with the shape, expression, a

Muhammed Kocabas 207 Jan 01, 2023
The implementation of the paper "HIST: A Graph-based Framework for Stock Trend Forecasting via Mining Concept-Oriented Shared Information".

The HIST framework for stock trend forecasting The implementation of the paper "HIST: A Graph-based Framework for Stock Trend Forecasting via Mining C

Wentao Xu 111 Jan 03, 2023
An easy to use burndown chart generator for GitHub Project Boards.

Burndown Chart for GitHub Projects An easy to use burndown chart generator for GitHub Project Boards. Table of Contents Features Installation Assumpti

Joseph Hale 15 Dec 28, 2022
Python+Numpy+OpenGL: fast, scalable and beautiful scientific visualization

Python+Numpy+OpenGL: fast, scalable and beautiful scientific visualization

Glumpy 1.1k Jan 05, 2023
Comparing USD and GBP Exchange Rates

Currency Data Visualization Comparing USD and GBP Exchange Rates This is a bar graph comparing GBP and USD exchange rates. I chose blue for the UK bec

5 Oct 28, 2021
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 694 Jan 04, 2023
Python package that generates hardware pinout diagrams as SVG images

PinOut A Python package that generates hardware pinout diagrams as SVG images. The package is designed to be quite flexible and works well for general

336 Dec 20, 2022
Python & Julia port of codes in excellent R books

X4DS This repo is a collection of Python & Julia port of codes in the following excellent R books: An Introduction to Statistical Learning (ISLR) Stat

Gitony 5 Jun 21, 2022
Graphical display tools, to help students debug their class implementations in the Carcassonne family of projects

carcassonne_tools Graphical display tools, to help students debug their class implementations in the Carcassonne family of projects NOTE NOTE NOTE The

1 Nov 08, 2021