{"id":15664333,"url":"https://github.com/cdbrkfxrpt/magritte","last_synced_at":"2026-02-18T17:02:37.290Z","repository":{"id":198447450,"uuid":"538707238","full_name":"cdbrkfxrpt/magritte","owner":"cdbrkfxrpt","description":"Implementation for my M.Sc. thesis project","archived":false,"fork":false,"pushed_at":"2022-11-08T15:12:17.000Z","size":671,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"trunk","last_synced_at":"2025-10-09T13:09:06.100Z","etag":null,"topics":["rust","stream-processing","tokio-rs"],"latest_commit_sha":null,"homepage":"https://gitlab.bmc-labs.com/flrn/magritte","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cdbrkfxrpt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-09-19T21:42:50.000Z","updated_at":"2025-08-03T00:50:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"f981cc23-5ace-41f5-923e-9a04c28112c6","html_url":"https://github.com/cdbrkfxrpt/magritte","commit_stats":null,"previous_names":["cdbrkfxrpt/magritte"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cdbrkfxrpt/magritte","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdbrkfxrpt%2Fmagritte","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdbrkfxrpt%2Fmagritte/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdbrkfxrpt%2Fmagritte/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdbrkfxrpt%2Fmagritte/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdbrkfxrpt","download_url":"https://codeload.github.com/cdbrkfxrpt/magritte/tar.gz/refs/heads/trunk","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdbrkfxrpt%2Fmagritte/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29587066,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T16:55:40.614Z","status":"ssl_error","status_checked_at":"2026-02-18T16:55:37.558Z","response_time":162,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rust","stream-processing","tokio-rs"],"created_at":"2024-10-03T13:42:09.304Z","updated_at":"2026-02-18T17:02:37.266Z","avatar_url":"https://github.com/cdbrkfxrpt.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# magritte\n\n_Ceci n'est pas une pipe._\n\n\u003e An implementation of a logic-based time series analysis approach.\n\nFollowing the pattern of visual dichotomy created by René Magritte in his\nfamous painting, `magritte` is a pipeline but it is also not. It is a pipeline\nbecause it receives a data stream and produces an event stream (which is also a\ndata stream), but it is not for its architecture is a publisher-subscriber\nmechanism.\n\n\n## What else is it not?\n\nUnless you are interested for the purpose of learning, this is not something\nyou should be looking at.\n\n\n## Background\n\nAnalyzing time series data is an active field of research and engineering. A\nnumber of methods and approaches exist and can be very roughly categorized as\nfollows, according to the author's perspective:\n\n- classic approaches (rooted in signal processing)\n- statistics based approaches (pure statistics, machine learning, ...)\n- logic based approaches (event based or event driven, capable of composing\n    expressions, etc.)\n\nMost systems which have been created for the purpose of enabling time series\ndata analysis are some mixture of the above as a pure implementation seems all\nbut impossible. The different approaches are usually most applicable at\ndifferent stages of the process.\n\nUsing a logical approach in a concurrent way for the analysis stage of the\nprocess is the subject of my Master's thesis, _Concurrent Stream Reasoning for\nComplex Event Recognition_. This project here contains the implementation\nof the (not-a-)pipeline part of the system.\n\n\n## Architecture\n\n**magritte** forms part of the overall architecture; specifically, it forms the\nfunctional part, from data acquisition to results storage, but nothing outside\nfrom those responsibilities. This allows for a good separation of concerns and\nenables the use of programming languages and technologies better suited for the\nrespective purposes at both ends of the (not-a-)pipeline.\n\n![Architecture showing **magritte**](./misc/architecture.png \"Architecture showing magritte\")\n\nThere is a separate bundle called `barbershop` which contains all the yak\nshaving elements to set up some docker containers running the database,\ndownloading the dataset and preloading it into the database. It has some more\nthan that, which is explained in its README file.\n\n\n## Base Technologies\n\nAll components of **magritte** are written in the Rust programming language.\nThe [tokio](https://tokio.rs/) asynchronous runtime is used to implement the\nconcurrent tasks and scheduling them.\n\n\n## Build and Run\n\nBuilding and running **magritte** is as canonical as it gets:\n\n```sh\ncargo build\n# or\ncargo run\n# or\ncargo run --release\n```\n\nRust and `cargo` documentation is published online. Google is your friend.\n\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  This work is licensed under the Apache License, Version 2.0. You should have\n  received a copy of this license along with the source code. If that is not\n  the case, please find one \u003ca\n  href=\"http://www.apache.org/licenses/LICENSE-2.0\"\u003eonline\u003c/a\u003e.\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdbrkfxrpt%2Fmagritte","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdbrkfxrpt%2Fmagritte","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdbrkfxrpt%2Fmagritte/lists"}