{"id":17113033,"url":"https://github.com/emmt/yeti","last_synced_at":"2025-04-13T03:58:29.699Z","repository":{"id":33105715,"uuid":"36743484","full_name":"emmt/Yeti","owner":"emmt","description":"Yeti is a Yorick extension","archived":false,"fork":false,"pushed_at":"2024-02-19T07:51:50.000Z","size":474,"stargazers_count":7,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-13T03:58:21.433Z","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/emmt.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,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null}},"created_at":"2015-06-02T15:41:36.000Z","updated_at":"2023-11-04T11:05:37.000Z","dependencies_parsed_at":"2024-02-19T08:55:59.130Z","dependency_job_id":null,"html_url":"https://github.com/emmt/Yeti","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmt%2FYeti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmt%2FYeti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmt%2FYeti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmt%2FYeti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emmt","download_url":"https://codeload.github.com/emmt/Yeti/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248661706,"owners_count":21141450,"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":"2024-10-14T17:02:26.423Z","updated_at":"2025-04-13T03:58:29.669Z","avatar_url":"https://github.com/emmt.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# ![Yeti-logo](doc/yeti.png): a Yorick extension\n\n[[News](./NEWS.md)] [[License](./LICENSE.md)]\n\nYeti is an extension of [Yorick](http://github.com/LLNL/yorick) (a fast\ninterpreted interactive data processing language written by David Munro) which\nimplements (see \"*Quick Reference*\" below for a list of additional functions):\n * hash table objects;\n * regular expressions;\n * complex, real-complex and complex-real FFT by FFTW (the Fastest Fourier\n   Transform in the West -- version 2);\n * wavelet filtering (the \"*à trou*\" method)\n * fast convolution along a chosen dimension with various border conditions;\n * more string functions;\n * memory hacking routines;\n * more math functions (`sinc`, `round`, `arc`);\n * generalized matrix-vector multiplication (with possibly sparse matrix);\n * routines to query/check Yorick's symbols;\n * support for reading TIFF images;\n * morpho-math operators;\n * tuples;\n * ...\n\nThis distribution of Yeti may come with several extensions (depending\nwhether corresponding directories exist or not):\n * `fftw` ..... support for FFTW\n * `regex` .... support for POSIX regular expressions\n * `tiff` ..... support for reading TIFF images\n\n\n## Compilation and Installation\n\nStarting with version 6.0.0, Yeti is built as a regular Yorick plugin and some\nof the Yeti extensions are built as standalone Yorick plugins (they do not\nrequire Yeti to be used). The installation of Yeti depends on that of Yorick\nwhich must have been installed prior to Yeti. You'll need at least version 2.2\nof Yorick (for Yorick version 1.5, you can install Yeti 5.3 and for Yorick 1.6\nto 2.1 you can install Yeti 6.2).\n\nThe first installation step consists in the configuration of Yeti software\nsuite.  This is done via the \"configure\" script (1).  In order to figure out\nthe different options (and their default values), you can just do:\n\n```.sh\n./configure --help\n```\n\nAt least version 2.2 of Yorick is required to configure/build this version of\nYeti.\n\nBy default, the script tries to find an axecutable named \"yorick\" in your path\n(according to your environment variable PATH).  You can however specify a\ndifferent Yorick executable with option:\n\n```.sh\n./configure [...] --yorick=PATH_TO_YORICK_EXECUTABLE [...]\n```\n\nwith `PATH_TO_YORICK_EXECUTABLE` the full path to Yorick executable.\n\nIf you want Yeti plugin for extended regular support, you'll have the choice\nto use a system provided POSIX REGEX library or the GNU REGEX library which\ncan be built into the plugin. This is achieved by defining the preprocessor\nmacro `HAVE_REGEX` to true if you trust your system REGEX library.  To use the\nPOSIX REGEX library of your system:\n\n```.sh\n./configure [...] --with-regex-defs='-DHAVE_REGEX=1' [...]\n```\n\nand to build the GNU REGEX library into the plugin (this is the default\nbehaviour):\n\n```.sh\n./configure [...] --with-regex-defs='-DHAVE_REGEX=0' [...]\n```\n\nFor instance, here is how to call the configure script to use builtin REGEX\nsupport and to enable plugins for FFTW (installed in /usr/local) and TIFF\n(installed in standard locations):\n\n```.sh\n./configure --with-regex \\\n    --with-fftw --with-fftw-defs=\"-I/usr/local/include\" \\\n    --with-fftw-libs=\"-L/usr/local/lib -lrfftw -lfftw\" \\\n    --with-tiff --with-tiff-libs=\"-ltiff\"\n```\n\nIn order to check your configuration settings, you can add `--help` as the\nlast argument of the call to `./configure`.\n\nAfter configuration, you can build Yeti and all related plugins by just doing:\n\n```.sh\nmake\n```\n\nIn order to install Yeti files into Yorick installation directories,\nyou simply do:\n\n```.sh\nmake install\nmake install-doc\n```\n\n\n## Quick Reference\n\nHash tables:\n\n```\nh_cleanup ............ delete void members of hash table object\nh_clone .............. clone a hash table\nh_copy ............... duplicate hash table object\nh_delete ............. delete members from a hash table\nh_first .............. get name of first hash table member\nh_functor ............ create \"functor\" object\nh_get ................ get value of hash table member\nh_has ................ check existence of hash table member\nh_info ............... list contents of hash table\nh_keys ............... get member names of a hash table object\nh_list ............... make a hash table into a list\nh_new. ............... create a new hash table object\nh_next ............... get name of next hash table member\nh_pop ................ pop member out of an hash table object\nh_restore_builtin .... restore builtin functions\nh_save ............... save variables in a hash table\nh_save_symbols ....... save builtin functions\nh_set................. set member of hash table object\nh_set_copy............ set member of hash table object\nh_show ............... display a hash table as an expanded tree\nh_stat ............... get statistics of hash table object\n```\n\nYeti Hierarchical Data (YHD) files:\n\n```\n#include \"yhdf.i\"\n\nyhd_check ............ check version of YHD file\nyhd_info ............. print some information about an YHD file\nyhd_restore .......... restore a hash table object from an YHD file\nyhd_save ............. save a hash table object into an YHD file\n```\n\n\nRegular Expressions:\n\n```\n#include \"regex.i\"\n\nregcomp ............... compile regular expression\nregmatch .............. match a regular expression against an array of strings\nregmatch_part ......... peek substrings given indices returned by regmatch\nregsub ................ substitute regular expression into an array of strings\n```\n\n\nMiscellaneous:\n\n```\nanonymous ............. create anonymous (lambda) functions\nexpand_path ........... expand directory names to absolute paths\nheapsort............... sort an array by heap-sort method\ninsure_temporary ...... make sure a variable is not referenced\nis_hash ............... check if an object is a hash table\nis_sparse_matrix ...... check if an object is a sparse matrix\nquick_select .......... find K-th smallest element in an array\nquick_median .......... find median value (faster than median function)\nquick_interquartile_range\n ...................... compute inter-quartile range of values\nyeti_init setup ....... setup Yeti internals and query version\n```\n\n\nMemory Hacking:\n\n```\nmem_base .............. get base address of an array object\nmem_copy .............. copy array data at a given address\nmem_info .............. print memory information\nmem_peek .............. make a new array from a base address, type and\n                        dimension list\nnative_byte_order ..... compute native byte order\n```\n\n\nBinary Encoding of Data:\n\n```\nget_encoding .......... get description of binary encoding for various\n                        machines\ninstall_encoding ...... install binary description into a binary stream\nsame_encoding ......... compare two encodings\n```\n\n\nMath/Numerical:\n\n```\narc ................... lengh of arc in radians\ncost_l2 ............... cost function and gradient for l2 norm\ncost_l2l0 ............. cost function and gradient for l2-l0 norm\ncost_l2l1 ............. cost function and gradient for l2-l1 norm\nmachine_constant ...... get machine dependent constant (such as EPSILON)\nmvmult ................ (sparse)matrix-vector multiplication\nround ................. round to nearest integer\nsinc .................. cardinal sine: sinc(x) = sin(pi*x)/(pi*x)\nsmooth3 ............... smooth an array by 3-element convolution\nsparse_expand ......... convert a sparse matrix array into a regular array\nsparse_grow ........... augment a sparse array\nsparse_matrix ......... create a new sparse matrix\nsparse_squeeze ........ convert a regular array into a sparse one\nyeti_convolve ......... convolution along a given dimension\nyeti_wavelet .......... \"à trou\" wavelet decomposition\n```\n\n\nStrings:\n\n```\nstrlower .............. convert array of strings to lower case\nstrtrimleft ........... remove leading spaces from an array of strings\nstrtrimright .......... remove trailing spaces from an array of strings\nstrupper .............. convert array of strings to upper case\n```\n\n\nYorick Internals:\n\n```\nmemory_info ........... display memory used by Yorick symbols\nsymbol_info ........... get some information about existing Yorick symbols\nnrefsof ............... get number of references of an object\n```\n\n\nMorpho-math operations:\n\n```\nmorph_black_top_hat ... perform valley detection\nmorph_closing ......... perform morpho-math closing operation\nmorph_dilation ........ perform morpho-math dilation operation\nmorph_erosion ......... perform morpho-math erosion operation\nmorph_opening ......... perform morpho-math opening operation\nmorph_white_top_hat ... perform summit detection\n```\n\n\nTIFF images:\n\n```\n#include \"tiff.i\"\n\ntiff_open ............. open TIFF file\ntiff_debug ............ control printing of TIFF warning messages\ntiff_read_pixels ...... read pixel values in a TIFF file\ntiff_read_image ....... read image in a TIFF file\ntiff_read_directory ... move to next TIFF \"directory\"\ntiff_read ............. read image/pixels in a TIFF file\ntiff_check ............ check if a file is a readable TIFF file.\n```\n\n\nFFTW (this package is certainly outdated, consider using\n[`XFFT`](https://github.com/emmt/XFFT) instead):\n\n```\n#include \"ftw.i\"\n\nfftw_plan ............. setup a plan for FFTW\nfftw .................. computes FFT of an array according to a plan\ncfftw ................. computes complex FFT of an array\nfftw_indgen ........... generates FFT indices\nfftw_dist ............. computes length of spatial frequencies\nfftw_smooth ........... smooths an array\nfftw_convolve ......... fast convolution of two arrays\n```\n\n\n## License\n\n[Yeti](https://github.com/emmt/Yeti) is released under the\nMIT \"Expat\" license. (See file [LICENSE](./LICENSE.md) for details.)\n\n\n## References and notes\n\n1. [Yorick](http://github.com/LLNL/yorick) is an interpreted programming\n   language for scientific simulations or calculations, postprocessing or\n   steering large simulation codes, interactive scientific graphics, and\n   reading, writing, or translating large files of numbers.\n\n2. [FFTW](http://www.fftw.org/) is *the Fastest Fourier Transform in the\n   West*.  Please note that since FFTW API has changed with FFTW version 3,\n   only FFTW version 2 (latest is 2.1.5) is supported in Yeti.  A new\n   plug-in [XFFT](https://github.com/emmt/xfft) will be soon available for\n   FFTW3 in Yorick.\n\n3. To use some special functions of [GSL](http://www.gnu.org/software/gsl/)\n   (the GNU Scientific Library) in Yorick, `yeti_gsl` has been abandoned in\n   favor of a separate plugin [YGSL](https://github.com/emmt/ygsl).\n\n4. [LibTIFF](http://www.libtiff.org/) is a free TIFF library which provides\n   support for the *Tag Image File Format* (TIFF), a widely used format for\n   storing image data.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femmt%2Fyeti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femmt%2Fyeti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femmt%2Fyeti/lists"}