{"id":27306725,"url":"https://github.com/pseyfert/root-compression","last_synced_at":"2025-04-12T04:02:11.743Z","repository":{"id":72263597,"uuid":"48338780","full_name":"pseyfert/root-compression","owner":"pseyfert","description":"adding compression algorithms (via LD_PRELOAD) to root-mirror/root","archived":false,"fork":false,"pushed_at":"2016-01-12T11:08:21.000Z","size":7660,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-08-02T20:58:34.575Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pseyfert.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-12-20T22:02:46.000Z","updated_at":"2023-08-02T20:58:34.576Z","dependencies_parsed_at":"2023-03-17T18:01:03.353Z","dependency_job_id":null,"html_url":"https://github.com/pseyfert/root-compression","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pseyfert%2Froot-compression","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pseyfert%2Froot-compression/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pseyfert%2Froot-compression/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pseyfert%2Froot-compression/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pseyfert","download_url":"https://codeload.github.com/pseyfert/root-compression/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248514226,"owners_count":21116902,"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":[],"created_at":"2025-04-12T04:00:51.090Z","updated_at":"2025-04-12T04:02:11.714Z","avatar_url":"https://github.com/pseyfert.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"![logo](the_icon.png)\n\n# root-compression\n\nThis is partially a project to educate myself how things work.\nBeyond the educational aspect, the project is to add new compression algorithms\nto ROOT. It is based on previous work by Manuel Schiller, adding LZO and LZ4 to\nROOT.\n\n# where to get the underlying algorithms\n\nLZO should ship with your OS. otherwise: http://www.oberhumer.com/opensource/lzo/#download\nLZ4 is included in the repo. originally: https://github.com/Cyan4973/lz4\nzopfli is forked (see below). originally:https://github.com/google/zopfli.git\nbrotli is forkedly included. originally: https://github.com/google/brotli\n\n# how to build\n\nGet zopfli and put it `path/to/root-compression/zopfli`.\nCall make from `path/to/root-compression`.\nObserve that this implicitly calls\n```\ncd path/to/root-compression/zopfli\nmake libzopfli\n```\nYou should now have to shared libraries:\n```\npath/to/root-compression/libLzoRoot.so\npath/to/root-compression/zopfli/libzopfli.so\npath/to/root-compression/brotli/enc/libenc.so\npath/to/root-compression/brotli/dec/libdec.so\n```\n\n# how to run\n\nOverride the root default compression stuff by injecting the library into `LD_PRELOAD`:\n\n```\ncd path/to/root-compression\nexport LD_PRELOAD=$LD_PRELOAD:`pwd`/brotli/enc/libenc.so:`pwd`/brotli/dec/libdec.so:`pwd`/zopfli/libzopfli.so:`pwd`/libLzoRoot.so\nexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`/brotli/enc:`pwd`/brotli/dec\n\n```\n\ntest your setup by putting a root file with a TTree in it (at top level) as\n`org.root` into the `test` subdirectory and run\n```\ncd path/to/root-compression/test\nmake\n```\nor\n```\ncd path/to/root-compression\nmake test\n```\nnow you should have many many root files with your original TTree in various compressions.\n\n## about zopfli\n\nI use zopfli from `git@github.com:pseyfert/zopfli.git` and the branch\n`myadditions`.  This is a fork from `https://github.com/google/zopfli.git` at\ncommit `89cf773beef75d7f4d6d378debdf299378c3314e`.\n\n## running tests\n\nfacing the transition to automised tests (in the test-dev branch) I'd like to\npoint to http://stackoverflow.com/questions/1490949/how-to-write-loop-in-makefile\naccording to which one can specify the test range\n```\nmake -C test size -j 10 LAST_LEVEL=4 # to only test compression levels 1..4\nmake -C test callgrind-write -j 20 ALGS=\"6 7\" LEVELS=\"4 5\" # test only zopfli and brotli, and only levels 4 and 5\n```\nFurthermore, one does not need to specify LD_PRELOAD and LD_LIBRARY_PATH by hand\nanymore to run tests.\n\n## results\n\nsee test/summary.txt\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpseyfert%2Froot-compression","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpseyfert%2Froot-compression","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpseyfert%2Froot-compression/lists"}