{"id":25723518,"url":"https://github.com/cs-si/sirius","last_synced_at":"2025-05-07T02:30:23.741Z","repository":{"id":77444600,"uuid":"142297956","full_name":"CS-SI/SIRIUS","owner":"CS-SI","description":"Sirius - Fast and simple to plug-in C++ resampling library that is taking advantage of the Fourier Transform","archived":true,"fork":false,"pushed_at":"2020-09-01T08:38:00.000Z","size":9326,"stargazers_count":6,"open_issues_count":17,"forks_count":5,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-05-07T02:29:44.431Z","etag":null,"topics":["cpp","fft","fftw","image-processing","remote-sensing","resampling"],"latest_commit_sha":null,"homepage":"https://cs-si.github.io/SIRIUS/html/Sirius.html","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CS-SI.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":"2018-07-25T12:38:39.000Z","updated_at":"2025-04-18T14:17:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"c2cc430f-05d4-40e5-9d51-bc237b4c8bfe","html_url":"https://github.com/CS-SI/SIRIUS","commit_stats":{"total_commits":43,"total_committers":4,"mean_commits":10.75,"dds":0.5116279069767442,"last_synced_commit":"7ddb7e465332008420579df12855803a982f0461"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CS-SI%2FSIRIUS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CS-SI%2FSIRIUS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CS-SI%2FSIRIUS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CS-SI%2FSIRIUS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CS-SI","download_url":"https://codeload.github.com/CS-SI/SIRIUS/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252801260,"owners_count":21806283,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cpp","fft","fftw","image-processing","remote-sensing","resampling"],"created_at":"2025-02-25T20:36:57.117Z","updated_at":"2025-05-07T02:30:23.685Z","avatar_url":"https://github.com/CS-SI.png","language":"C++","readme":"\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://CS-SI.github.io/SIRIUS/html/Sirius.html\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/CS-SI/SIRIUS/master/doc/img/sirius-logo.svg?sanitize=true\" alt=\"Sirius by CS-SI\" width=35%\u003e\u003c/a\u003e\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003eA fast resampling software with simple to plugin library.\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://travis-ci.org/CS-SI/SIRIUS\"\u003e\u003cimg src=\"https://travis-ci.org/CS-SI/SIRIUS.svg?branch=master\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://hub.docker.com/r/ldumas/sirius_dockerfile/tags/\"\u003e\u003cimg src=\"https://img.shields.io/docker/automated/ldumas/sirius_dockerfile.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/CS-SI/SIRIUS/issues\"\u003e\u003cimg src=\"https://img.shields.io/github/issues/CS-SI/SIRIUS.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/GPL-3.0/\"\u003e\u003cimg src=\"https://img.shields.io/badge/licence-GPL-blue.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"http://makeapullrequest.com\"\u003e\u003cimg src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=shields\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#overview\"\u003eOverview\u003c/a\u003e •\n  \u003ca href=\"#docker-app\"\u003eDocker App\u003c/a\u003e •\n  \u003ca href=\"#how-to-build\"\u003eHow To Build\u003c/a\u003e •\n  \u003ca href=\"#how-to-use\"\u003eHow To Use\u003c/a\u003e •\n  \u003ca href=\"#credits\"\u003eAcknowledgement\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch4 align=\"center\"\u003e\n  \u003ca href=\"https://uk.c-s.fr/\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/CS-SI/SIRIUS/master/doc/img/logo_cssi.jpg\" alt=\"CS-SI\" width=\"149px\"\u003e\u003c/a\u003e\n\u003c/h4\u003e\n\nAs of today, and to our knowledge, there is no complete open source resampling tool for satellite imagery based on\nfrequency resampling. Numerous softwares, some being open source, can be found to resample (most of the time upsample)\ndata. Most of them offers various interpolators ([GIMP], [Pandore], [Getreuer], [OTB]),\nsome being very fast but rather innacurate (nearest neighbors, bilinear) and some offering high quality results\n(more often than not based on a Lancsoz convolutional kernel) but being very time consuming.\nThen only a few provides ways to deal efficiently with large amount of data ([OTB]) or proposes a\nfast and accurate sinus cardinal interpolator implemented as frequencial zero padding ([Getreuer]).\nNone of those however allows one to resample satellite images in frequency domain with a floating upscaling\nor downscaling factor.\n\nIt could be argued that the [OTB] remains the best solution for the purpose of resampling satellite images.\nHowever, and though there exists ways to filter satellite images in frequency domain with the [OTB],\nit is not possible to resample such an image in frequency domain.\n\nSirius then aims at filling this void offering a fast and simple to plug-in resampling C++ library that is taking advantage of the Fourier Transform.\n\n## Overview\n\n* [Sirius documentation][Sirius doc]\n* [Doxygen][Doxygen]\n* [Internals][Internals]\n\n## Docker App\n\nSirius is delivered inside a docker container. Assuming one has previously installed docker, then Sirius can be launched\nusing the following commands :\n\n```sh\n# pull image from the registry\ndocker pull ldumas/sirius_dockerfile:sirius\n# then run sirius\ndocker run ldumas/sirius_dockerfile:sirius [OPTION...] input-image output-image\n\n# if no arguments are set then sirius is launched without any argument and its help is displayed\n# see below for the list of sirius args\n\n# note that using docker volume might be a good solution to give the container access to input-image\n# and to give host access to the output-image :\ndocker run -v /home/user/outdir/:/outdir -v /home/user/input_images:/input ldumas/sirius_dockerfile:sirius /input/input-image.tif /outdir/output-image.tif -r 1:2\n```\n\n## How to Build\n\nSirius is using [CMake] to build its libraries and executables.\n\n### Requirements\n\n* C++14 compiler (GCC \u003e= 5)\n* [CMake] \u003e=3.2\n* [GDAL] development kit, \u003e=2\n* [FFTW] development kit, \u003e=3\n* [Doxygen] if documentation option is enabled\n\n### Internal dependencies\n\n* [spdlog v0.17.0]\n* [cxxopts v2.1.0]\n* [GSL v1.0.0]\n* [catch v2.2.3]\n* [cmake-modules]\n\n### Options\n\n* `CMAKE_BUILD_TYPE`: Debug, Release, RelWithDebInfo or MinSizeRel\n* `CMAKE_INSTALL_PREFIX`: directory path where the built artifacts (include directory, library, docs) will be gathered using install target\n* `SIRIUS_VERSION`: set Sirius library version (default is `0.0.0`)\n* `SIRIUS_REVISION_COMMIT`: set Sirius library revision commit (default is `sirius-no-revision-commit`)\n* `ENABLE_SIRIUS_EXECUTABLE`: set to `ON` to enable sirius target executable\n* `ENABLE_CACHE_OPTIMIZATION`: set to `ON` to build with cache optimization for FFTW and Filter\n* `ENABLE_GSL_CONTRACTS`: set to `ON` to build with GSL contracts (e.g. bounds checking). This option should be `OFF` on release mode.\n* `ENABLE_LOGS`: set to `ON` if you want to build Sirius with the logs\n* `ENABLE_UNIT_TESTS`: set to `ON` if you want to build the unit tests\n* `ENABLE_DOCUMENTATION`: set to `ON` if you want to build the documentation\n\nSirius version can be extracted from `git describe` and revision commit from `git rev-parse HEAD`.\nIf version and revision commit are not provided, [CMake] will try to extract them with the latter git commands.\n\n### Example\n\n```sh\n# CWD is Sirius root directory\nmkdir .build\ncd .build\ncmake .. -DCMAKE_BUILD_TYPE=Release \\\n         -DCMAKE_INSTALL_PREFIX=/tmp/sirius \\\n         -DENABLE_SIRIUS_EXECUTABLE=ON \\\n         -DENABLE_CACHE_OPTIMIZATION=ON \\\n         -DENABLE_GSL_CONTRACTS=OFF \\\n         -DENABLE_LOGS=ON \\\n         -DENABLE_UNIT_TESTS=OFF \\\n         -DENABLE_DOCUMENTATION=ON\ncmake --build . --target sirius\ncmake --build . --target doc\ncmake --build . --target install\n```\n\nSee also `.travis.yml` and `.travis/create_cmake_project.sh`\n\n## How to use\n\n### Host requirements\n\n* [GDAL] library\n* [FFTW3] library\n\n### Sirius standalone tool\n\nSirius is shipped as a standalone tool that offers filtering and resampling features.\n\n```sh\n$ ./sirius -h\nSirius X.Y.Z (...)\nStandalone tool to resample and filter images in the frequency domain\n\nUsage:\n  ./sirius [OPTION...] input-image output-image\n\n  -h, --help           Show help\n  -v, --verbosity arg  Set verbosity level\n                       (trace,debug,info,warn,err,critical,off) (default: info)\n\n resampling options:\n  -r, --resampling-ratio arg    Resampling ratio as input:output, allowed\n                                format: I (equivalent to I:1), I:O (default: 1:1)\n      --no-image-decomposition  Do not decompose the input image (default:\n                                periodic plus smooth image decomposition)\n      --upsample-periodization  Force periodization as upsampling algorithm\n                                (default algorithm if a filter is provided). A\n                                filter is required to use this algorithm\n      --upsample-zero-padding   Force zero padding as upsampling algorithm\n                                (default algorithm if no filter is provided)\n\n filter options:\n      --filter arg           Path to the filter image to apply to the source\n                             or resampled image\n      --filter-normalize     Normalize filter coefficients (default is no\n                             normalization)\n      --zero-pad-real-edges  Force zero padding strategy on real input edges\n                             (default: mirror padding)\n      --hot-point-x arg      Hot point x coordinate (considered centered if\n                             no value is provided)\n      --hot-point-y arg      Hot point y coordinate (considered centered if\n                             no value is provided)\n\n streaming options:\n      --stream                  Enable stream mode\n      --block-width arg         Initial width of a stream block (default:\n                                256)\n      --block-height arg        Initial height of a stream block (default:\n                                256)\n      --no-block-resizing       Disable block resizing optimization\n      --parallel-workers [=arg(=1)]\n                                Parallel workers used to compute resampling\n                                (8 max) (default: 1)\n```\n\n#### Processing mode options\n\n##### Regular mode\n\nRegular mode (default mode) will put the whole image in memory and then processed it. **This mode should only be used on small image**.\n\nThe following command line will zoom in the image `/path/to/input-file.tif` by 4/3 with the periodic plus smooth image decomposition, apply the filter `/path/to/filter-image-4-3.tif` to the zoomed image and write the result into `/path/to/output-file.tif`.\n\n\n```sh\n./sirius -r 4:3 \\\n         --filter /path/to/filter-image-4-3.tif \\\n         /path/to/input-file.tif /path/to/output-file.tif\n```\n\n##### Stream mode\n\nStream mode is activated with the option `--stream`. It will cut the image into multiple blocks of small size (default block size is 256x256). Each block will be processed separately and result blocks will be aggregated to generate the output image. **This mode must be used on large image.**\n\nStream mode can be run in mono-threaded context (`--parallel-workers=1`) or in multi-threaded context (`--parallel-workers=N` where N is the requested number of threads which will compute the resampling).\n\n```sh\n./sirius -r 4:3 \\\n         --stream --parallel-workers=4 \\\n         --filter /path/to/filter-image-4-3.tif \\\n         /path/to/input-file.tif /path/to/output-file.tif\n```\n\nIt is possible to customize block size with the options `--block-witdh=XXX` and `--block-height=YYY`.\n\nDefault behavior tries to optimize given block size so that the processed block (block size + filter margins) width and height are dyadic. You can disable this optimization with the option `--no-block-resizing`.\n\nWhen dealing with real zoom, block width and height are computed so that they comply with the zoom ratio.\n\n#### Resampling options\n\nResampling ratio is specified with the option `-r`. Expected format ratios are:\n* `-r INPUT_RESOLUTION` where INPUT_RESOLUTION is a positive integer (e.g. `-r 2`).\n* `-r INPUT_RESOLUTION:OUTPUT_RESOLUTION` where INPUT_RESOLUTION and OUTPUT_RESOLUTION are positive integers (e.g. `-r 2:1`).\n\nSirius can use two image decomposition algorithms:\n* Periodic plus Smooth (default behavior) is splitting the input image into a periodic part and a smooth image part.\n* None (`--no-image-decomposition`) is using raw image data without any processing.\n\nSirius can use two upsampling strategies:\n* Periodization: default behavior if a filter is provided.\n* Zero padding: default algorithm if no filter is provided.\n\n\nUpsampling strategies can be forced with the following options:\n* `--upsampling-zero-padding`\n* `--upsampling-periodization`\n\n*Force periodization upsampling without providing a filter will result in an error.*\n\nMore details on algorithms in the [Theoretical Basis documentation][Sirius periodization].\n\n#### Filter options\n\nA filter image path can be specified with the option `--filter`. This filter will be applied:\n* on the resampled image if the image is upsampled.\n* on the source image if the image is downsampled.\n\nDefault behavior will pad real input edges with a mirroring of the edges.\n`--zero-pad-real-edges` will change this strategy and zero pad real input edges.\n\nIt is assumed that the filter is already normalized. If not, the option `--filter-normalize` will normize it before any processing.\n\nFinally, it is possible to give a filter which has an uncentered hot point by specifying its coordinates thanks to `--hot-point-x` and `--hot-point-y` options. In this case sirius will center the filter's hot point before any processing.\n\nMore details on filters in the [Theoretical Basis documentation][Sirius Kernel Interpolator].\n\n#### Examples\n\n##### Zoom in\n\nThe following command line will zoom in `input/lena.jpg` by 2 using periodic plus smooth image decomposition and zero padding upsampling.\n\n```sh\n./sirius -r 2:1 \\\n         --upsample-zero-padding \\\n         data/input/lena.jpg /tmp/lena_z2.jpg\n```\n\nThe following command line will zoom in `input/lena.jpg` by 2 using periodic plus smooth image decomposition, periodization upsampling and filter for upsampling 2.\n\n```sh\n./sirius -r 2 \\\n         --filter data/filters/ZOOM_2.tif \\\n         data/input/lena.jpg /tmp/lena_z2.jpg\n```\n\nThe following command line will zoom in `input/sentinel2_20m.tif` by 2 using stream mode and 8 workers, periodic plus smooth image decomposition, periodization upsampling and filter for upsampling 2.\n\n```sh\n./sirius --stream --parallel-workers=8 \\\n         -r 2 \\\n         --filter data/filters/ZOOM_2.tif \\\n         data/input/sentinel2_20m.tif /tmp/sentinel2_20m_z2.tif\n```\n\n##### Zoom out\n\nThe following command line will zoom out `input/lena.jpg` by 1/2 using periodic plus smooth image decomposition and filter for downsampling 1/2.\n\n```sh\n./sirius -r 1:2 \\\n         --filter data/filters/ZOOM_1_2.tif \\\n         data/input/lena.jpg /tmp/lena_z2.jpg\n```\n\nThe following command line will zoom out `input/disparity.png` by 1/2 using periodic plus smooth image decomposition and filter for downsampling 1/2.\n\n```sh\n./sirius -r 1:2 \\\n         --filter data/filters/ZOOM_1_2.tif \\\n         data/input/disparity.png /tmp/disparity_z1_2.jpg\n```\n\nThe following command line will zoom out `input/sentinel2_10m.tif` by 1/2 using using stream mode and 8 workers, periodic plus smooth image decomposition and filter for downsampling 1/2.\n\n```sh\n./sirius --stream --parallel-workers=8 \\\n         -r 1:2 \\\n         --filter data/filters/ZOOM_1_2.tif \\\n         data/input/sentinel2_10m.tif /tmp/sentinel2_10m_z1_2.tif\n```\n\n### Sirius library API\n\nSirius is designed to be easy to use.\n\nThe main interface to compute a frequency resampling is `IFrequencyResampler` and it only requires an image, a zoom ratio and an optional filter.\n\n`IFrequencyResampler` objects are instantiated by the `FrequencyResamplerFactory`.\n\n#### Example without filter\n\n```cpp\n#include \"sirius/filter.h\"\n#include \"sirius/frequency_resampler_factory.h\"\n#include \"sirius/image.h\"\n#include \"sirius/types.h\"\n\n// create an image\nsirius::Image image = {...};\n\n// configure the zoom ratio\nsirius::ZoomRatio zoom_ratio = sirius::ZoomRatio::Create(7, 5);\n\n// compose a frequency resampler from sirius::ImageDecompositionPolicies and\n//     sirius::FrequencyZoomStrategies enums\nsirius::IFrequencyResampler::UPtr freq_resampler =\n      sirius::FrequencyResamplerFactory::Create(\n            sirius::ImageDecompositionPolicies::kPeriodicSmooth,\n            sirius::FrequencyZoomStrategies::kZeroPadding);\n\n// compute the resampled image\nsirius::Image resampled_image = freq_resampler-\u003eCompute(\n      zoom_ratio, image, {}, {});\n```\n\n#### Example with filter\n\n```cpp\n#include \"sirius/filter.h\"\n#include \"sirius/frequency_resampler_factory.h\"\n#include \"sirius/image.h\"\n#include \"sirius/types.h\"\n\n// load an image\nsirius::Image image = {...};\n\n// load a filter image\nsirius::Image filter_image = {...};\n\n// configure the zoom ratio\nsirius::ZoomRatio zoom_ratio = sirius::ZoomRatio::Create(7, 5);\n\n// create a filter from an image file\nsirius::Filter filter = sirius::Filter::Create(filter_image, zoom_ratio);\n\n// compose a frequency resampler from sirius::ImageDecompositionPolicies and\n//     sirius::FrequencyZoomStrategies enums\nsirius::IFrequencyResampler::UPtr freq_resampler =\n      sirius::FrequencyResamplerFactory::Create(\n            sirius::ImageDecompositionPolicies::kPeriodicSmooth,\n            sirius::FrequencyZoomStrategies::kPeriodization);\n\n// compute the resampled image\nsirius::Image resampled_image = freq_resampler-\u003eCompute(\n      zoom_ratio, image, filter.padding(), filter);\n```\n\n#### Thread safety\n\nCompute a resampled image with Sirius is thread safe so it is possible to use the same `IFrequencyResampler` object in a multi-threaded context.\n\nProcess an image with a `Filter` object is also thread safe so you can reuse the same filter in a multi-threaded context.\n\n## Unit tests\n\nRunning tests requires data features (input image, filters) which are available [here][Sirius test data features].\n\nYou need to execute the tests in the root directory of those data features. Expected directory tree is:\n```\nROOT_DATA_FEATURES/input\n                  /filters\n                  /output\n```\n\n`frequency_resampler_tests` and `functional_tests` will create output images in the directory `ROOT_DATA_FEATURES/output`\n\n## Acknowledgement\n\nSirius developers would like to thank:\n* Matteo Frigo, Steven G. Johnson et al. for [FFTW3 library (GNU General Public License v3)][FFTW3]\n* [GDAL (MIT License)][GDAL] project team\n* Gabi Melman et al. for [spdlog (MIT License)][spdlog]\n* Jarryd Beck et al. for [cxxopts (MIT License)][cxxopts]\n* [Catch2 (Boost Software License - Version 1.0)][catch2] project team\n* [GSL (MIT License)][GSL] project team\n* Ryan Pavlik et al. for [cmake-modules (Boost Software License - Version 1.0)][cmake-modules]\n\n\n\n[OTB]: https://www.orfeo-toolbox.org \"Orfeo ToolBox\"\n[GIMP]: https://www.gimp.org/fr/ \"GNU Image Manipulation Program\"\n[Pandore]: https://clouard.users.greyc.fr/Pandore \"Pandore: Une bibliothèque d'opérateurs de traitement d'images (Version 6.6). Laboratoire GREYC.\"\n[Getreuer]: https://doi.org/10.5201/ipol.2011.g_lmii \"Getreuer, P. (2011). Linear Methods for Image Interpolation. Image Processing On Line, 1, 238259.\"\n\n[Doxygen]: https://CS-SI.github.io/SIRIUS/doxy_html/index.html\n[Internals]: INTERNALS.md \"Internals\"\n[Sirius doc]: https://CS-SI.github.io/SIRIUS/html/Sirius.html\n[Sirius periodization]: https://dumasl.github.io/SIRIUS/html/upsampling/user_kernel.html#when-sirius-uses-a-filter-to-upsample-the-spectrum-is-periodized-instead-of-zero-padded\n[Sirius Kernel Interpolator]: https://dumasl.github.io/SIRIUS/html/upsampling/user_kernel.html\n[Sirius test data features]: https://github.com/CS-SI/SIRIUS \"Sirius test data features\"\n\n[CS-SI]: https://uk.c-s.fr/ \"CS Systèmes d'information\"\n[CMake]: https://cmake.org/ \"CMake\"\n[GDAL]: http://www.gdal.org/ \"Geospatial Data Abstraction Library\"\n[FFTW]: http://www.fftw.org/ \"Fastest Fourier Transform in the West\"\n[Doxygen]: http://www.doxygen.org \"Doxygen\"\n[FFTW3]: http://www.fftw.org/fftw-paper-ieee.pdf \"Matteo Frigo and Steven G. Johnson, “The design and implementation of FFTW3,” Proc. IEEE 93 (2), 216231 (2005)\"\n[spdlog]: https://github.com/gabime/spdlog \"spdlog\"\n[spdlog v0.17.0]: https://github.com/gabime/spdlog/tree/v0.17.0 \"spdlog v0.17.0\"\n[cxxopts]: https://github.com/jarro2783/cxxopts \"cxxopts\"\n[cxxopts v2.1.0]: https://github.com/jarro2783/cxxopts/tree/v2.1.0 \"cxxopts v2.1.0\"\n[GSL]: https://github.com/Microsoft/GSL \"Guideline Support Library\"\n[GSL v1.0.0]: https://github.com/Microsoft/GSL/tree/v1.0.0 \"Guideline Support Library v1.0.0\"\n[catch2]: https://github.com/catchorg/Catch2/tree/v2.2.3 \"Catch2\"\n[catch v2.2.3]: https://github.com/catchorg/Catch2/tree/v2.2.3 \"Catch v2.2.3\"\n[cmake-modules]: https://github.com/rpavlik/cmake-modules \"CMake Modules\"\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcs-si%2Fsirius","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcs-si%2Fsirius","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcs-si%2Fsirius/lists"}