Git Product home page Git Product logo

causal-hub's Introduction

Hi there ๐Ÿ‘‹

I'm Alessio Zanga, a PhD student at Roche in collaboration with University of Milan - Bicocca in a reasearch project titled "Structural Causal Models: Static and Dynamic Causal Networks for Health and Medicine".

Working on ๐Ÿ‘ท

I'm actively working on:

  • ๐ŸŒฒ Fast and safe implementation of graph theory with GRATHE,
  • ๐Ÿ”ฌ Causal inference using graphical models with CaMo.

Previously worked on:

  • ๐Ÿง  Neural networks applied to neuroscience with PyEEGLab,
  • ๐Ÿ”ฎ Bayesian networks for missing data with MADBayes,
  • ๐Ÿค– Reinforcement learning for general purpose with REILLY.

Speaking of ๐Ÿ’ฌ

I really like functional programming and scientific programming. I'm quite fluent in Python ๐Ÿ and C++ ๐Ÿ”ง, while currently learning Rust ๐Ÿฆ€. Even if those languages are like day ๐ŸŒž & night ๐ŸŒ›, I enjoy mixing them together for easy usage ๐Ÿ˜ธ and blazing performance โšก (with related headache ๐Ÿ˜ต).

I've also experimented with different tools, like:

  • :octocat: Git, GitHub and GitLab ('cause one will never be enough),
  • ๐Ÿš€ Travis and Jenkins for CI/CD development,
  • ๐Ÿ‹ Doker for lightweight container shipping,
  • ๐ŸŽฏ TensorFlow and Keras for research purposes.

Reading about ๐Ÿ“š

If you are interested in some readings:

Looking for ๐Ÿ“ˆ

Alessio's github stats

causal-hub's People

Contributors

alessiozanga avatar niccolo-rocchi avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

causal-hub's Issues

Add `Graph` trait

Add Graph trait with the following:

  • Clone trait bound,
  • Debug trait bound,
  • Display trait bound,
  • Vertex associated type,
  • Edge associated type,
  • Order getter,
  • Vertices iterator,
  • Has vertex method,
  • Add vertex by label method,
  • Delete vertex method,
  • Size getter,
  • Edges iterator,
  • Has edge method,
  • Add edge method,
  • Delete edge method,
  • Is adjacent to method.

Add `DirectedDenseMatrix` struct

Add DirectedDenseMatrixGraph with the following:

  • BaseGraph trait implementation,
  • DefaultGraph trait implementation,
  • PartialOrdGraph trait implementation,
  • DirectedGraph trait implementation.

Add graphs parsers

Add the following:

  • Add AdjacencyList format,
  • Add Edgelist format,
  • Add GEXF format,
  • #145
  • Add GraphML format,
  • Add Pajek format.

Add `Independence` trait with associated implementations

Add the following:

  • Independence trait with method is_independent(X, Y, Z) to check for conditional independence of X _||_ Y | Z,
  • Implement Independence for UndirectedGraph in terms of u-separation,
  • Implement Independence for DirectedGraph in terms of d-separation.

Add `OLS` by special casing

Implement special cases of OLS, such as with 1, 2 and 3 regressors, to improve performance in low dimensionality.

Fix: default size of complete undirected graph

What happened?

The default size of a complete undirected graph with n labels is set for default to (n * (n+1)) / 2, while it must be set to n * (n+1) / 2 - n. Indeed this quantity is equivalent to (n * (n -1)) / 2, but it prevents the code to overflow in case of n = 0, with n being of type usize.

Code of Conduct

  • I agree to follow this project's Code of Conduct

Add `PC-Stable` algorithm

Contact Details

No response

What feature do you propose?

Add the constraint-based PC-Stable causal discovery algorithm.

In particular, the issue will be split in:

  • Add the skeleton function of PC-Stable to get an undirected graph,
  • Add the orient function of PC-Stable to apply orientation rules.
  • Enable PC-Stable to include prior knowledge
  • Benchmarks

Relevant references

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

Change to `dtolnay/rust-toolchain` action

Add the following:

  • dtolnay/rust-toolchain action,
  • cargo sort -c, for Cargo.toml formatting,
  • cargo +nightly rustdoc -- --show-coverage -Z unstable-options, for docs coverage report.

Add `DiscreteDataset` and `ContinuousDataset` structs

Add Dataset trait with the following:

  • From and Into variables names and ndarray matrix,
  • From and Into given polars dataframe,
  • Check if there are missing values and build a "missing mask",
  • Getter on the names of the variables,
  • Getter on the underlying data matrix.

Add DiscreteDataset struct with the following:

  • Implement Dataset trait,
  • Getter on the levels of a variable,
  • Getter on the cardinality vector.

Add ContinuousDataset struct with the following:

  • Implement Dataset trait.

Add `BayesianNetwork` framework

Add the following:

  • Models:
    • #75
    • Add Gaussian Bayesian network model
  • Parsing:
  • Sampling:
    • #124
    • Add Rejection sampling
    • Add LikelihoodWeighting sampling
  • Fitting:
    • #84
    • #86
    • Add ExpectationMaximization estimator
  • Approximate Inference:
    • Add approximate inference
  • Exact Inference

Add `Default` trait

Add Default trait with the following:

  • Graph trait bound,
  • Default trait bound,
  • Null constructor,
  • Empty constructor,
  • Complete constructor.

Add `HillClimbing` algorithm

Add the HillClimbing algorithm with the following:

  • with_graph, to provide a non-empty initial DAG,
  • with_max_iter, to limit the number of maximum iterations,
  • with_max_parents, to limit the number of maximum parents for each vertex.

Add `UndirectedGraph` trait

Add UndirectedGraph trait with the following:

  • Graph trait bound,
  • NeighborsIter associated type,
  • Neighbors iterator,
  • Is neighbor of method,
  • Degree of method.

Add contributor guidelines

Add the following:

  • Add README with status badges and sections,

  • Add CHANGELOG,

  • Add CODE_OF_CONDUCT,

  • Add CONTRIBUTING,

  • Add issue and pull request templates,

  • Add CITATION.cff.

Add `UndirectedDenseMatrix` struct

Add UndirectedDenseMatrixGraph with the following:

  • AdjacencyMatrix crate-wide type,
  • BaseGraph trait implementation,
  • DefaultGraph trait implementation,
  • PartialOrdGraph trait implementation,
  • UndirectedGraph trait implementation.

Add edges metrics

Add the following:

  • Iterator over the same edges w.r.t. given graph,
  • Iterator over the extra edges w.r.t. given graph,
  • Iterator over the missing edges w.r.t. given graph,
  • Iterator over the reversed edges w.r.t. given graph,
  • Structural Hamming Distance (SHD).

Add `DirectedGraph` trait

Add DirectedGraph trait with the following:

  • AncestorsIter associated type,
  • Ancestors iterator,
  • Is ancestor of method,
  • ParentsIter associated type,
  • Parents iterator,
  • Is parent of method,
  • ChildrenIter associated type,
  • Children iterator,
  • Is child of method,
  • DescendantsIter associated type,
  • Descendants iterator,
  • Is descendant of method.

Add `PartialOrd` trait

Add PartialOrd trait with the following:

  • Graph trait bound,
  • Eq trait bound,
  • PartialOrd trait bound,
  • Is subgraph method,
  • Is supergraph method.

Add CI/CD pipeline

  • Add cargo check,
  • Add cargo build,
  • Add cargo test,
  • Add clippy check,
  • Add fmt check,
  • Add cov coverage,
  • Add cargo publish.

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.