GithubHelp home page GithubHelp logo

ffnet's People

Contributors

mathomp4 avatar mrkwjc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

ffnet's Issues

Import error with gcc-8

I have been able to install ffnet fine but I cannot import it.
import ffnet
gives the error:

ImportError: dlopen(/usr/local/lib/python3.7/site-packages/ffnet/fortran/_ffnet.cpython-37m-darwin.so, 2): Library not loaded: /usr/local/opt/gcc/lib/gcc/7/libgfortran.4.dylib
  Referenced from: /usr/local/lib/python3.7/site-packages/ffnet/fortran/_ffnet.cpython-37m-darwin.so
  Reason: image not found

Upon inspection it is because the path
/usr/local/opt/gcc/lib/gcc/7
doesn't exist, with my latest gcc it is
/usr/local/opt/gcc/lib/gcc/8
and even within that the file I imagine is the one needed is called libgfortran.5.dylib (libgfortran.4.dylib doesn't exist in the folder)

Is the current ffnet not compatible with gcc-8?

I am using macOS Mojave 10.14.3 and Python 3.7

ffnet throwing TypeError

Hi mrkwjc,
Many thanks for all your work on FFNET over the years.
I ran into a problem with FFNET today. The exception is below:
TypeError: object of type 'dictionary-keyiterator' has no len()
and is thrown at line 611 of ffnet.py:
n = len(self.graph.predecessors(trg))
The fix I used was to change line 611 of ffnet.py to:
n = len(list(self.graph.predecessors(trg)))
Other details are:
OS: Ubuntu 14.04
Python: Anaconda 2.7 (I can supply a list of installed packages and version numbers if required)
Cheers,
Peter

pip install ffnet issue

I try to pip the package in my ubantu18.04, but it give the following errors, could you help me ?

building 'ffnet.fortran._ffnet' extension
  error: extension 'ffnet.fortran._ffnet' has Fortran sources but no Fortran compiler found
  ----------------------------------------
  ERROR: Failed building wheel for ffnet

Cannot pip install ffnet on Big Sur

Trying to install ffnet on Big Sur using gcc 10.2.0 (installed with homebrew), and getting the following errors in Terminal. How can I troubleshoot this?

John@Yavin ~ % pip install ffnet
Collecting ffnet
  Using cached ffnet-0.8.4.tar.gz (55 kB)
Building wheels for collected packages: ffnet
  Building wheel for ffnet (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /Users/John/opt/anaconda3/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/w3/68lsfws53359vchfqbcsh0rw0000gn/T/pip-install-wmcmbx16/ffnet/setup.py'"'"'; __file__='"'"'/private/var/folders/w3/68lsfws53359vchfqbcsh0rw0000gn/T/pip-install-wmcmbx16/ffnet/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/w3/68lsfws53359vchfqbcsh0rw0000gn/T/pip-wheel-mi6sr06d
       cwd: /private/var/folders/w3/68lsfws53359vchfqbcsh0rw0000gn/T/pip-install-wmcmbx16/ffnet/
  Complete output (298 lines):
  running bdist_wheel
  running build
  running config_cc
  unifing config_cc, config, build_clib, build_ext, build commands --compiler options
  running config_fc
  unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
  running build_src
  build_src
  building extension "ffnet.fortran._ffnet" sources
  f2py options: []
  f2py:> build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnetmodule.c
  creating build
  creating build/src.macosx-10.9-x86_64-3.8
  creating build/src.macosx-10.9-x86_64-3.8/ffnet
  creating build/src.macosx-10.9-x86_64-3.8/ffnet/fortran
  Reading fortran codes...
  	Reading file 'ffnet/fortran/ffnet.f' (format:fix,strict)
  Post-processing...
  	Block: _ffnet
  			Block: prop
  			Block: sqerror
  			Block: grad
  			Block: recall
  			Block: diff
  			Block: func
  			Block: func2
  			Block: pikaiaff
  			Block: normcall
  			Block: normdiff
  			Block: normcall2
  			Block: normdiff2
  			Block: momentum
  			Block: rprop
  			Block: setin
  			Block: getout
  			Block: mapa
  			Block: dmapa
  			Block: vmapa
  			Block: mmapa
  Post-processing (stage 2)...
  Building modules...
  	Building module "_ffnet"...
  		Constructing wrapper function "prop"...
  		  units = prop(x,conec,units,[n,u])
  		Constructing wrapper function "sqerror"...
  		  sqerr = sqerror(x,conec,units,inno,outno,input,targ,[n,u,i,o,p])
  		Constructing wrapper function "grad"...
  		  xprime = grad(x,conec,bconecno,units,inno,outno,input,targ,[n,bn,u,i,o,p])
  		Constructing wrapper function "recall"...
  		  output = recall(x,conec,units,inno,outno,input,[n,u,i,o])
  		Constructing wrapper function "diff"...
  		  deriv = diff(x,conec,dconecno,dconecmk,units,inno,outno,input,[n,dn,u,i,o])
  		Constructing wrapper function "func"...
  		  sqerr = func(x,conec,bconecno,units,inno,outno,input,targ,[n,bn,u,i,o,p])
  		Constructing wrapper function "func2"...
  		  sqerr,xprime = func2(x,conec,bconecno,units,inno,outno,input,targ,[n,bn,u,i,o,p])
  		Constructing wrapper function "pikaiaff"...
  		  isqerr = pikaiaff(x,ffn,conec,units,inno,outno,input,targ,bound1,bound2,[n,u,i,o,p])
  		Constructing wrapper function "normcall"...
  		  output = normcall(x,conec,units,inno,outno,eni,deo,input,[n,u,i,o])
  		Constructing wrapper function "normdiff"...
  		  deriv = normdiff(x,conec,dconecno,dconecmk,units,inno,outno,eni,ded,input,[n,dn,u,i,o])
  		Constructing wrapper function "normcall2"...
  		  output = normcall2(x,conec,units,inno,outno,eni,deo,input,[n,u,i,o,p])
  		Constructing wrapper function "normdiff2"...
  		  deriv = normdiff2(x,conec,dconecno,dconecmk,units,inno,outno,eni,ded,input,[n,dn,u,i,o,p])
  		Constructing wrapper function "momentum"...
  		  x = momentum(x,conec,bconecno,units,inno,outno,input,targ,eta,moment,maxiter,[n,bn,u,i,o,p])
  		Constructing wrapper function "rprop"...
  		  x,xmi = rprop(x,conec,bconecno,units,inno,outno,input,targ,a,b,mimin,mimax,xmi,maxiter,[n,bn,u,i,o,p])
  		Constructing wrapper function "setin"...
  		  units = setin(input,inno,eni,units,[i,u])
  		Constructing wrapper function "getout"...
  		  output = getout(units,outno,deo,[u,o])
  		Creating wrapper for Fortran function "mapa"("mapa")...
  		Constructing wrapper function "mapa"...
  		  mapa = mapa(f,a,b,c,d)
  		Creating wrapper for Fortran function "dmapa"("dmapa")...
  		Constructing wrapper function "dmapa"...
  		  dmapa = dmapa(f,a,b,c,d)
  		Constructing wrapper function "vmapa"...
  		  vout = vmapa(vin,a,b,c,d,[n])
  		Constructing wrapper function "mmapa"...
  		  mmout = mmapa(mmin,a,b,c,d,[m,n])
  	Wrote C/API module "_ffnet" to file "build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnetmodule.c"
  	Fortran 77 wrappers are saved to "build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnet-f2pywrappers.f"
    adding 'build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/fortranobject.c' to sources.
    adding 'build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran' to include_dirs.
  creating build/src.macosx-10.9-x86_64-3.8/build
  creating build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8
  creating build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet
  creating build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran
  copying /Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/f2py/src/fortranobject.c -> build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran
  copying /Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/f2py/src/fortranobject.h -> build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran
    adding 'build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnet-f2pywrappers.f' to sources.
  building extension "ffnet.fortran._pikaia" sources
  f2py options: []
  f2py:> build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_pikaiamodule.c
  Reading fortran codes...
  	Reading file 'ffnet/fortran/pikaia.f' (format:fix,strict)
  Line #14 in ffnet/fortran/pikaia.f:"      external twod"
  	analyzeline: ignoring program arguments
  rmbadname1: Replacing "new" with "new_bn".
  rmbadname1: Replacing "new" with "new_bn".
  rmbadname1: Replacing "rank" with "rank_bn".
  rmbadname1: Replacing "rank" with "rank_bn".
  Post-processing...
  	Block: _pikaia
  			Block: xpkaia
  			Block: twod
  			Block: urand
  			Block: rninit
  			Block: ran0
  			Block: rqsort
  			Block: pikaia
  					Block: ff
  			Block: setctl
  			Block: report
  			Block: encode
  			Block: decode
  			Block: cross
  			Block: mutate
  			Block: adjmut
  			Block: select
  			Block: rnkpop
  			Block: genrep
  			Block: stdrep
  					Block: ff
  			Block: newpop
  					Block: ff
  Post-processing (stage 2)...
  Building modules...
  	Constructing call-back function "cb_ff_in_pikaia__user__routines"
  	  def ff(x,[n]): return f
  	Constructing call-back function "cb_ff_in_stdrep__user__routines"
  	  def ff(x,[n]): return f
  	Constructing call-back function "cb_ff_in_newpop__user__routines"
  	  def ff(x,[n]): return f
  	Building module "_pikaia"...
  		Creating wrapper for Fortran function "twod"("twod")...
  		Constructing wrapper function "twod"...
  		  twod = twod(x,[n])
  		Creating wrapper for Fortran function "urand"("urand")...
  		Constructing wrapper function "urand"...
  		  urand = urand()
  		Constructing wrapper function "rninit"...
  		  rninit(seed)
  		Creating wrapper for Fortran function "ran0"("ran0")...
  		Constructing wrapper function "ran0"...
  		  ran0 = ran0(seed)
  		Constructing wrapper function "rqsort"...
  		  p = rqsort(a,[n])
  		Constructing wrapper function "pikaia"...
  		  x,f,status = pikaia(ff,n,ctrl,[ff_extra_args])
  		Constructing wrapper function "setctl"...
  		  setctl(ctrl,n,np,ngen,nd,pcross,pmutmn,pmutmx,pmut,imut,fdif,irep,ielite,ivrb,status)
  		Constructing wrapper function "report"...
  		  report(ivrb,n,nd,oldph,fitns,ifit,pmut,ig,nnew,[ndim,np])
  		Constructing wrapper function "encode"...
  		  encode(nd,ph,gn,[n])
  		Constructing wrapper function "decode"...
  		  decode(nd,gn,ph,[n])
  		Constructing wrapper function "cross"...
  		  cross(n,nd,pcross,gn1,gn2)
  		Constructing wrapper function "mutate"...
  		  mutate(n,nd,pmut,gn,imut)
  		Constructing wrapper function "adjmut"...
  		  adjmut(n,oldph,fitns,ifit,pmutmn,pmutmx,pmut,imut,[ndim,np])
  		Constructing wrapper function "select"...
  		  select(jfit,fdif,idad,[np])
  		Constructing wrapper function "rnkpop"...
  		  rnkpop(arrin,indx,rank_bn,[n])
  		Constructing wrapper function "genrep"...
  		  genrep(n,ip,ph,newph,[ndim,np])
  		Constructing wrapper function "stdrep"...
  		  stdrep(ff,n,irep,ielite,ph,oldph,fitns,ifit,jfit,nnew,[ndim,np,ff_extra_args])
  		Constructing wrapper function "newpop"...
  		  newpop(ff,ielite,n,oldph,newph,ifit,jfit,fitns,nnew,[ndim,np,ff_extra_args])
  		Constructing COMMON block support for "rnseed"...
  		  iseed
  	Wrote C/API module "_pikaia" to file "build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_pikaiamodule.c"
  	Fortran 77 wrappers are saved to "build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_pikaia-f2pywrappers.f"
    adding 'build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/fortranobject.c' to sources.
    adding 'build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran' to include_dirs.
    adding 'build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_pikaia-f2pywrappers.f' to sources.
  build_src: building npy-pkg config files
  running build_py
  creating build/lib.macosx-10.9-x86_64-3.8
  creating build/lib.macosx-10.9-x86_64-3.8/ffnet
  copying ffnet/pikaia.py -> build/lib.macosx-10.9-x86_64-3.8/ffnet
  copying ffnet/_version.py -> build/lib.macosx-10.9-x86_64-3.8/ffnet
  copying ffnet/_py2f.py -> build/lib.macosx-10.9-x86_64-3.8/ffnet
  copying ffnet/__init__.py -> build/lib.macosx-10.9-x86_64-3.8/ffnet
  copying ffnet/_mpprop.py -> build/lib.macosx-10.9-x86_64-3.8/ffnet
  copying ffnet/ffnet.py -> build/lib.macosx-10.9-x86_64-3.8/ffnet
  copying ffnet/_tests.py -> build/lib.macosx-10.9-x86_64-3.8/ffnet
  copying ffnet/graphs.py -> build/lib.macosx-10.9-x86_64-3.8/ffnet
  creating build/lib.macosx-10.9-x86_64-3.8/ffnet/fortran
  copying ffnet/fortran/__init__.py -> build/lib.macosx-10.9-x86_64-3.8/ffnet/fortran
  copying ffnet/fortran/compile.py -> build/lib.macosx-10.9-x86_64-3.8/ffnet/fortran
  package init file 'examples/__init__.py' not found (or not a regular file)
  creating build/lib.macosx-10.9-x86_64-3.8/ffnet/examples
  copying examples/mptrain.py -> build/lib.macosx-10.9-x86_64-3.8/ffnet/examples
  copying examples/stock.py -> build/lib.macosx-10.9-x86_64-3.8/ffnet/examples
  copying examples/ocr.py -> build/lib.macosx-10.9-x86_64-3.8/ffnet/examples
  copying examples/xor.py -> build/lib.macosx-10.9-x86_64-3.8/ffnet/examples
  copying examples/sin.py -> build/lib.macosx-10.9-x86_64-3.8/ffnet/examples
  copying ffnet/fortran/ffnet.f -> build/lib.macosx-10.9-x86_64-3.8/ffnet/fortran
  copying ffnet/fortran/pikaia.f -> build/lib.macosx-10.9-x86_64-3.8/ffnet/fortran
  creating build/lib.macosx-10.9-x86_64-3.8/ffnet/examples/data
  copying examples/data/black-scholes.dat -> build/lib.macosx-10.9-x86_64-3.8/ffnet/examples/data
  copying examples/data/ocr.dat -> build/lib.macosx-10.9-x86_64-3.8/ffnet/examples/data
  Skipping optional fixer: buffer
  Skipping optional fixer: idioms
  Skipping optional fixer: set_literal
  Skipping optional fixer: ws_comma
  package init file 'examples/__init__.py' not found (or not a regular file)
  running build_ext
  customize UnixCCompiler
  customize UnixCCompiler using build_ext
  get_default_fcompiler: matching types: '['gnu95', 'nag', 'absoft', 'ibm', 'intel', 'gnu', 'g95', 'pg']'
  customize Gnu95FCompiler
  Found executable /usr/local/bin/gfortran
  customize Gnu95FCompiler
  customize Gnu95FCompiler using build_ext
  building 'ffnet.fortran._ffnet' extension
  compiling C sources
  C compiler: gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/John/opt/anaconda3/include -arch x86_64 -I/Users/John/opt/anaconda3/include -arch x86_64
  
  creating build/temp.macosx-10.9-x86_64-3.8/build
  creating build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8
  creating build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet
  creating build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran
  creating build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/build
  creating build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8
  creating build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet
  creating build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran
  compile options: '-Ibuild/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran -I/Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include -I/Users/John/opt/anaconda3/include/python3.8 -c'
  gcc: build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnetmodule.c
  gcc: build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/fortranobject.c
  In file included from build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/fortranobject.c:2:
  In file included from build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/fortranobject.h:13:
  In file included from /Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include/numpy/arrayobject.h:4:
  In file included from /Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include/numpy/ndarrayobject.h:12:
  In file included from /Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include/numpy/ndarraytypes.h:1822:
  /Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: "Using deprecated NumPy API, disable it with "          "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-W#warnings]
  #warning "Using deprecated NumPy API, disable it with " \
   ^
  In file included from build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnetmodule.c:16:
  In file included from build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/fortranobject.h:13:
  In file included from /Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include/numpy/arrayobject.h:4:
  In file included from /Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include/numpy/ndarrayobject.h:12:
  In file included from /Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include/numpy/ndarraytypes.h:1822:
  /Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: "Using deprecated NumPy API, disable it with "          "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-W#warnings]
  #warning "Using deprecated NumPy API, disable it with " \
   ^
  build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnetmodule.c:144:12: warning: unused function 'f2py_size' [-Wunused-function]
  static int f2py_size(PyArrayObject* var, ...)
             ^
  1 warning generated.
  2 warnings generated.
  compiling Fortran sources
  Fortran f77 compiler: /usr/local/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -arch x86_64 -fPIC -O3 -funroll-loops
  Fortran f90 compiler: /usr/local/bin/gfortran -Wall -g -fno-second-underscore -arch x86_64 -fPIC -O3 -funroll-loops
  Fortran fix compiler: /usr/local/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -Wall -g -fno-second-underscore -arch x86_64 -fPIC -O3 -funroll-loops
  creating build/temp.macosx-10.9-x86_64-3.8/ffnet
  creating build/temp.macosx-10.9-x86_64-3.8/ffnet/fortran
  compile options: '-Ibuild/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran -I/Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include -I/Users/John/opt/anaconda3/include/python3.8 -c'
  gfortran:f77: build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnet-f2pywrappers.f
  gfortran:f77: ffnet/fortran/ffnet.f
  f951: Warning: Nonconforming tab character in column 1 of line 232 [-Wtabs]
  f951: Warning: Nonconforming tab character in column 1 of line 244 [-Wtabs]
  f951: Warning: Nonconforming tab character in column 1 of line 266 [-Wtabs]
  f951: Warning: Nonconforming tab character in column 1 of line 474 [-Wtabs]
  f951: Warning: Nonconforming tab character in column 1 of line 487 [-Wtabs]
  f951: Warning: Nonconforming tab character in column 1 of line 509 [-Wtabs]
  f951: Warning: Nonconforming tab character in column 1 of line 623 [-Wtabs]
  f951: Warning: Nonconforming tab character in column 1 of line 663 [-Wtabs]
  f951: Warning: Nonconforming tab character in column 1 of line 814 [-Wtabs]
  ffnet/fortran/ffnet.f:285:43:
  
    285 |       subroutine func(x, conec, n, bconecno, bn, units, u, inno, i,
        |                                           1
  Warning: Unused dummy argument 'bconecno' at (1) [-Wunused-dummy-argument]
  ffnet/fortran/ffnet.f:385:32:
  
    385 |       subroutine pikaiaff(x, ffn, conec, n, units, u, inno, i, outno, o,
        |                                1
  Warning: Unused dummy argument 'ffn' at (1) [-Wunused-dummy-argument]
  ffnet/fortran/ffnet.f:754:22:
  
    754 |       function dmapa(f, a, b, c, d)
        |                      1
  Warning: Unused dummy argument 'f' at (1) [-Wunused-dummy-argument]
  /usr/local/bin/gfortran -Wall -g -arch x86_64 -Wall -g -undefined dynamic_lookup -bundle build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnetmodule.o build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/fortranobject.o build/temp.macosx-10.9-x86_64-3.8/ffnet/fortran/ffnet.o build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnet-f2pywrappers.o -L/usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0 -L/usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/../../.. -L/usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/../../.. -lgfortran -o build/lib.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnet.cpython-38-darwin.so
  ld: library not found for -lSystem
  collect2: error: ld returned 1 exit status
  error: Command "/usr/local/bin/gfortran -Wall -g -arch x86_64 -Wall -g -undefined dynamic_lookup -bundle build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnetmodule.o build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/fortranobject.o build/temp.macosx-10.9-x86_64-3.8/ffnet/fortran/ffnet.o build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnet-f2pywrappers.o -L/usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0 -L/usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/../../.. -L/usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/../../.. -lgfortran -o build/lib.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnet.cpython-38-darwin.so" failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for ffnet
  Running setup.py clean for ffnet
Failed to build ffnet
Installing collected packages: ffnet
    Running setup.py install for ffnet ... error
    ERROR: Command errored out with exit status 1:
     command: /Users/John/opt/anaconda3/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/w3/68lsfws53359vchfqbcsh0rw0000gn/T/pip-install-wmcmbx16/ffnet/setup.py'"'"'; __file__='"'"'/private/var/folders/w3/68lsfws53359vchfqbcsh0rw0000gn/T/pip-install-wmcmbx16/ffnet/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/w3/68lsfws53359vchfqbcsh0rw0000gn/T/pip-record-1xrro0eg/install-record.txt --single-version-externally-managed --compile --install-headers /Users/John/opt/anaconda3/include/python3.8/ffnet
         cwd: /private/var/folders/w3/68lsfws53359vchfqbcsh0rw0000gn/T/pip-install-wmcmbx16/ffnet/
    Complete output (103 lines):
    running install
    running build
    running config_cc
    unifing config_cc, config, build_clib, build_ext, build commands --compiler options
    running config_fc
    unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
    running build_src
    build_src
    building extension "ffnet.fortran._ffnet" sources
    f2py options: []
      adding 'build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/fortranobject.c' to sources.
      adding 'build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran' to include_dirs.
      adding 'build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnet-f2pywrappers.f' to sources.
    building extension "ffnet.fortran._pikaia" sources
    f2py options: []
      adding 'build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/fortranobject.c' to sources.
      adding 'build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran' to include_dirs.
      adding 'build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_pikaia-f2pywrappers.f' to sources.
    build_src: building npy-pkg config files
    running build_py
    package init file 'examples/__init__.py' not found (or not a regular file)
    package init file 'examples/__init__.py' not found (or not a regular file)
    running build_ext
    customize UnixCCompiler
    customize UnixCCompiler using build_ext
    get_default_fcompiler: matching types: '['gnu95', 'nag', 'absoft', 'ibm', 'intel', 'gnu', 'g95', 'pg']'
    customize Gnu95FCompiler
    Found executable /usr/local/bin/gfortran
    customize Gnu95FCompiler
    customize Gnu95FCompiler using build_ext
    building 'ffnet.fortran._ffnet' extension
    compiling C sources
    C compiler: gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/John/opt/anaconda3/include -arch x86_64 -I/Users/John/opt/anaconda3/include -arch x86_64
    
    creating build/temp.macosx-10.9-x86_64-3.8/build
    creating build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8
    creating build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet
    creating build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran
    creating build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/build
    creating build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8
    creating build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet
    creating build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran
    compile options: '-Ibuild/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran -I/Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include -I/Users/John/opt/anaconda3/include/python3.8 -c'
    gcc: build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnetmodule.c
    gcc: build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/fortranobject.c
    In file included from build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnetmodule.c:16:
    In file included from build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/fortranobject.h:13:
    In file included from /Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include/numpy/arrayobject.h:4:
    In file included from /Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include/numpy/ndarrayobject.h:12:
    In file included from /Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include/numpy/ndarraytypes.h:1822:
    /Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: "Using deprecated NumPy API, disable it with "          "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-W#warnings]
    #warning "Using deprecated NumPy API, disable it with " \
     ^
    In file included from build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/fortranobject.c:2:
    In file included from build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/fortranobject.h:13:
    In file included from /Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include/numpy/arrayobject.h:4:
    In file included from /Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include/numpy/ndarrayobject.h:12:
    In file included from /Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include/numpy/ndarraytypes.h:1822:
    /Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: "Using deprecated NumPy API, disable it with "          "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-W#warnings]
    #warning "Using deprecated NumPy API, disable it with " \
     ^
    build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnetmodule.c:144:12: warning: unused function 'f2py_size' [-Wunused-function]
    static int f2py_size(PyArrayObject* var, ...)
               ^
    1 warning generated.
    2 warnings generated.
    compiling Fortran sources
    Fortran f77 compiler: /usr/local/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -arch x86_64 -fPIC -O3 -funroll-loops
    Fortran f90 compiler: /usr/local/bin/gfortran -Wall -g -fno-second-underscore -arch x86_64 -fPIC -O3 -funroll-loops
    Fortran fix compiler: /usr/local/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -Wall -g -fno-second-underscore -arch x86_64 -fPIC -O3 -funroll-loops
    creating build/temp.macosx-10.9-x86_64-3.8/ffnet
    creating build/temp.macosx-10.9-x86_64-3.8/ffnet/fortran
    compile options: '-Ibuild/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran -I/Users/John/opt/anaconda3/lib/python3.8/site-packages/numpy/core/include -I/Users/John/opt/anaconda3/include/python3.8 -c'
    gfortran:f77: ffnet/fortran/ffnet.f
    gfortran:f77: build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnet-f2pywrappers.f
    f951: Warning: Nonconforming tab character in column 1 of line 232 [-Wtabs]
    f951: Warning: Nonconforming tab character in column 1 of line 244 [-Wtabs]
    f951: Warning: Nonconforming tab character in column 1 of line 266 [-Wtabs]
    f951: Warning: Nonconforming tab character in column 1 of line 474 [-Wtabs]
    f951: Warning: Nonconforming tab character in column 1 of line 487 [-Wtabs]
    f951: Warning: Nonconforming tab character in column 1 of line 509 [-Wtabs]
    f951: Warning: Nonconforming tab character in column 1 of line 623 [-Wtabs]
    f951: Warning: Nonconforming tab character in column 1 of line 663 [-Wtabs]
    f951: Warning: Nonconforming tab character in column 1 of line 814 [-Wtabs]
    ffnet/fortran/ffnet.f:285:43:
    
      285 |       subroutine func(x, conec, n, bconecno, bn, units, u, inno, i,
          |                                           1
    Warning: Unused dummy argument 'bconecno' at (1) [-Wunused-dummy-argument]
    ffnet/fortran/ffnet.f:385:32:
    
      385 |       subroutine pikaiaff(x, ffn, conec, n, units, u, inno, i, outno, o,
          |                                1
    Warning: Unused dummy argument 'ffn' at (1) [-Wunused-dummy-argument]
    ffnet/fortran/ffnet.f:754:22:
    
      754 |       function dmapa(f, a, b, c, d)
          |                      1
    Warning: Unused dummy argument 'f' at (1) [-Wunused-dummy-argument]
    /usr/local/bin/gfortran -Wall -g -arch x86_64 -Wall -g -undefined dynamic_lookup -bundle build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnetmodule.o build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/fortranobject.o build/temp.macosx-10.9-x86_64-3.8/ffnet/fortran/ffnet.o build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnet-f2pywrappers.o -L/usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0 -L/usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/../../.. -L/usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/../../.. -lgfortran -o build/lib.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnet.cpython-38-darwin.so
    ld: library not found for -lSystem
    collect2: error: ld returned 1 exit status
    error: Command "/usr/local/bin/gfortran -Wall -g -arch x86_64 -Wall -g -undefined dynamic_lookup -bundle build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnetmodule.o build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/fortranobject.o build/temp.macosx-10.9-x86_64-3.8/ffnet/fortran/ffnet.o build/temp.macosx-10.9-x86_64-3.8/build/src.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnet-f2pywrappers.o -L/usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0 -L/usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/../../.. -L/usr/local/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/../../.. -lgfortran -o build/lib.macosx-10.9-x86_64-3.8/ffnet/fortran/_ffnet.cpython-38-darwin.so" failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /Users/John/opt/anaconda3/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/w3/68lsfws53359vchfqbcsh0rw0000gn/T/pip-install-wmcmbx16/ffnet/setup.py'"'"'; __file__='"'"'/private/var/folders/w3/68lsfws53359vchfqbcsh0rw0000gn/T/pip-install-wmcmbx16/ffnet/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/w3/68lsfws53359vchfqbcsh0rw0000gn/T/pip-record-1xrro0eg/install-record.txt --single-version-externally-managed --compile --install-headers /Users/John/opt/anaconda3/include/python3.8/ffnet Check the logs for full command output.

Running setup.py bdist_wheel for ffnet ... error

I'm running into errors building ffnet. Any guidance will be appreciated. A log is attached. A few of the more relevant output lines are given below:

Running setup.py bdist_wheel for ffnet ... error
...
  gfortran:f77: ffnet/fortran/ffnet.f
[ffnet_install.txt](https://github.com/mrkwjc/ffnet/files/155311/ffnet_install.txt)
[ffnet_install.txt](https://github.com/mrkwjc/ffnet/files/155314/ffnet_install.txt)


  dyld: Library not loaded: /usr/local/opt/isl/lib/libisl.15.dylib
    Referenced from: /usr/local/Cellar/gcc/5.3.0/libexec/gcc/x86_64-apple-darwin15.0.0/5.3.0/f951
    Reason: image not found
  gfortran: internal compiler error: Trace/BPT trap: 5 (program f951)
  Please submit a full bug report,
  with preprocessed source if appropriate.
  See <https://github.com/Homebrew/homebrew/issues> for instructions.
  dyld: Library not loaded: /usr/local/opt/isl/lib/libisl.15.dylib
    Referenced from: /usr/local/Cellar/gcc/5.3.0/libexec/gcc/x86_64-apple-darwin15.0.0/5.3.0/f951
    Reason: image not found
  gfortran: internal compiler error: Trace/BPT trap: 5 (program f951)
  Please submit a full bug report,
  with preprocessed source if appropriate.
  See <https://github.com/Homebrew/homebrew/issues> for instructions.
  error: Command "/usr/local/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -m64 -fPIC -O3 -funroll-loops -Ibuild/src.macosx-10.5-x86_64-2.7 -I/Users/xyz/packages/anaconda2/lib/python2.7/site-packages/numpy/core/include -I/Users/xyz/packages/anaconda2/include/python2.7 -c -c ffnet/fortran/ffnet.f -o build/temp.macosx-10.5-x86_64-2.7/ffnet/fortran/ffnet.o" failed with exit status 4

  ----------------------------------------
  Failed building wheel for ffnet

...

15-209:packages xyz$ which gfortran
/usr/local/bin/gfortran
15-209:packages xyz$ gfortran --version
GNU Fortran (Homebrew gcc 5.3.0) 5.3.0

ffnet_install.txt

Possible Python 3.6 Package in Conda?

@mrkwjc Would it be possible for you to make/add a Python 3.6 package for ffnet? (If this is a thing? I don't really know how conda packages work.)

I'm working on trying to setup an Anaconda3 5.2.0 distribution, but one of my users needs ffnet. The problem is that once I conda install -y -c mwojcikowski ffnet conda then has to downgrade/update (I'm honestly not sure which) a lot of packages because it's py35 not py36:

The following packages will be UPDATED:

    _ipyw_jlab_nb_ext_conf:             0.1.0-py36he11e457_0                 --> 0.1.0-py35_0           
    alabaster:                          0.7.10-py36h306e16b_0                --> 0.7.11-py35_0          
    anaconda-client:                    1.6.14-py36_0                        --> 1.7.2-py35_0           
    anaconda-navigator:                 1.8.7-py36_0                         --> 1.9.2-py35_0           
    anaconda-project:                   0.8.2-py36h44fb852_0                 --> 0.8.2-py35_0           
...
The following packages will be REMOVED:

    anaconda:                           5.2.0-py36_3                        
...
The following packages will be DOWNGRADED:

    python:                             3.6.5-hc3d631a_2                     --> 3.5.5-hc3d631a_4       

I'm going to try using python3 setup.py install as a workaround for now.

Genetic algorithm training

Can anybody provide an example of how to train a network with a genetic algorithm using ffnet? Pseudocode for the GA part would suffice. I'd like to use DEAP (https://deap.readthedocs.io/en/master/) to train a NN using a simulation as fitness function. I just want to make sure I'm using ffnet the right (and best) way. Thanks.

Issue installing ffnet with python 3.12

I recently tried to install ffnet from this repo and I got:

7366   │ Collecting git+https://github.com/mrkwjc/ffnet
7367   │   Cloning https://github.com/mrkwjc/ffnet to /tmp/pip-req-build-r4u80rit
7368   │   Running command git clone --filter=blob:none --quiet https://github.com/mrkwjc/ffnet /tmp/pip-req-build-r4u80rit
7369   │   Resolved https://github.com/mrkwjc/ffnet to commit 0759200adb0ca6544874fa233da4f12f04dee228
7370   │   Preparing metadata (setup.py): started
7371   │   Preparing metadata (setup.py): finished with status 'done'
7372   │ Building wheels for collected packages: ffnet
7373   │   Building wheel for ffnet (setup.py): started
7374   │   Building wheel for ffnet (setup.py): finished with status 'error'
7375   │   error: subprocess-exited-with-error
7376   │
7377   │   × python setup.py bdist_wheel did not run successfully.
7378   │   │ exit code: 1
7379   │   ╰─> [6 lines of output]
7380   │       Traceback (most recent call last):
7381   │         File "<string>", line 2, in <module>
7382   │         File "<pip-setuptools-caller>", line 34, in <module>
7383   │         File "/tmp/pip-req-build-r4u80rit/setup.py", line 26, in <module>
7384   │           from numpy.distutils.core import setup
7385   │       ModuleNotFoundError: No module named 'numpy.distutils'
7386   │       [end of output]
7387   │
7388   │   note: This error originates from a subprocess, and is likely not a problem with pip.
7389   │   ERROR: Failed building wheel for ffnet
7390   │   Running setup.py clean for ffnet
7391   │ Failed to build ffnet
7392   │ ERROR: Could not build wheels for ffnet, which is required to install pyproject.toml-based projects

If I try this command with python3.11 I see:

$ python3 --version
Python 3.11.6
$ python3 -c 'from numpy.distutils.core import setup'
<string>:1: DeprecationWarning:

  `numpy.distutils` is deprecated since NumPy 1.23.0, as a result
  of the deprecation of `distutils` itself. It will be removed for
  Python >= 3.12. For older Python versions it will remain present.
  It is recommended to use `setuptools < 60.0` for those Python versions.
  For more details, see:
    https://numpy.org/devdocs/reference/distutils_status_migration.html

and with python3.12:

$ python3 --version
Python 3.12.2
mathomp4@discover31 ~
$ python3 -c 'from numpy.distutils.core import setup'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'numpy.distutils'

As the message says, it looks like numpy.distutils is now gone and they recommend looking at:

https://numpy.org/devdocs/reference/distutils_status_migration.html

and unfortunately it looks like setuptools does not have Fortran support, so this might mean a move to meson. I see many people having to do this on GitHub (see scipy/scipy#13615). If I had a choice, I'd prefer CMake if only because I don't think meson is installed on any of my machines (but maybe with pip this doesn't matter?). Though looking at things like scikit-fmm/scikit-fmm#78 (comment), maybe meson is "winning"...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.