Giter VIP home page Giter VIP logo

libsemigroups_cppyy's Introduction

libsemigroups_cppyy

Binder Build Status

libsemigroups_cppyy is an experimental package for using the C++ library libsemigroups in python via cppyy.

Installation

Install libsemigroups, via its sources or conda package.

By conda: Add conda-forge to an installation of anaconda:

conda config --add channels conda-forge

And then download libsemigroups, specifying the version (1.0.6)

conda install libsemigroups=1.0.6

Then install cppyy and networkx via conda or pip:

conda install cppyy
conda install networkx

To use cppyy, note you will need gcc.

Finally, for normal use, git clone this repository and then run:

pip install .

Refer to demo.ipynb for more functionality.

Docker

If you have Docker installed, you can download this container using:

docker pull libsemigroups/libsemigroups_cppyy

The docker container for libsemigroups_cppyy can be started by typing:

docker run --rm -it libsemigroups/libsemigroups_cppyy

and in the docker container you can start python by typing:

python3

Load the libsemigroups_cppyy package in python by typing

import libsemigroups_cppyy

libsemigroups_cppyy's People

Contributors

hivert avatar james-d-mitchell avatar joshp112358 avatar mtwhyte avatar nthiery avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

libsemigroups_cppyy's Issues

Add a conda feedstock

This would allow a full installation of libsemigroups_cppyy to be achieved via conda -c conda-forge install libsemigroups_cppyy.

This happens, which is bad.

>>> S = FroidurePin(Transformation([1, 0]))
>>> S.cbegin_idempotents()
input_line_60:6:219: error: 'IteratorPairFirstTraits' is a private member of
      'libsemigroups::FroidurePin<libsemigroups::Transformation<unsigned char>,
      libsemigroups::FroidurePinTraits<libsemigroups::Transformation<unsigned
      char> > >'
  ...char> > >::IteratorPairFirstTraits>) (((libsemigroups::FroidurePin<libse...
                ^
/usr/local/include/libsemigroups/froidure-pin-impl.hpp:1593:24: note: declared private here
  struct FROIDURE_PIN::IteratorPairFirstTraits
                       ^
input_line_60:6:409: error: no member named 'cbegin_idempotents' in
      'libsemigroups::FroidurePin<libsemigroups::Transformation<unsigned char>,
      libsemigroups::FroidurePinTraits<libsemigroups::Transformation<unsigned
      char> > >'
  ...((libsemigroups::FroidurePin<libsemigroups::Transformation<unsigned char>,libsemigroups::FroidurePinTraits<libsemigroups::Transformation<unsigned char> > >*)obj)->c...
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^
input_line_60:10:170: error: no member named 'cbegin_idempotents' in
      'libsemigroups::FroidurePin<libsemigroups::Transformation<unsigned char>,
      libsemigroups::FroidurePinTraits<libsemigroups::Transformation<unsigned
      char> > >'
  ...((libsemigroups::FroidurePin<libsemigroups::Transformation<unsigned char>,libsemigroups::FroidurePinTraits<libsemigroups::Transformation<unsigned char> > >*)obj)->c...
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^
Error in <TClingCallFunc::make_wrapper>: Failed to compile
  ==== SOURCE BEGIN ====
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wformat-security"
__attribute__((used)) extern "C" void __cf_23(void* obj, int nargs, void** args, void* ret)
{
   if (ret) {
      new (ret) (libsemigroups::detail::ConstIteratorStateless<libsemigroups::FroidurePin<libsemigroups::Transformation<unsigned char>,libsemigroups::FroidurePinTraits<libsemigroups::Transformation<unsigned char> > >::IteratorPairFirstTraits>) (((libsemigroups::FroidurePin<libsemigroups::Transformation<unsigned char>,libsemigroups::FroidurePinTraits<libsemigroups::Transformation<unsigned char> > >*)obj)->cbegin_idempotents());
      return;
   }
   else {
      ((libsemigroups::FroidurePin<libsemigroups::Transformation<unsigned char>,libsemigroups::FroidurePinTraits<libsemigroups::Transformation<unsigned char> > >*)obj)->cbegin_idempotents();
      return;
   }
}
#pragma clang diagnostic pop
  ==== SOURCE END ====
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: libsemigroups::detail::ConstIteratorStateless<libsemigroups::FroidurePin<libsemigroups::Transformation<unsigned char>,libsemigroups::FroidurePinTraits<libsemigroups::Transformation<unsigned char> > >::IteratorPairFirstTraits> libsemigroups::FroidurePin<libsemigroups::Transformation<unsigned char>,libsemigroups::FroidurePinTraits<libsemigroups::Transformation<unsigned char> > >::cbegin_idempotents() =>
    ValueError: nullptr result where temporary expected
>>>

Add to PyPI

This would allow libsemigroups_cppyy to be pip installed, this would still require libsemigroups itself to system installed.

Construction of transformation doesn't complete with fixed points.

Python 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from libsemigroups_cppyy import Transformation
>>> Transformation([9, 3, 1, 2, 0, 8, 1, 2, 0, 5])
Transformation([9, 3, 1, 2, 0, 8, 1, 2, 0, 5, 0, 0, 0, 0, 0, 0])

This should be

Transformation([9, 3, 1, 2, 0, 8, 1, 2, 0, 5, 10, 11, 12, 13, 14, 15])

In HPCombi

PTransf16({}) == PTransf16::one();

congruence by pairs error

This happens

In [1]: from libsemigroups_cppyy import CongruenceByPairs, FroidurePin, Transfor
...: mation

In [2]: S = FroidurePin(Transformation([1,2,3,0]), Transformation([1,0,2,3]))

In [3]: C_right = CongruenceByPairs("right",S)
hai

TypeError Traceback (most recent call last)
in
----> 1 C_right = CongruenceByPairs("right",S)

~/Desktop/libsemigroups_cppyy/libsemigroups_cppyy/cong_pair.py in CongruenceByPairs(t, S)
30 raise TypeError('Expected one of "right", "left", or "twosided"')
31 cp_type = cppyy.gbl.libsemigroups.CongruenceByPairs(type(S).element_type)
---> 32 return cppyy.gbl.make[type(S)](pj, S)

TypeError: Could not instantiate make<libsemigroups::FroidurePin<libsemigroups::Transformation,libsemigroups::FroidurePinTraits<libsemigroups::Transformation > >>:
Failed to instantiate "make<libsemigroups::FroidurePin<libsemigroups::Transformation,libsemigroups::FroidurePinTraits<libsemigroups::Transformation > >>(int,libsemigroups::FroidurePin<libsemigroups::Transformation,libsemigroups::FroidurePinTraits<libsemigroups::Transformation > >&)"

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.