{"id":21735138,"url":"https://github.com/caltech-ipac/firefly","last_synced_at":"2025-04-09T17:23:14.354Z","repository":{"id":29961430,"uuid":"33508214","full_name":"Caltech-IPAC/firefly","owner":"Caltech-IPAC","description":"Web-based UI library for astronomical data archive access and visualization","archived":false,"fork":false,"pushed_at":"2025-04-07T18:10:19.000Z","size":265518,"stargazers_count":44,"open_issues_count":4,"forks_count":14,"subscribers_count":12,"default_branch":"dev","last_synced_at":"2025-04-07T19:25:34.512Z","etag":null,"topics":["catalogs","fits-visualization","graphs","hips","ipac-firefly","plotting","tables","visulaization"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/Caltech-IPAC.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"License.txt","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2015-04-06T22:03:13.000Z","updated_at":"2025-04-04T18:49:50.000Z","dependencies_parsed_at":"2023-09-22T03:13:22.399Z","dependency_job_id":"5e7c8336-d581-412d-b425-fbb709c48dbb","html_url":"https://github.com/Caltech-IPAC/firefly","commit_stats":{"total_commits":6729,"total_committers":45,"mean_commits":"149.53333333333333","dds":0.6798930004458315,"last_synced_commit":"36f4e659f32834e9330e233bbcdf4cc83a81a7a6"},"previous_names":[],"tags_count":327,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Caltech-IPAC%2Ffirefly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Caltech-IPAC%2Ffirefly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Caltech-IPAC%2Ffirefly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Caltech-IPAC%2Ffirefly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Caltech-IPAC","download_url":"https://codeload.github.com/Caltech-IPAC/firefly/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248075354,"owners_count":21043568,"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":["catalogs","fits-visualization","graphs","hips","ipac-firefly","plotting","tables","visulaization"],"created_at":"2024-11-26T05:12:01.906Z","updated_at":"2025-04-09T17:23:14.335Z","avatar_url":"https://github.com/Caltech-IPAC.png","language":"JavaScript","readme":"# Firefly\n\n## Intro\n\nFirefly is an open-source web-based UI library for astronomical data archive access and visualization developed at [Caltech](https://caltech.edu).\nThe development was started in the context of archive-specific applications at the [NASA/IPAC Infrared Science Archive (IRSA)](https://irsa.ipac.caltech.edu), and was then generalized to serve data from many different archives at IRSA (and beyond). It was open sourced in 2015, hosted at GitHub.\n\nFirefly is designed to build complex web-based front-end applications making use of  reusable [React](https://reactjs.org) components to enable accessing and exploring astronomical data with advanced data visualization capabilities.\n\nThe visualization provides user with an integrated experience with brushing and linking capabilities among images, catalogs, and plots. Firefly is used in [IRSA](https://irsa.ipac.caltech.edu) GUIs to query and visualize data from missions such as [WISE](https://irsa.ipac.caltech.edu/applications/wise/), [Spitzer](https://irsa.ipac.caltech.edu/applications/Spitzer/SHA/), [SOFIA](https://irsa.ipac.caltech.edu/applications/sofia/), [ZTF](https://irsa.ipac.caltech.edu/applications/ztf/), [PTF](https://irsa.ipac.caltech.edu/applications/ptf/), etc. and a large number of highly-used contributed data products from a diverse set of astrophysics projects. It is also used in various user interfaces of the NASA Exoplanet Science Institute ([NExScI](https://nexsci.caltech.edu)) and the NASA/IPAC Extragalactic Database ([NED](http://ned.ipac.caltech.edu)), as well as to construct the Portal Aspect of the Vera C. Rubin Observatory Science Platform.\n\n### Quick-start\n\nThe fastest way to start using Firefly and check examples is to make use of Docker images.\nSee the Docker quick-start [here](docs/firefly-docker.md).\n\n## Release note\n\nNote - if you are pulling, look at the [branches section](#branches)\n\nFirefly builds are available on Docker and additional notes for using it are on the [Docker Page](https://hub.docker.com/r/ipac/firefly).\n\n[Release Notes are Here](docs/release-notes.md).\n\n\n## Firefly Framework\n\nFirefly is being reused for various archives because it is a framework of archive components. This has allowed us to implement multiple archive systems at a fraction of the cost of the first system, Spitzer Heritage Archive. Firefly has undergone an extensive re-write since then, adopted React/Redux framework for the client side, making it much  easier to work with other JavaScript libraries. Firefly's general scientific visualizations are based on the Plotly.js graphing library.\n\n### Firefly Viewer\n\nBy default, this repository builds a default example webapp. This tool can be used for viewing FITS data, catalogs, and xyplots. It is a general viewer tool for retrieving and viewing astronomy related data.\n\n### Firefly APIs\n\nFirefly APIs exposes the most powerful components of Firefly in a way that can be used by any web page with no prerequisites. It allows any web developer access to Firefly's FITS visualizers or Table Tool with just a very few lines of JavaScript. The goal is to make these APIs very easy to use with only a 10 minute learning curve.\n\nAn important feature is that the Firefly APIs server can be installed cross-site. In other words, it is not required to be on the same server as the web page. Firefly APIs can do this because it uses JSONP or CORS for the server communication. This allows Firefly APIs not to be limited by the server's Same Origin Policy and to give the developer a lot of flexibility. The web developer does not have to do any installation, but can simply just start using Firefly APIs.\n\n## Visualizers\nThe firefly components contain three main visualizers for astronomy data.\n\n\n### Tabular Data Display\nFirefly has implemented “Excel-like” tables on the webpage. In an easy, interactive way, a user can sort the results, filter the data on multiple constraints, hide or show columns, or select data for download or visualization. The Firefly APIs server is optimized to show very large tables without significant performance degradation. We have tested it with over 10 million rows, 50 column tables.\n\n### FITS and HiPS Visualization\nFirefly provides a first-class FITS visualization on the Web without any plugins. All of the significant components you would expect to see in a basic desktop FITS application are available with data that Firefly displays. The FITS visualizer allows for overplotting any table data with Lon(RA) and Lat(Dec). Therefore, users can overlay multiple catalogs over their FITS image and interact with it.\n\nIn addition, Firefly is able to display all-sky images in the IVOA standard HiPS format, and display catalogs overlaid on them just as with FITS images.\n\n### Scientific Plotting\nFirefly shows 2D graphs interactively so that a user can read the data point values as moves mouse around or zooms in to investigate the data at a finer level. These graphs are used for plotting table columns. The user can specify any column that the tables are showing. The user can also define expressions from the columns for the XY Plot, such as (col1\\*col2/tan(col3)). Table based charts share their data model with the table, so both table and chart can trigger or respond to the common events, such as filtering of the data. Firefly also supports creating and plotting 1D histograms and heatmaps (2D histograms).\n\n\n## Branches and tags\nThere are several branches in the repository.  Here are the ones that you should care about.\n\n - rc-YYYY.N: The next release candidate branch.  This is generally the most stable branch.\n - dev: This branch could be updated every day. It is the active development branch. It is not stable. Nightly builds are performed.\n - firefly-xxx-reason, IRSA-xxx: These branches are temporary development feature branches and are associated with corresponding tickets in IPAC Jira.\n - Tags: Firefly is tagged for releases and pre-releases\n - [See Details on tags and branches](docs/tags-and-branches.md)\n\n## Setup\n\n### Prerequisites\n -  [Java 21] (https://openjdk.org/projects/jdk/21/)\n    This is the version we are using to compile and run Firefly.  \n\n -  [Gradle 8.10] (https://gradle.org/install/)\n    Gradle is an open source build automation system.\n\n -  [Tomcat 9] (https://tomcat.apache.org/download-90.cgi)\n    Apache Tomcat is an open source software implementation of the Java Servlet and JavaServer Pages technologies.\n\n -  [Node v18] (https://nodejs.org/)\n    Javascript interpreter for command line environment, used for development tools\n\n### Prepare before the build\n - Make sure you have  `\u003cGRADLE\u003e/bin`, `\u003cJAVA\u003e/bin`, and `\u003cNODE\u003e/bin` in your PATH.\n - Install yarn via npm:  npm install yarn -g\n\n\n### How to build Firefly.jar:\n\nFirst `git clone` the firefly repository or download the zip (and unzip) to your target machine. Then install the prerequisites (node, java, tomcat).\n\nIn a terminal, cd into the `firefly` directory, then run:\n\n    $ gradle :firefly:jar\n\nThis generates firefly.jar located at ./jars/build/.\nYou may include this jar into your project to build advanced astronomy web applications.\n\n\n### How to build and deploy Firefly Viewer:\n\nIn a terminal, cd into the `firefly` directory, then run:\n\n    $ gradle :firefly:war\n\nTo include the API documentation and tutorial into the war archive run:\n\n    $ gradle :firefly:warAll    \n\nThis generates firefly.war located at ./build/dist/.\nSimply drop this file into your $CATALINA_HOME/webapps/ directory to deploy it.\n$CATALINA_HOME is your Tomcat server installation directory.\n\nGoto http://localhost:8080/firefly to launch Firefly Viewer.\nThe documentation is accessible via http://localhost:8080/firefly/docs/js/index.html\n\n\n### Supported Browsers\n\nFirefly supports the following browsers:\n\n - safari \u003e= 12\n - chrome \u003e= 81\n - firefox \u003e= 79\n - edge \u003e= 83\n\n\n## More Docs\n\n### Firefly JavaScript API overview\nSee [firefly-api-overview.md](docs/firefly-api-overview.md)\n (Deprecated [docs/fftools-api-overview.md])\n\n### Firefly Remote API using Python overview\nSee [firefly-python-wrapper.md](docs/firefly-python-wrapper.md)\n\n### Code Examples Using Firefly APIs\nSee [firefly-api-code-examples.md](tutorial/firefly-api-code-examples.md)\n (Deprecated [docs/fftools-api-code-examples.md])\n\n### Setting up the Server correctly for FITS files\nSee [server-settings-for-fits-files.md](docs/server-settings-for-fits-files.md)\n\n### Changing the Firefly runtime environment\nSee [firefly-environment.md](docs/firefly-environment.md)\n\n### Adding external task launcher or Python Launcher to Firefly\nSee [firefly-python-launcher.md](docs/firefly-external-task-launcher.md)\n\n### Release branches and tags\nSee [tags-and-branches.md](docs/tags-and-branches.md)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaltech-ipac%2Ffirefly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcaltech-ipac%2Ffirefly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaltech-ipac%2Ffirefly/lists"}