{"id":23804261,"url":"https://github.com/attipaci/jnum","last_synced_at":"2025-09-06T16:33:09.781Z","repository":{"id":128809393,"uuid":"110775797","full_name":"attipaci/jnum","owner":"attipaci","description":"Java numerical classes for astronomy and beyond","archived":false,"fork":false,"pushed_at":"2024-09-16T07:50:47.000Z","size":6867,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-09-16T09:22:37.294Z","etag":null,"topics":["astronomy","complex-numbers","configuration-parser","fft","fourier-transform","java","math-library","multidimensional-arrays","numerical-methods","special-functions","spherical-coordinates","statistics","units","utilities","wcs"],"latest_commit_sha":null,"homepage":"","language":"Java","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/attipaci.png","metadata":{"files":{"readme":"README.md","changelog":"change.log","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"attipaci","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2017-11-15T02:59:07.000Z","updated_at":"2024-09-16T07:50:52.000Z","dependencies_parsed_at":"2023-07-09T11:37:49.584Z","dependency_job_id":null,"html_url":"https://github.com/attipaci/jnum","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attipaci%2Fjnum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attipaci%2Fjnum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attipaci%2Fjnum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attipaci%2Fjnum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/attipaci","download_url":"https://codeload.github.com/attipaci/jnum/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232133634,"owners_count":18477294,"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":["astronomy","complex-numbers","configuration-parser","fft","fourier-transform","java","math-library","multidimensional-arrays","numerical-methods","special-functions","spherical-coordinates","statistics","units","utilities","wcs"],"created_at":"2025-01-01T22:39:58.583Z","updated_at":"2025-01-01T22:39:59.349Z","avatar_url":"https://github.com/attipaci.png","language":"Java","funding_links":["https://github.com/sponsors/attipaci"],"categories":[],"sub_categories":[],"readme":"# JNUM\n\nAuthor: Attila Kovacs \u003cattila[AT]sigmyne.com\u003e\n\n\n---------------------------------------------------------------------------\n\n\n## Introduction\n\n**jnum** is a set of numerical Java classes, with an astronomy focus. It has\nstarted life inside the **crush** data reduction code \n(https://github.com/attipaci/crush), but was split from it a while back.\n\n**jnum** is designed to be super-fast, while also being very easy to use.\n(It's floating point FFTs on 1M points beat the C FFTW handily in my tests).\n\n**jnum** is not (yet) a fully stable code. It's API still continues to evolve\n(driven by [crush](https://github.com/attipaci/crush)), although there are \nsigns of stabilization in many of the Java subpackages within. Also, some parts\nhave clearly received more attention through the years as others. The javadoc \nmarkup is at best spotty at this point, although classes, methods and arguments\nare generally named in a self-explanatory manner. \n\nThere is more work to be done for sure. But, if you are willing to put up with \noccasional bugs and API changes, it might just make your scientific Java \ncoding a breeze.\n\nThe **jnum** package is dependent on the \n[nom.tam.fits](https://github.com/nom-tam-fits/nom-tam-fits) packages for\ndealing with FITS files, also on GitHub \n(https://github.com/nom-tam-fits/nom-tam-fits). \n\nHere is some more detail on the different parts of the package, by the \ncurrent level of functionality they offer.\n\n\n### What's solid\n\nThese are the parts that are pretty established, generally well-tested, and\nleast likely to have major API changes...\n\n * Astronomical coordinate systems and conversions between them, including \n   precession and FITS WCS support (`jnum.astro`).\n\n * Spherical projections and FITS WCS support for these (`jnum.projection`)\n\n * Blazing fast, simple, and parallel FFTs -- 1D or multi-dimensional, real\n   and complex (`jnum.fft`), and window functions (`jnum.data.WindowFunction`)\n\n * Generic data cubes (e.g. 1D-3D) via `jnum.data.Data`\n\n * 1D (`jnum.data.samples`), 2D (`jnum.data.image`), and 3D (`jnum.data.cube`,\n   and `jnum.data.cube2`) data objects, supporting FITS I/O, \n   manipulation (e.g. arithmetic, resampling, smoothing, deconvolution) and \n   overlays (`jnum.data.*.overlay`)\n\n * Complex arithmetic (`jnum.math.Complex`)\n\n * Values with weights and uncertainties (`jnum.data.WeightedPoint` and\n   `jnum.data.DataPoint`)\n\n * Special functions, e.g. Bessel functions, error function etc. \n   (`jnum.math.ExtraMath` and `jnum.math.specialfunctions`)\n\n * Parallel processing framework (`jnum.parallel`).\n\n * A powerful text-based hierarchical configuration engine for programs\n   (`jnum.Configurator`). This is what CRUSH uses, see `README.syntax` in\n   the CRUSH repo to see what it can do...\n\n * Parsing and formatting of time and angles (`jnum.text`)\n\n\n\n### What works OK, but could be improved\n\nHere are the bits that do the job, have been tested quite well, but could\nuse additional functionality, including potential rethinking parts of the \nAPI...\n\n\n * Support for physical units (`jnum.Unit`).\n\n * Physical constants (`jnum.Constant`).\n\n * Common UTF symbols for math \u0026 physics (`jnum.Symbol`)\n\n * Astronomical time measures (except UT1) and leap seconds (`jnum.astro`)\n\n * Statistics on data (`jnum.data.Statistics`, `jnum.data.Data`, and\n   `jnum.data.LinearRegression`)\n\n * Support for generic multidimensional arrays and iterators on them\n   (`jnum.mesh` and `jnum.data.ArrayUtil`)\n\n * Interpolation (`jnum.data.interpolator`)\n\n * Dirfile I/O (`jnum.io.dirfile`)\n\n * Easy-to-use custom messaging support (`jnum.reporting`)\n\n * A generic framework for bitwise flag management (`jnum.util.Flag`)\n\n\n\n### Where there is a fair bit of room for improvement...\n\nHere are the parts that may undergo substantial development, which may \nalso change the API significantly.\n\n\n * Matrices by `jnum.math.matrix` (real and complex), with algebra and \n   inversions and decompositions (but no eigenvalues or eigenvectors yet).\n\n * Fitting of data (`jnum.data.fitting`). Currently, only a downhill simplex\n   method is implemented, although there is a decent generic framework that\n   it is built on...\n\n\n\n### What doesn't quite work (yet)...\n\nFinally, the parts that are heavily under construction at this point...\n\n * Plotting capabilities (`jnum.plot`)\n\n * Symbolic math (`jnum.devel.symbolic`). It may be abandoned in favor\n   of a dependence on an external package that would provide that \n   functionality\n\n-----------------------------------------------------------------------------\n\nCopyright (C) 2019 Attila Kovacs \u003cattila[AT]sigmyne.com\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fattipaci%2Fjnum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fattipaci%2Fjnum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fattipaci%2Fjnum/lists"}