Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add a blog page and v1 release announcement #110

Open
wants to merge 17 commits into
base: main
Choose a base branch
from
28 changes: 28 additions & 0 deletions blog/v1-release.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Gosling.js v1.0.0 Announcement

[Sehi L'Yi](https://sehilyi.com), [Huyen N. Nguyen](https://huyennguyen.com/), and [David Kouřil](https://www.davidkouril.com/)

## Background on the Gosling project
Initiated in 2020, the Gosling project aimed to develop an integrated platform capable of handling complex data and subsequently creating expressive visualizations. That is two years after the [HiGlass](http://higlass.io/) paper ([Kerpedjiev et al. Genome Biology](https://doi.org/10.1186/s13059-018-1486-1)) was published by the [HIDIVE Lab](https://hidivelab.org/). HiGlass’ powerful data infrastructure and efficient graphics rendering enabled quick navigation and comparison of large genome matrices. However, as its community rapidly grew, the HiGlass team had to implement new custom tracks to meet evolving visualization needs. This was a time-consuming process since implementing a new track easily involves writing thousands of lines of JavaScript code using [PixiJS](https://pixijs.com/). Inspired by the declarative approach of [Vega-Lite](https://vega.github.io/vega-lite/), we started building the Gosling visualization toolkit to enable easier and more flexible creation of genome-mapped data visualizations (hereafter, “genomics data visualizations”).

To enable flexible visualization creation, we first needed to understand what kinds of genome-mapped data visualizations exist in the wild. Fortunately, HIDIVE Lab produced a taxonomy for genomics data visualization after reviewing hundreds of data visualizations and tools ([Nusrat et al. CGF](https://onlinelibrary.wiley.com/doi/full/10.1111/cgf.13727)). Adopting the primitive building blocks from the taxonomy (e.g., layouts, arrangements, and alignments), we designed the Gosling grammar for genomics data visualization. The Gosling grammar adopts a computer programming paradigm ([declarative programming](https://en.wikipedia.org/wiki/Declarative_programming)), which enables users to focus more on what they want to create rather than how they want to achieve. Gosling was first published in 2021 ([L’Yi et al. TVCG](https://pmc.ncbi.nlm.nih.gov/articles/PMC8826597/)), describing its five distinctive strengths and introducing its toolkit for JavaScript. Gosling was then extended for Python and computational notebook users ([Gos Python package](https://gosling-lang.github.io/gos/)) with some major usability enhancements, such as transparent data loading ([Manz et al. Bioinformatics](https://academic.oup.com/bioinformatics/article/39/1/btad050/6998203)).

## How Gosling has been used
Gosling has been widely adopted both in academia and industry. Gosling visualizations were integrated into widely used data portals, such as [cBioPortal](https://www.cbioportal.org/patient/openResource_CHROMOSCOPE?studyId=pancan_pcawg_2020&caseId=DO2706), [REDIportal](http://srv00.recas.ba.infn.it/atlas/), and [Cistrome Data Browser](https://db3.cistrome.org/browser/) ([Taing et al. Nucleic Acids Res](https://academic.oup.com/nar/article/52/D1/D61/7424438)). Researchers at Linköping University used Gosling to create stimuli for controlled user experiments ([Ståhlbom et al. CGF](https://onlinelibrary.wiley.com/doi/10.1111/cgf.15102)). A research team at Johannes Kepler University Linz extended Gosling for time-based data. A company [Appsilon](https://www.appsilon.com/) extended Gosling by building its R Shiny wrapper ([Appsilon/shiny.gosling](https://appsilon.github.io/shiny.gosling/)).

Given the flexibility of Gosling in building genomics data visualizations and tools, Gosling has been used in many research projects in the HIDIVE Lab as well. In collaboration with Peter J Park’s group at Harvard Medical School, we built [Chromoscope](https://chromoscope.bio/) ([L’Yi et al. Nat Methods](https://www.nature.com/articles/s41592-023-02056-x)) for browsing structural variation at multiple scales with Circos-like whole genome overviews and read-level BAM alignment views. In collaboration with researchers at Harvard T.H. Chan School of Public Health and Dana-Farber Cancer Institute, we built [Cistrome Explorer](https://cisvis.gehlenborglab.org) for interactive visual analysis of large-scale epigenomic data ([L’Yi et al. Bioinformatics](https://academic.oup.com/bioinformatics/article/39/2/btad018/6998202)). Focusing more on visualization and human–computer interaction research, we used Gosling to build the GenoREC ([Pandey et al. VIS 2022](https://ieeexplore.ieee.org/document/9908148)), an automated recommendation system that helps people without much visualization knowledge to find visual representations and user interactions appropriate for their data and tasks. A visual analytics tool powered by machine learning models—DRAVA ([Wang et al. CHI 2023](https://dl.acm.org/doi/full/10.1145/3544548.3581127))—integrated Gosling to provide a spatial context of the whole genome Hi-C matrix in exploring the latent space of its sliding images. Most recently, we explored ideas to combine Gosling with various visualization authoring interfaces, such as natural language interfaces, to lower barriers to creating expressive visualizations in a graphical user interface ([L’Yi et al. VIS 2024](https://ieeexplore.ieee.org/document/10670517) and [van den Brandt et al. VIS 2024](https://ieeexplore.ieee.org/document/10681582)). Aiming to help people with visual impairments, AltGosling automatically generates accessible textual descriptions that describe genomics data visualizations ([Smits et al. Bioinformatics 2024](https://academic.oup.com/bioinformatics/article/40/12/btae670/7900296)). There are many more exciting projects to be announced soon.

## What v1.0.0 means
Considering Gosling’s successful and widespread application across a variety of the aforementioned use cases, it’s safe to say that Gosling has reached a certain feature set that’s proven useful in multiple scenarios. As for any software—and academic software nonetheless—there still are some rough edges and unpolished parts of the interface and implementation. We’re going to focus on improving those parts in the upcoming months. At the same time, we’re excited to bring larger changes to Gosling's implementation and features, too. For these reasons, we believe now is the right time to mark this milestone by designating the current state as version 1.0.0. This allows existing software that depends on the current state of Gosling to pin the major version 1, while more experimental projects can follow the minor versions that we’d make in the near future. Thank you for being a part of this journey. Gosling v1.0 is here and ready for you to get started!

## What to expect in the future
We aim to address some of the current limitations of Gosling.js and release future versions with major improvements. Specifically:

- **Framework-agnostic design**: We are working to remove dependencies on React and HiGlass to reduce bottlenecks in maintaining the codebase and adding new functionalities. This will enable us to make Gosling framework-agnostic, supporting not only React but also Vue, Angular, and other of your favorite front-end frameworks.

- **Performance enhancements**: We are experimenting with different approaches to improve the rendering performance. Once we have a better understanding of current performance issues, we will share them with the community in advance.

- **3D Genomics Data Visualization**: We will integrate 3D genomics data visualizations into Gosling! One of the main missing parts in the Gosling grammar, compared to the genomics data visualization taxonomy, is the 3D layouts (e.g., 3D genome structure displayed in 3D visualizations). With this integration, you will be able to build coordinated 2D and 3D genomics data visualizations seamlessly using a single visualization library, Gosling.

## Acknowledgements
We would like to give special thanks to [Etowah Adams](https://etowahadams.com/). After joining the HIDIVE Lab as a scientific software engineer in March 2023, he made numerous contributions across multiple Gosling projects. This includes performance improvements, new data supports, visual components, and many more. He brought the new energy we needed in the Gosling team. Best of luck on his new journey at Columbia University! We would like to thank [Trevor Manz](https://trevorma.nz/) for his housekeeping (countless code reviews), critical improvements on engineering (e.g., improved types), and expanding practical use cases of Gosling (e.g., support of Observable). He made our life as Gosling developers easier and made Gosling more useful for users. Last, but not least, we would like to thank [everyone who contributed to Gosling](https://github.com/gosling-lang/gosling.js/graphs/contributors) along the way to release our first major version.
9 changes: 5 additions & 4 deletions docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ module.exports = {
},
{ to: 'tutorials/', label: 'Tutorials', position: 'left' },
{ to: 'examples/', label: 'Examples', position: 'left' },
{ to: 'blog/', label: 'Blog', position: 'left' },
{ to: 'themes/', label: 'Themes', position: 'left' },
{ to: 'about/', label: 'About', position: 'left' },
{
Expand Down Expand Up @@ -144,11 +145,11 @@ module.exports = {
{
docs: {
path: 'docs',
editUrl: ({versionDocsDirPath, docPath}) =>
`https://github.com/gosling-lang/gosling-website/edit/main/${versionDocsDirPath}/${docPath}`,
editUrl: ({ versionDocsDirPath, docPath }) =>
`https://github.com/gosling-lang/gosling-website/edit/main/${versionDocsDirPath}/${docPath}`,
include: ['**/*.md', '**/*.mdx'],
sidebarPath: require.resolve('./sidebarDocs.js'),

},
blog: {
showReadingTime: true,
Expand Down Expand Up @@ -182,7 +183,7 @@ module.exports = {
path: 'tutorials/',
sidebarPath: require.resolve('./sidebarTutorial.js'),
routeBasePath: 'tutorials',
editUrl: ({versionDocsDirPath, docPath}) =>
editUrl: ({ versionDocsDirPath, docPath }) =>
`https://github.com/gosling-lang/gosling-website/edit/main/${versionDocsDirPath}/${docPath}`,
include: ['*.md', '*.mdx']
},
Expand Down
Loading