netroles

netroles: A Java library for role equivalence analysis in networks - Published in JOSS (2024)

https://github.com/muellerj2/netroles

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
    1 of 2 committers (50.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

java network-analysis role-analysis role-equivalence

Keywords from Contributors

mesh
Last synced: 4 months ago · JSON representation ·

Repository

A Java library for role equivalence analysis in networks

Basic Info
  • Host: GitHub
  • Owner: muellerj2
  • License: gpl-3.0
  • Language: Java
  • Default Branch: main
  • Homepage:
  • Size: 1.08 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 1
  • Releases: 3
Topics
java network-analysis role-analysis role-equivalence
Created over 2 years ago · Last pushed 4 months ago
Metadata Files
Readme License Citation

README.md

netroles

Paper DOI Zenodo DOI Build CI status Coverage

The netroles library offers tools for analyzing network data in terms of role equivalences and structures.

This library implements many common notions of role equivalences, such as structural, weak or regular equivalence in their standard formulation.
While implementations in other software packages tend to be restricted to these standard equivalence concepts on unweighted networks, netroles has been deliberately designed to expand the scope of applicability for role equivalences. It facilitates the expression of alternative and more nuanced definitions of role, such as notions that build on other mechanisms or those that are intended to accomodate and combine various actor and tie attributes as appropriate for the performed analysis.
In this way, netroles generalizes prior tools and expands the scope of applicability of role equivalence concepts.

Netroles is a library implemented in and provided for Java, requiring Java 8 or newer.

Installation

Netroles is available in Maven Central. You can add it by using your preferred dependency management tool. When using Maven, for example, you can add netroles as a dependency in your POM file (replacing "x.y" by the appropriate version tag):

xml <dependency> <groupId>io.github.muellerj2</groupId> <artifactId>netroles-api</artifactId> <version>x.y</version> <scope>compile</scope> </dependency> <dependency> <groupId>io.github.muellerj2</groupId> <artifactId>netroles-engine</artifactId> <version>x.y</version> <scope>runtime</scope> </dependency>

Netroles includes its own implementation of network structures. Optionally, you can add the following artifacts to read networks into netroles' default network representation or write the network representation to files:

xml <dependency> <groupId>io.github.muellerj2</groupId> <artifactId>netroles-io-api</artifactId> <version>x.y</version> <scope>compile</scope> </dependency> <dependency> <groupId>io.github.muellerj2</groupId> <artifactId>netroles-io-engine</artifactId> <version>x.y</version> <scope>runtime</scope> </dependency>

In Gradle, you can add these dependencies as follows: ```gradle dependencies { // required implementation "io.github.muellerj2:netroles-api:x.y" runtimeOnly "io.github.muellerj2:netroles-engine:x.y"

// optional IO support implementation "io.github.muellerj2:netroles-io-api:x.y" runtimeOnly "io.github.muellerj2:netroles-io-engine:x.y" } ```

Alternatively, you can add the following artifacts (available on the Releases page) to your Java project manually: * netroles-api-*.*.jar * netroles-engine-*.*.jar (only needed at runtime) * netroles-networks-api-*.*.jar * netroles-networks-engine-*.*.jar (only needed at runtime) * netroles-io-api-*.*.jar (optional IO support) * netroles-io-engine-*.*.jar (optional IO support, only needed at runtime)

In addition, netroles uses SLF4J for logging purposes, so you have to add SLF4J and an SLF4J binding to some logging library to your build path. If you also add the optional IO support to your project, you should further add the following external libraries: * Univocity parsers * JSON-Java * FasterXML Jackson Databind

Note

You can make use of another library's network data structure than the default one bundled with netroles if you prefer to do so. To achieve this, you have to write an adapter implementing the NetworkView interface in package ch.ethz.sn.visone3.roles.position. You can then use this adapter to specify role concepts on these networks.

Tutorial

The tutorial presents common usage examples step by step.

Scientific background and design

The design document explains:

  • the theoretical background of this library in the area of Social Network Analysis, including the relevant ideas from the role analysis literature.
  • the library's design principles.

API Documentation

For each release, corresponding Javadoc documentation is made available on Maven Central and can be accessed on the external website javadoc.io.

You can follow the links below to view the Javadoc of each API module on javadoc.io: * netroles-lang-api * netroles-networks-api * netroles-api * netroles-io-api

Besides the API modules, netroles also includes engine modules that implement the library's API. Users of netroles usually do not need to interact with these modules directly. But if you wish to access some feature of an engine module directly, you can browse the Javadoc for these modules as well: * netroles-lang-engine * netroles-networks-engine * netroles-engine * netroles-io-engine

Working on the code

If you would like to work directly on the library's source code, fork this repository and download the library's source. Finally, you can import it into your favorite IDE for Java programming. The project uses Gradle as its build tool, so you might have to install a Gradle plugin to import the project easily into your IDE.

Contributing

Support, bug reports and enhancement requests

If you have questions how to use netroles, find a bug or would like to suggest an idea or enhancement, please file an issue on the project's Github page.

Contributing code

If you would like to contribute code to the project, please open a pull request. Your code will be considered for inclusion if you are agree to make it available under the project's license.

Owner

  • Login: muellerj2
  • Kind: user

JOSS Publication

netroles: A Java library for role equivalence analysis in networks
Published
January 17, 2024
Volume 9, Issue 93, Page 5903
Authors
Julian Müller ORCID
Social Networks Lab, ETH Zürich, Switzerland, Institute of Computing, Università della Svizzera italiana, Switzerland
Editor
Frederick Boehm ORCID
Tags
network analysis role analysis

Citation (CITATION.cff)

cff-version: "1.2.0"
authors:
- family-names: Müller
  given-names: Julian
  orcid: "https://orcid.org/0000-0001-6440-8046"
doi: 10.5281/zenodo.10070537
message: If you use this software, please cite our article in the
  Journal of Open Source Software.
preferred-citation:
  authors:
  - family-names: Müller
    given-names: Julian
    orcid: "https://orcid.org/0000-0001-6440-8046"
  date-published: 2024-01-17
  doi: 10.21105/joss.05903
  issn: 2475-9066
  issue: 93
  journal: Journal of Open Source Software
  publisher:
    name: Open Journals
  start: 5903
  title: "netroles: A Java library for role equivalence analysis in
    networks"
  type: article
  url: "https://joss.theoj.org/papers/10.21105/joss.05903"
  volume: 9
title: "netroles: A Java library for role equivalence analysis in
  networks"

GitHub Events

Total
  • Delete event: 20
  • Issue comment event: 7
  • Push event: 29
  • Pull request event: 31
  • Create event: 22
Last Year
  • Delete event: 20
  • Issue comment event: 7
  • Push event: 29
  • Pull request event: 31
  • Create event: 22

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 119
  • Total Committers: 2
  • Avg Commits per committer: 59.5
  • Development Distribution Score (DDS): 0.479
Past Year
  • Commits: 26
  • Committers: 1
  • Avg Commits per committer: 26.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Julian Müller j****r@g****h 62
dependabot[bot] 4****] 57
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 3
  • Total pull requests: 150
  • Average time to close issues: 7 days
  • Average time to close pull requests: 3 days
  • Total issue authors: 3
  • Total pull request authors: 3
  • Average comments per issue: 2.0
  • Average comments per pull request: 0.2
  • Merged pull requests: 131
  • Bot issues: 1
  • Bot pull requests: 100
Past Year
  • Issues: 0
  • Pull requests: 51
  • Average time to close issues: N/A
  • Average time to close pull requests: 5 days
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.27
  • Merged pull requests: 34
  • Bot issues: 0
  • Bot pull requests: 51
Top Authors
Issue Authors
  • leifeld (1)
  • abhishektiwari (1)
  • dependabot[bot] (1)
Pull Request Authors
  • dependabot[bot] (100)
  • muellerj2 (48)
  • danielskatz (2)
Top Labels
Issue Labels
dependencies (1) github_actions (1)
Pull Request Labels
dependencies (100) java (89) github_actions (11)

Dependencies

.github/workflows/gradle_build.yml actions
  • JamesIves/github-pages-deploy-action v4 composite
  • actions/checkout v3 composite
  • actions/setup-java v3 composite
  • actions/upload-artifact v3 composite
  • cicirello/jacoco-badge-generator v2 composite
  • gradle/gradle-build-action v2 composite
  • gradle/wrapper-validation-action v1 composite
build.gradle maven