Skip to content

Presubmission inquiry: CyNetDiff #165

@eliotwrobson

Description

@eliotwrobson

Submitting Author: Name (@eliotwrobson)
Package Name: CyNetDiff
One-Line Description of Package: A performance-focused library implementing algorithms for simulating network diffusion processes, written in Cython.
Repository Link (if existing): https://github.com/eliotwrobson/CyNetDiff


Code of Conduct & Commitment to Maintain Package

Description

  • Include a brief paragraph describing what your package does:

Network diffusion processes aim to model the spread of information through social networks, represented using graphs. Experimental work involving these models usually involves simulating these processes many times over large graphs, which can be computationally very expensive. At the same time, being able to conduct experiments using a high-level language like Python is helpful to researchers, as this gives greater flexibility in developing research software. To address both of these concerns, CyNetDiff is a Cython module implementing the independent cascade and linear threshold models, two of the most popular network diffusion models. Development has been focused on performance, while still giving an intuitive, high-level interface to assist in research tasks.

Community Partnerships

We partner with communities to support peer review with an additional layer of
checks that satisfy community requirements. If your package fits into an
existing community please check below:

Scope

  • Please indicate which category or categories.
    Check out our package scope page to learn more about our
    scope. (If you are unsure of which category you fit, we suggest you make a pre-submission inquiry):

    • Data retrieval
    • Data extraction
    • Data processing/munging
    • Data deposition
    • Data validation and testing
    • Data visualization
    • Workflow automation
    • Citation management and bibliometrics
    • Scientific software wrappers
    • Database interoperability

Domain Specific & Community Partnerships

- [ ] Geospatial - [ ] Education - [ ] Pangeo - [ ] Unsure/Other (explain below) 
  • Explain how and why the package falls under these categories (briefly, 1-2 sentences). Please note any areas you are unsure of:

The package is designed to be a core tool used for data processing when conducting network diffusion experiments, as it allows for efficient simulation of the most computationally expensive component of this process.

  • Who is the target audience and what are the scientific applications of this package?

This is aimed at researchers working in areas related to network diffusion and influence maximization, and specifically at optimizing the most computationally expensive part of this process. This should enable researchers to conduct experiments on larger graphs than would be possible with a pure-Python package. For a recent work doing experiments that fit the use cases of this package, see https://arxiv.org/abs/2207.08937

  • Are there other Python packages that accomplish similar things? If so, how does yours differ?

There is a previous package filling a similar use case called ndlib: https://github.com/GiulioRossetti/ndlib
Our package differs as it was developed with a focus on performance, and with lesser emphasis on visualization
and flexibility (for example, we do not have a way of defining custom models). Using code compiled with Cython
allows our package to handle much larger graphs than are possible with a pure-Python package like ndlib.

  • Any other questions or issues we should be aware of:

The package is still in the late stages of initial development, and we only just released our first version on PyPI, but I wanted to open this inquiry early to get feedback on the scope of the project. Are there rules about package maturity before getting a full review? I would like to submit fairly soon after getting the documentation set up. The documentation right now is very light, I'm happy to add more now if this will give helpful information for this inquiry.

Also, this is the first Cython package I've written, and getting some insight about best practices for the build system would be very helpful.

P.S. Have feedback/comments about our review process? Leave a comment here

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions