Code Monkey home page Code Monkey logo

retentioneering / retentioneering-tools Goto Github PK

View Code? Open in Web Editor NEW
764.0 49.0 118.0 24.67 MB

Retentioneering: product analytics, data-driven CJM optimization, marketing analytics, web analytics, transaction analytics, graph visualization, process mining, and behavioral segmentation in Python. Predictive analytics over clickstream, AB tests, machine learning, and Markov Chain simulations.

Home Page: https://doc.retentioneering.com/stable/doc/index.html

License: Other

Python 99.40% HTML 0.49% Dockerfile 0.11%
product-analytics user-trajectories-analysis machine-learning predictive-analytics predictive-modeling clickstream business-intelligence segmentation customer-segmentation graph-visualizer

retentioneering-tools's People

Contributors

godzi avatar

Stargazers

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

Watchers

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

retentioneering-tools's Issues

ModuleNotFoundError: No module named 'itermplot'

Hi,

importing retentioneering causes this error:

Python 3.8.12 (default, Mar 15 2022, 12:23:51)
[Clang 12.0.5 (clang-1205.0.22.11)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import retentioneering
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/katya/.pyenv/versions/rete/lib/python3.8/site-packages/retentioneering/__init__.py", line 30, in <module>
    from retentioneering.core.config import config, init_config
  File "/Users/katya/.pyenv/versions/rete/lib/python3.8/site-packages/retentioneering/core/config.py", line 9, in <module>
    from .core_functions.base_dataset import BaseDataset
  File "/Users/katya/.pyenv/versions/rete/lib/python3.8/site-packages/retentioneering/core/core_functions/__init__.py", line 10, in <module>
    from .step_matrix import step_matrix
  File "/Users/katya/.pyenv/versions/rete/lib/python3.8/site-packages/retentioneering/core/core_functions/step_matrix.py", line 9, in <module>
    from retentioneering.visualization import plot_step_matrix
  File "/Users/katya/.pyenv/versions/rete/lib/python3.8/site-packages/retentioneering/visualization/plot_step_matrix.py", line 10, in <module>
    import matplotlib.pyplot as plt
  File "/Users/katya/.pyenv/versions/rete/lib/python3.8/site-packages/matplotlib/pyplot.py", line 2230, in <module>
    switch_backend(rcParams["backend"])
  File "/Users/katya/.pyenv/versions/rete/lib/python3.8/site-packages/matplotlib/pyplot.py", line 267, in switch_backend
    class backend_mod(matplotlib.backend_bases._Backend):
  File "/Users/katya/.pyenv/versions/rete/lib/python3.8/site-packages/matplotlib/pyplot.py", line 268, in backend_mod
    locals().update(vars(importlib.import_module(backend_name)))
  File "/Users/katya/.pyenv/versions/3.8.12/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named 'itermplot'
>>>

ImportError: cannot import name 'img_as_float32'

Hi guys

I tried to get through your "first steps" guide but it raised an error on the start

from retentioneering import init_config
import pandas as pd
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-21-fe4dd999c90a> in <module>()
----> 1 from retentioneering import init_config
      2 import pandas as pd

/anaconda3/lib/python3.6/site-packages/retentioneering/__init__.py in <module>()
----> 1 from retentioneering.core.utils import init_config
      2 from retentioneering.core.simulator import Simulator

/anaconda3/lib/python3.6/site-packages/retentioneering/core/utils.py in <module>()
     14 from retentioneering.visualization import plot
     15 from sklearn.linear_model import LogisticRegression
---> 16 from retentioneering.core.model import ModelDescriptor
     17 from retentioneering.core import node_metrics
     18 from retentioneering.core import preprocessing

/anaconda3/lib/python3.6/site-packages/retentioneering/core/model.py in <module>()
      5 
      6 
----> 7 import shap
      8 import eli5
      9 from eli5.sklearn import PermutationImportance

/anaconda3/lib/python3.6/site-packages/shap/__init__.py in <module>()
     10 from .explainers.linear import LinearExplainer
     11 from .explainers.partition import PartitionExplainer
---> 12 from .plots.summary import summary_plot
     13 from .plots.decision import decision_plot, multioutput_decision_plot
     14 from .plots.dependence import dependence_plot

/anaconda3/lib/python3.6/site-packages/shap/plots/summary.py in <module>()
     13     pass
     14 from . import labels
---> 15 from . import colors
     16 
     17 # TODO: remove unused title argument / use title argument

/anaconda3/lib/python3.6/site-packages/shap/plots/colors.py in <module>()
      5 
      6 import numpy as np
----> 7 import skimage.color
      8 
      9 try:

/anaconda3/lib/python3.6/site-packages/skimage/color/__init__.py in <module>()
----> 1 from .colorconv import (convert_colorspace,
      2                         guess_spatial_dimensions,
      3                         rgba2rgb,
      4                         rgb2hsv,
      5                         hsv2rgb,

/anaconda3/lib/python3.6/site-packages/skimage/color/colorconv.py in <module>()
     54 import numpy as np
     55 from scipy import linalg
---> 56 from ..util import dtype, dtype_limits
     57 
     58 

/anaconda3/lib/python3.6/site-packages/skimage/util/__init__.py in <module>()
----> 1 from .dtype import (img_as_float32, img_as_float64, img_as_float,
      2                     img_as_int, img_as_uint, img_as_ubyte,
      3                     img_as_bool, dtype_limits)
      4 from .shape import view_as_blocks, view_as_windows
      5 from .noise import random_noise

ImportError: cannot import name 'img_as_float32'

skimage version: 0.15.0

Plot ENDED edge on graph plot

Hi,
Is it possible to add an edge "ENDED" (like in Step Matrix) to the graph? It would helpfull to visualize from which steps the sequence was ended.

Hmm, if I'm not mistaken, it was possible in the previos version of retentioneering, no?

Error after installing via miniconda3

  1. Created new enviroment using miniconda3
  2. pip3 install retentioneering
  3. Got an error while starting python3 kernel «ImportError: DLL load failed while importing win32api»

Fixed it by:

pip install pywin32
python path\to\python\Scripts\pywin32_postinstall.py -install

'ValueError: too many values to unpack (expected 2)' in early steps tutorial

I am getting this error on

data.retention.get_clusters(plot_type='cluster_heatmap')

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-47-ea4770463931> in <module>()
----> 1 data.retention.get_clusters(plot_type='cluster_heatmap')

/anaconda3/lib/python3.6/site-packages/retentioneering/core/utils.py in get_clusters(self, plot_type, refit_cluster, method, **kwargs)
    450         if not hasattr(self, 'clusters') or refit_cluster:
    451             clusterer = getattr(clustering, method)
--> 452             self.clusters, self._metrics = clusterer(features, **kwargs)
    453             self._create_cluster_mapping(features.index.values)
    454 

ValueError: too many values to unpack (expected 2)

Same on

data.retention.get_clusters(n_clusters=8, plot_type='cluster_tsne', refit_cluster=True);

Loading custom data

Hi im having trouble applying the basic plot_graph example to my own dataset. I can reproduce the step matric example, but when trying to display the plot_graph, im getting the following exception

`

KeyError Traceback (most recent call last)
/opt/conda/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
2894 try:
-> 2895 return self._engine.get_loc(casted_key)
2896 except KeyError as err:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'type'

The above exception was the direct cause of the following exception:

KeyError Traceback (most recent call last)
/opt/conda/lib/python3.7/site-packages/pandas/core/generic.py in _set_item(self, key, value)
3573 try:
-> 3574 loc = self._info_axis.get_loc(key)
3575 except KeyError:

/opt/conda/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
2896 except KeyError as err:
-> 2897 raise KeyError(key) from err
2898

KeyError: 'type'

During handling of the above exception, another exception occurred:

ValueError Traceback (most recent call last)
in
1 user_events.rete.plot_graph(norm_type=None,
2 weight_col=None,
----> 3 thresh=250)

/opt/conda/lib/python3.7/site-packages/retentioneering/core/core_functions/plot_graph.py in plot_graph(self, targets, weight_col, norm_type, layout_dump, width, height, thresh)
102 width=width,
103 height=height,
--> 104 thresh=thresh)
105
106 # if work from google colab user HTML display:

/opt/conda/lib/python3.7/site-packages/retentioneering/visualization/plot_utils.py in save_plot_wrapper(*args, **kwargs)
19 sns.mpl.pyplot.show()
20 sns.mpl.pyplot.close()
---> 21 res = func(*args, **kwargs)
22 if len(res) == 2:
23 (vis_object, name), res, cfg = res, None, None

/opt/conda/lib/python3.7/site-packages/retentioneering/visualization/draw_graph.py in graph(data, node_params, thresh, width, height, interactive, layout_dump, show_percent, plot_name, node_weights, **kwargs)
227 height=round(height - height / 3),
228 node_weights=node_weights,
--> 229 **kwargs)
230
231 res['node_params'] = node_params

/opt/conda/lib/python3.7/site-packages/retentioneering/visualization/draw_graph.py in _make_json_data(data, node_params, layout_dump, thresh, width, height, **kwargs)
102 data["type"] = data.apply(
103 lambda x: node_params.get(x.source) if node_params.get(x.source) == 'source' else node_params.get(
--> 104 x.target) or 'suit', 1)
105
106 pos, degrees = _calc_layout(data, node_params, width=width, height=height, **kwargs)

/opt/conda/lib/python3.7/site-packages/pandas/core/frame.py in setitem(self, key, value)
3038 else:
3039 # set column
-> 3040 self._set_item(key, value)
3041
3042 def _setitem_slice(self, key: slice, value):

/opt/conda/lib/python3.7/site-packages/pandas/core/frame.py in _set_item(self, key, value)
3115 self._ensure_valid_index(value)
3116 value = self._sanitize_column(key, value)
-> 3117 NDFrame._set_item(self, key, value)
3118
3119 # check if we are modifying a copy

/opt/conda/lib/python3.7/site-packages/pandas/core/generic.py in _set_item(self, key, value)
3575 except KeyError:
3576 # This item wasn't present, just insert at end
-> 3577 self._mgr.insert(len(self._info_axis), key, value)
3578 return
3579

/opt/conda/lib/python3.7/site-packages/pandas/core/internals/managers.py in insert(self, loc, item, value, allow_duplicates)
1187 value = _safe_reshape(value, (1,) + value.shape)
1188
-> 1189 block = make_block(values=value, ndim=self.ndim, placement=slice(loc, loc + 1))
1190
1191 for blkno, count in _fast_count_smallints(self.blknos[loc:]):

/opt/conda/lib/python3.7/site-packages/pandas/core/internals/blocks.py in make_block(values, placement, klass, ndim, dtype)
2720 values = DatetimeArray._simple_new(values, dtype=dtype)
2721
-> 2722 return klass(values, ndim=ndim, placement=placement)
2723
2724

/opt/conda/lib/python3.7/site-packages/pandas/core/internals/blocks.py in init(self, values, placement, ndim)
2376 values = np.array(values, dtype=object)
2377
-> 2378 super().init(values, ndim=ndim, placement=placement)
2379
2380 @Property

/opt/conda/lib/python3.7/site-packages/pandas/core/internals/blocks.py in init(self, values, placement, ndim)
129 if self._validate_ndim and self.ndim and len(self.mgr_locs) != len(self.values):
130 raise ValueError(
--> 131 f"Wrong number of items passed {len(self.values)}, "
132 f"placement implies {len(self.mgr_locs)}"
133 )

ValueError: Wrong number of items passed 3, placement implies 1
`

Code snapshot
`
user_events.dtypes
user_id int64
event object
timestamp object
dtype: object

raises the exception

user_events.rete.plot_graph(norm_type=None,
weight_col=None,
thresh=250)

`

Any tips on this?

Thanks

Interactive examples

Hi retentioneering-tools team!

My team maintains a few open-source projects, and we've seen that having interactive examples greatly helps newcomers! We're maintaining a Binder cluster that provides ephemeral JupyterLab sessions (example). It essentially spins up a JupyterLab session with pre-made examples.

We're happy to sponsor retentioneering-tools with some computing power. If you're interested, please get in touch with me! (my contact info is in my profile)

ERROR: Could not build wheels for numpy

Got troubles with installation on macbook air m1.

python -V
Python 3.9.5

Part of the trace:

Building wheels for collected packages: numpy, llvmlite
  Building wheel for numpy (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Building wheel for numpy (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [893 lines of output]
      Running from numpy source directory.
      numpy/random/_bounded_integers.pxd.in has not changed
      numpy/random/_philox.pyx has not changed
      numpy/random/_bounded_integers.pyx.in has not changed
      numpy/random/_sfc64.pyx has not changed
      numpy/random/_mt19937.pyx has not changed
      numpy/random/bit_generator.pyx has not changed
      Processing numpy/random/_bounded_integers.pyx
      numpy/random/mtrand.pyx has not changed
      numpy/random/_generator.pyx has not changed
      numpy/random/_pcg64.pyx has not changed
      numpy/random/_common.pyx has not changed
      Cythonizing sources
      blas_opt_info:
      blas_mkl_info:
      customize UnixCCompiler
        libraries mkl_rt not found in ['/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE
      
      blis_info:
        libraries blis not found in ['/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE
      
      openblas_info:
        libraries openblas not found in ['/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE
      
      atlas_3_10_blas_threads_info:
      Setting PTATLAS=ATLAS
        libraries tatlas not found in ['/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE
      
      atlas_3_10_blas_info:
        libraries satlas not found in ['/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE
      
      atlas_blas_threads_info:
      Setting PTATLAS=ATLAS
        libraries ptf77blas,ptcblas,atlas not found in ['/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE
      
      atlas_blas_info:
        libraries f77blas,cblas,atlas not found in ['/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE
      
      accelerate_info:
        libraries accelerate not found in ['/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib', '/usr/local/lib', '/usr/lib']
      Library accelerate was not found. Ignoring
        libraries veclib not found in ['/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib', '/usr/local/lib', '/usr/lib']
      Library veclib was not found. Ignoring
        FOUND:
          extra_compile_args = ['-faltivec', '-I/System/Library/Frameworks/vecLib.framework/Headers']
          extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
          define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]
      
        FOUND:
          extra_compile_args = ['-faltivec', '-I/System/Library/Frameworks/vecLib.framework/Headers']
          extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
          define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]
      
      non-existing path in 'numpy/distutils': 'site.cfg'
      lapack_opt_info:
      lapack_mkl_info:
        libraries mkl_rt not found in ['/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE
      
      openblas_lapack_info:
        libraries openblas not found in ['/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE
      
      openblas_clapack_info:
        libraries openblas,lapack not found in ['/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE
      
      flame_info:
        libraries flame not found in ['/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib', '/usr/local/lib', '/usr/lib']
        NOT AVAILABLE
      
      atlas_3_10_threads_info:
      Setting PTATLAS=ATLAS
        libraries lapack_atlas not found in /Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib
        libraries tatlas,tatlas not found in /Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib
        libraries lapack_atlas not found in /usr/local/lib
        libraries tatlas,tatlas not found in /usr/local/lib
        libraries lapack_atlas not found in /usr/lib
        libraries tatlas,tatlas not found in /usr/lib
      <class 'numpy.distutils.system_info.atlas_3_10_threads_info'>
        NOT AVAILABLE
      
      atlas_3_10_info:
        libraries lapack_atlas not found in /Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib
        libraries satlas,satlas not found in /Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib
        libraries lapack_atlas not found in /usr/local/lib
        libraries satlas,satlas not found in /usr/local/lib
        libraries lapack_atlas not found in /usr/lib
        libraries satlas,satlas not found in /usr/lib
      <class 'numpy.distutils.system_info.atlas_3_10_info'>
        NOT AVAILABLE
      
      atlas_threads_info:
      Setting PTATLAS=ATLAS
        libraries lapack_atlas not found in /Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib
        libraries ptf77blas,ptcblas,atlas not found in /Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib
        libraries lapack_atlas not found in /usr/local/lib
        libraries ptf77blas,ptcblas,atlas not found in /usr/local/lib
        libraries lapack_atlas not found in /usr/lib
        libraries ptf77blas,ptcblas,atlas not found in /usr/lib
      <class 'numpy.distutils.system_info.atlas_threads_info'>
        NOT AVAILABLE
      
      atlas_info:
        libraries lapack_atlas not found in /Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib
        libraries f77blas,cblas,atlas not found in /Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/lib
        libraries lapack_atlas not found in /usr/local/lib
        libraries f77blas,cblas,atlas not found in /usr/local/lib
        libraries lapack_atlas not found in /usr/lib
        libraries f77blas,cblas,atlas not found in /usr/lib
      <class 'numpy.distutils.system_info.atlas_info'>
        NOT AVAILABLE
      
        FOUND:
          extra_compile_args = ['-faltivec', '-I/System/Library/Frameworks/vecLib.framework/Headers']
          extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
          define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]
      
      /private/var/folders/ws/ql7_7p_s7gbf_77z0hvwfw9w0000gn/T/pip-build-env-cxkr50mv/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py:275: UserWarning: Unknown distribution option: 'define_macros'
        warnings.warn(msg)
      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 py_modules sources
      building library "npymath" sources
      Could not locate executable gfortran
      Could not locate executable f95
      Could not locate executable f90
      Could not locate executable f77
      Could not locate executable xlf90
      Could not locate executable xlf
      Could not locate executable ifort
      Could not locate executable ifc
      Could not locate executable g77
      Could not locate executable g95
      Could not locate executable pgfortran
      don't know how to compile Fortran code on platform 'posix'
        adding 'build/src.macosx-12.1-arm64-3.9/numpy/core/src/npymath' to include_dirs.
      None - nothing done with h_files = ['build/src.macosx-12.1-arm64-3.9/numpy/core/src/npymath/npy_math_internal.h']
      building library "npysort" sources
        adding 'build/src.macosx-12.1-arm64-3.9/numpy/core/src/common' to include_dirs.
      None - nothing done with h_files = ['build/src.macosx-12.1-arm64-3.9/numpy/core/src/common/npy_sort.h', 'build/src.macosx-12.1-arm64-3.9/numpy/core/src/common/npy_partition.h', 'build/src.macosx-12.1-arm64-3.9/numpy/core/src/common/npy_binsearch.h']
      building library "npyrandom" sources
      building extension "numpy.core._multiarray_tests" sources
      building extension "numpy.core._multiarray_umath" sources
        adding 'build/src.macosx-12.1-arm64-3.9/numpy/core/src/umath' to include_dirs.
        adding 'build/src.macosx-12.1-arm64-3.9/numpy/core/src/npymath' to include_dirs.
        adding 'build/src.macosx-12.1-arm64-3.9/numpy/core/src/common' to include_dirs.
      numpy.core - nothing done with h_files = ['build/src.macosx-12.1-arm64-3.9/numpy/core/src/umath/funcs.inc', 'build/src.macosx-12.1-arm64-3.9/numpy/core/src/umath/simd.inc', 'build/src.macosx-12.1-arm64-3.9/numpy/core/src/umath/loops.h', 'build/src.macosx-12.1-arm64-3.9/numpy/core/src/umath/matmul.h', 'build/src.macosx-12.1-arm64-3.9/numpy/core/src/umath/clip.h', 'build/src.macosx-12.1-arm64-3.9/numpy/core/src/npymath/npy_math_internal.h', 'build/src.macosx-12.1-arm64-3.9/numpy/core/src/common/templ_common.h', 'build/src.macosx-12.1-arm64-3.9/numpy/core/include/numpy/config.h', 'build/src.macosx-12.1-arm64-3.9/numpy/core/include/numpy/_numpyconfig.h', 'build/src.macosx-12.1-arm64-3.9/numpy/core/include/numpy/__multiarray_api.h', 'build/src.macosx-12.1-arm64-3.9/numpy/core/include/numpy/__ufunc_api.h']
      
     ...


      copying numpy/tests/test_scripts.py -> build/lib.macosx-12.1-arm64-3.9/numpy/tests
      running build_clib
      customize UnixCCompiler
      customize UnixCCompiler using new_build_clib
      building 'npymath' library
      compiling C sources
      C compiler: clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include
      
      creating build/temp.macosx-12.1-arm64-3.9
      creating build/temp.macosx-12.1-arm64-3.9/numpy
      creating build/temp.macosx-12.1-arm64-3.9/numpy/core
      creating build/temp.macosx-12.1-arm64-3.9/numpy/core/src
      creating build/temp.macosx-12.1-arm64-3.9/numpy/core/src/npymath
      creating build/temp.macosx-12.1-arm64-3.9/build
      creating build/temp.macosx-12.1-arm64-3.9/build/src.macosx-12.1-arm64-3.9
      creating build/temp.macosx-12.1-arm64-3.9/build/src.macosx-12.1-arm64-3.9/numpy
      creating build/temp.macosx-12.1-arm64-3.9/build/src.macosx-12.1-arm64-3.9/numpy/core
      creating build/temp.macosx-12.1-arm64-3.9/build/src.macosx-12.1-arm64-3.9/numpy/core/src
      creating build/temp.macosx-12.1-arm64-3.9/build/src.macosx-12.1-arm64-3.9/numpy/core/src/npymath
      compile options: '-Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/npymath -Inumpy/core/include -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/include -I/Users/knodl/.pyenv/versions/3.9.5/include/python3.9 -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/common -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/npymath -c'
      clang: numpy/core/src/npymath/npy_math.c
      clang: numpy/core/src/npymath/halffloat.c
      clang: build/src.macosx-12.1-arm64-3.9/numpy/core/src/npymath/ieee754.c
      clang: build/src.macosx-12.1-arm64-3.9/numpy/core/src/npymath/npy_math_complex.c
      In file included from numpy/core/src/npymath/npy_math.c:9:
      numpy/core/src/npymath/npy_math_internal.h.src:490:21: warning: incompatible pointer types passing 'npy_longdouble *' (aka 'double *') to parameter of type 'long double *' [-Wincompatible-pointer-types]
          return modfl(x, iptr);
                          ^~~~
      /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include/math.h:394:52: note: passing argument to parameter here
      extern long double modfl(long double, long double *);
                                                         ^
      1 warning generated.
      ar: adding 4 object files to build/temp.macosx-12.1-arm64-3.9/libnpymath.a
      ranlib:@ build/temp.macosx-12.1-arm64-3.9/libnpymath.a
      building 'npysort' library
      compiling C sources
      C compiler: clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include
      
      creating build/temp.macosx-12.1-arm64-3.9/build/src.macosx-12.1-arm64-3.9/numpy/core/src/npysort
      compile options: '-Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/common -Inumpy/core/include -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/include -I/Users/knodl/.pyenv/versions/3.9.5/include/python3.9 -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/common -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/npymath -c'
      clang: build/src.macosx-12.1-arm64-3.9/numpy/core/src/npysort/quicksort.c
      clang: build/src.macosx-12.1-arm64-3.9/numpy/core/src/npysort/mergesort.c
      clang: build/src.macosx-12.1-arm64-3.9/numpy/core/src/npysort/timsort.c
      clang: build/src.macosx-12.1-arm64-3.9/numpy/core/src/npysort/heapsort.c
      clang: build/src.macosx-12.1-arm64-3.9/numpy/core/src/npysort/radixsort.c
      clang: build/src.macosx-12.1-arm64-3.9/numpy/core/src/npysort/selection.c
      clang: build/src.macosx-12.1-arm64-3.9/numpy/core/src/npysort/binsearch.c
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
              npy_intp k;
              ^~~~~~~~~~~
      numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
          else if (0 && kth == num - 1) {
                   ^
                   /* DISABLES CODE */ ( )
      22 warnings generated.
      ar: adding 7 object files to build/temp.macosx-12.1-arm64-3.9/libnpysort.a
      ranlib:@ build/temp.macosx-12.1-arm64-3.9/libnpysort.a
      building 'npyrandom' library
      compiling C sources
      C compiler: clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include
      
      creating build/temp.macosx-12.1-arm64-3.9/numpy/random
      creating build/temp.macosx-12.1-arm64-3.9/numpy/random/src
      creating build/temp.macosx-12.1-arm64-3.9/numpy/random/src/distributions
      compile options: '-Inumpy/core/include -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/include -I/Users/knodl/.pyenv/versions/3.9.5/include/python3.9 -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/common -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/npymath -c'
      clang: numpy/random/src/distributions/logfactorial.c
      clang: numpy/random/src/distributions/distributions.c
      clang: numpy/random/src/distributions/random_mvhg_marginals.c
      clang: numpy/random/src/distributions/random_mvhg_count.c
      clang: numpy/random/src/distributions/random_hypergeometric.c
      ar: adding 5 object files to build/temp.macosx-12.1-arm64-3.9/libnpyrandom.a
      ranlib:@ build/temp.macosx-12.1-arm64-3.9/libnpyrandom.a
      running build_ext
      customize UnixCCompiler
      customize UnixCCompiler using new_build_ext
      building 'numpy.core._multiarray_tests' extension
      compiling C sources
      C compiler: clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include
      
      creating build/temp.macosx-12.1-arm64-3.9/build/src.macosx-12.1-arm64-3.9/numpy/core/src/multiarray
      creating build/temp.macosx-12.1-arm64-3.9/numpy/core/src/common
      compile options: '-DNPY_INTERNAL_BUILD=1 -DHAVE_NPY_CONFIG_H=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -Inumpy/core/include -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/include -I/Users/knodl/.pyenv/versions/3.9.5/include/python3.9 -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/common -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/npymath -c'
      clang: build/src.macosx-12.1-arm64-3.9/numpy/core/src/multiarray/_multiarray_tests.c
      clang: numpy/core/src/common/mem_overlap.c
      In file included from numpy/core/src/multiarray/_multiarray_tests.c.src:7:
      In file included from numpy/core/include/numpy/npy_math.h:596:
      numpy/core/src/npymath/npy_math_internal.h.src:490:21: warning: incompatible pointer types passing 'npy_longdouble *' (aka 'double *') to parameter of type 'long double *' [-Wincompatible-pointer-types]
          return modfl(x, iptr);
                          ^~~~
      /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include/math.h:394:52: note: passing argument to parameter here
      extern long double modfl(long double, long double *);
                                                         ^
      numpy/core/src/multiarray/_multiarray_tests.c.src:1895:61: warning: format specifies type 'long double' but the argument has type 'npy_longdouble' (aka 'double') [-Wformat]
              PyOS_snprintf(str, sizeof(str), "%.*Lg", precision, x);
                                               ~~~~~              ^
                                               %.*g
      2 warnings generated.
      clang -bundle -undefined dynamic_lookup -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/readline/lib -L/Users/knodl/.pyenv/versions/3.9.5/lib -L/opt/homebrew/lib -L/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/lib -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/readline/lib -L/Users/knodl/.pyenv/versions/3.9.5/lib -L/opt/homebrew/lib -L/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/lib build/temp.macosx-12.1-arm64-3.9/build/src.macosx-12.1-arm64-3.9/numpy/core/src/multiarray/_multiarray_tests.o build/temp.macosx-12.1-arm64-3.9/numpy/core/src/common/mem_overlap.o -Lbuild/temp.macosx-12.1-arm64-3.9 -lnpymath -o build/lib.macosx-12.1-arm64-3.9/numpy/core/_multiarray_tests.cpython-39-darwin.so
      building 'numpy.core._multiarray_umath' extension
      compiling C sources
      C compiler: clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include
      
      creating build/temp.macosx-12.1-arm64-3.9/numpy/core/src/multiarray
      creating build/temp.macosx-12.1-arm64-3.9/numpy/core/src/umath
      creating build/temp.macosx-12.1-arm64-3.9/build/src.macosx-12.1-arm64-3.9/numpy/core/src/umath
      creating build/temp.macosx-12.1-arm64-3.9/build/src.macosx-12.1-arm64-3.9/numpy/core/src/common
      creating build/temp.macosx-12.1-arm64-3.9/private
      creating build/temp.macosx-12.1-arm64-3.9/private/var
      creating build/temp.macosx-12.1-arm64-3.9/private/var/folders
      creating build/temp.macosx-12.1-arm64-3.9/private/var/folders/ws
      creating build/temp.macosx-12.1-arm64-3.9/private/var/folders/ws/ql7_7p_s7gbf_77z0hvwfw9w0000gn
      creating build/temp.macosx-12.1-arm64-3.9/private/var/folders/ws/ql7_7p_s7gbf_77z0hvwfw9w0000gn/T
      creating build/temp.macosx-12.1-arm64-3.9/private/var/folders/ws/ql7_7p_s7gbf_77z0hvwfw9w0000gn/T/pip-install-4fdbvhnd
      creating build/temp.macosx-12.1-arm64-3.9/private/var/folders/ws/ql7_7p_s7gbf_77z0hvwfw9w0000gn/T/pip-install-4fdbvhnd/numpy_dafcb5869e1446f08f52deba357fec3d
      creating build/temp.macosx-12.1-arm64-3.9/private/var/folders/ws/ql7_7p_s7gbf_77z0hvwfw9w0000gn/T/pip-install-4fdbvhnd/numpy_dafcb5869e1446f08f52deba357fec3d/numpy
      creating build/temp.macosx-12.1-arm64-3.9/private/var/folders/ws/ql7_7p_s7gbf_77z0hvwfw9w0000gn/T/pip-install-4fdbvhnd/numpy_dafcb5869e1446f08f52deba357fec3d/numpy/_build_utils
      creating build/temp.macosx-12.1-arm64-3.9/private/var/folders/ws/ql7_7p_s7gbf_77z0hvwfw9w0000gn/T/pip-install-4fdbvhnd/numpy_dafcb5869e1446f08f52deba357fec3d/numpy/_build_utils/src
      compile options: '-DNPY_INTERNAL_BUILD=1 -DHAVE_NPY_CONFIG_H=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -DNO_ATLAS_INFO=3 -DHAVE_CBLAS -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/umath -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/npymath -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/common -Inumpy/core/include -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/include -I/Users/knodl/.pyenv/versions/3.9.5/include/python3.9 -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/common -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/npymath -c'
      extra options: '-faltivec -I/System/Library/Frameworks/vecLib.framework/Headers'
      clang: numpy/core/src/multiarray/alloc.c
      clang: numpy/core/src/multiarray/array_assign_scalar.c
      clang: numpy/core/src/multiarray/buffer.c
      clang: numpy/core/src/multiarray/datetime_strings.c
      clang: numpy/core/src/multiarray/conversion_utils.c
      clang: numpy/core/src/multiarray/common.c
      clang: build/src.macosx-12.1-arm64-3.9/numpy/core/src/multiarray/einsum.c
      clang: numpy/core/src/multiarray/descriptor.c
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: numpy/core/src/multiarray/hashdescr.c
      clang: build/src.macosx-12.1-arm64-3.9/numpy/core/src/multiarray/lowlevel_strided_loops.c
      clang: numpy/core/src/multiarray/multiarraymodule.c
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: numpy/core/src/multiarray/nditer_constr.c
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: numpy/core/src/multiarray/refcount.c
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: numpy/core/src/multiarray/temp_elide.c
      clang: numpy/core/src/multiarray/vdot.c
      clang: numpy/core/src/multiarray/scalarapi.c
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: build/src.macosx-12.1-arm64-3.9/numpy/core/src/umath/loops.c
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: numpy/core/src/umath/ufunc_type_resolution.c
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: numpy/core/src/umath/ufunc_object.c
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: numpy/core/src/common/array_assign.c
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: build/src.macosx-12.1-arm64-3.9/numpy/core/src/npymath/ieee754.c
      clang: build/src.macosx-12.1-arm64-3.9/numpy/core/src/common/npy_cpu_features.c
      clang: numpy/core/src/common/ucsnarrow.c
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: /private/var/folders/ws/ql7_7p_s7gbf_77z0hvwfw9w0000gn/T/pip-install-4fdbvhnd/numpy_dafcb5869e1446f08f52deba357fec3d/numpy/_build_utils/src/apple_sgemv_fix.c
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
      error: Command "clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include -DNPY_INTERNAL_BUILD=1 -DHAVE_NPY_CONFIG_H=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -DNO_ATLAS_INFO=3 -DHAVE_CBLAS -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/umath -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/npymath -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/common -Inumpy/core/include -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/include -I/Users/knodl/.pyenv/versions/3.9.5/include/python3.9 -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/common -Ibuild/src.macosx-12.1-arm64-3.9/numpy/core/src/npymath -c numpy/core/src/multiarray/alloc.c -o build/temp.macosx-12.1-arm64-3.9/numpy/core/src/multiarray/alloc.o -MMD -MF build/temp.macosx-12.1-arm64-3.9/numpy/core/src/multiarray/alloc.o.d -faltivec -I/System/Library/Frameworks/vecLib.framework/Headers" failed with exit status 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for numpy

  Building wheel for llvmlite (setup.py) ... error
  error: subprocess-exited-with-error
  
  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [11 lines of output]
      running bdist_wheel
      /Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/bin/python3.9 /private/var/folders/ws/ql7_7p_s7gbf_77z0hvwfw9w0000gn/T/pip-install-4fdbvhnd/llvmlite_008ed1517dfb4868be790fe2deeb4363/ffi/build.py
      LLVM version... Traceback (most recent call last):
        File "/private/var/folders/ws/ql7_7p_s7gbf_77z0hvwfw9w0000gn/T/pip-install-4fdbvhnd/llvmlite_008ed1517dfb4868be790fe2deeb4363/ffi/build.py", line 220, in <module>
          main()
        File "/private/var/folders/ws/ql7_7p_s7gbf_77z0hvwfw9w0000gn/T/pip-install-4fdbvhnd/llvmlite_008ed1517dfb4868be790fe2deeb4363/ffi/build.py", line 214, in main
          main_posix('osx', '.dylib')
        File "/private/var/folders/ws/ql7_7p_s7gbf_77z0hvwfw9w0000gn/T/pip-install-4fdbvhnd/llvmlite_008ed1517dfb4868be790fe2deeb4363/ffi/build.py", line 134, in main_posix
          raise RuntimeError(msg) from None
      RuntimeError: Could not find a `llvm-config` binary. There are a number of reasons this could occur, please see: https://llvmlite.readthedocs.io/en/latest/admin-guide/install.html#using-pip for help.
      error: command '/Users/knodl/.pyenv/versions/3.9.5/envs/retentioneering/bin/python3.9' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for llvmlite
  Running setup.py clean for llvmlite
Failed to build numpy llvmlite
ERROR: Could not build wheels for numpy, which is required to install pyproject.toml-based projects

Step Matrix Guidance

Love this library! I was using the step matrix method like so:

df.rete.step_matrix(max_steps=24, targets=['Confirmation'])

However, I was looking over a 48 hr period. Does this method have any session logic? For instance if User X went Home -> Product, exited the application, and then returned 4 hrs later to the home screen, this would be treated as his third screen correct? It would not start his journey over--correct?

Your starred Github rep for analytics is moved

Hi,

Python tools for user trajectories analysis Retentioneering are now moved. Previously started in App in the Air (https://github.com/appintheair/retentioneering-framework) it is now rebuilt, redeveloped and actively maintained by independent Retentioneering team at https://github.com/retentioneering/retentioneering-tools

Please join for best latest updates and new features, like better graph visualization in Python.

Watch, Star, Fork

Thanks,
Retentioneering team

ValueError on seaborn==0.11.2

Cell

data.rete.compare(groups=(test, control),
                  function=conversion,
                  test='mannwhitneyu',
                  group_names=('test','control'))'

in tutorial doesn't work and fails with ValueError: cannot reindex on an axis with duplicate labels error.
After downgrading to seaborn==0.11.1 error dissapear.

Plot titles and output to .png

To support the use case of sharing plots OUTSIDE of Jupyter (such as in a PowerPoint deck), have been looking at tweaks to the Quick Start plot examples:

title = 'Sankey'
fig = stream.step_sankey(max_steps=6, threshold=0.05, show_plot=False).plot()
fig.update_layout(title=title)
fig.write_image(f"{title}.png")

title = 'Clusters'
from retentioneering.tooling.clusters import Clusters
clusters = Clusters(stream)
X = clusters.extract_features(feature_type='tfidf', ngram_range=(1, 2))
clusters.fit(method='kmeans', n_clusters=8, X=X)
fig = clusters.plot(targets=['payment_done', 'cart'])
fig.title.set_text(title)
fig.get_figure().savefig(f"{title}.png", bbox_inches='tight')

title = 'Funnel'
fig = stream.funnel(stages=['catalog', 'cart', 'payment_done'], show_plot=False).plot()
fig.update_layout(title=title)
fig.write_image(f"{title}.png")

title = 'Heatmap'
fig = stream.cohorts(
cohort_start_unit='M',
cohort_period=(1, 'M'),
average=False,
show_plot=False
).heatmap()
fig.title.set_text(title)
fig.get_figure().savefig(f"{title}.png")

Any suggestions for similar programmatic (.png) outputs for Transition Graph and Step Matrix would be appreciated.

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.