graph LR
GenotypeBrowserComponent["GenotypeBrowserComponent"]
GeneBrowserComponent["GeneBrowserComponent"]
PhenoBrowserComponent["PhenoBrowserComponent"]
PhenoToolComponent["PhenoToolComponent"]
EnrichmentToolComponent["EnrichmentToolComponent"]
GeneProfilesBlockComponent["GeneProfilesBlockComponent"]
VariantReportsComponent["VariantReportsComponent"]
InputComponent["InputComponent"]
Data_Services["Data Services"]
DialogService["DialogService"]
NotificationService["NotificationService"]
Core_Services["Core Services"]
GenotypeBrowserComponent -- "uses" --> InputComponent
GenotypeBrowserComponent -- "interacts with" --> Data_Services
GenotypeBrowserComponent -- "calls" --> DialogService
GenotypeBrowserComponent -- "calls" --> NotificationService
GenotypeBrowserComponent -- "depends on" --> Core_Services
GeneBrowserComponent -- "uses" --> InputComponent
GeneBrowserComponent -- "interacts with" --> Data_Services
GeneBrowserComponent -- "calls" --> DialogService
GeneBrowserComponent -- "calls" --> NotificationService
GeneBrowserComponent -- "depends on" --> Core_Services
PhenoBrowserComponent -- "uses" --> InputComponent
PhenoBrowserComponent -- "interacts with" --> Data_Services
PhenoBrowserComponent -- "calls" --> DialogService
PhenoBrowserComponent -- "calls" --> NotificationService
PhenoBrowserComponent -- "depends on" --> Core_Services
PhenoToolComponent -- "uses" --> InputComponent
PhenoToolComponent -- "interacts with" --> Data_Services
PhenoToolComponent -- "calls" --> DialogService
PhenoToolComponent -- "calls" --> NotificationService
PhenoToolComponent -- "depends on" --> Core_Services
EnrichmentToolComponent -- "uses" --> InputComponent
EnrichmentToolComponent -- "interacts with" --> Data_Services
EnrichmentToolComponent -- "calls" --> DialogService
EnrichmentToolComponent -- "calls" --> NotificationService
EnrichmentToolComponent -- "depends on" --> Core_Services
GeneProfilesBlockComponent -- "uses" --> InputComponent
GeneProfilesBlockComponent -- "interacts with" --> Data_Services
GeneProfilesBlockComponent -- "calls" --> DialogService
GeneProfilesBlockComponent -- "calls" --> NotificationService
GeneProfilesBlockComponent -- "depends on" --> Core_Services
VariantReportsComponent -- "uses" --> InputComponent
VariantReportsComponent -- "interacts with" --> Data_Services
VariantReportsComponent -- "calls" --> DialogService
VariantReportsComponent -- "calls" --> NotificationService
VariantReportsComponent -- "depends on" --> Core_Services
The GPFJS application is a web-based platform for genetic data analysis, primarily focused on displaying and analyzing genotype, gene, and phenotypic data. The core functionality revolves around various "browser" and "tool" components that allow users to explore and query genetic information. These components heavily rely on shared "services" for data retrieval, user interface interactions (like dialogs and notifications), and core functionalities such as authentication. The application appears to follow a component-based architecture, where specialized components handle specific data views and analysis tasks, while common functionalities are encapsulated in shared services.
The GPFJS application's architecture is centered around a set of specialized "browser" and "tool" components, each responsible for a distinct aspect of genetic data analysis (genotype, gene, phenotype, enrichment, gene profiles, variant reports). These components form the primary user-facing modules, handling data display, user input, and initiating data queries. Underlying these specialized components are shared "services" that provide common functionalities. The Data Services component acts as the primary interface for all data interactions with the backend, ensuring consistent data fetching and submission. DialogService and NotificationService provide standardized mechanisms for user feedback and interaction, while Core Services handles cross-cutting concerns like authentication, which is crucial for securing data access across the application. This modular design promotes reusability and separation of concerns, allowing for independent development and maintenance of different functional areas.
Responsible for displaying and interacting with genotype data, likely fetching data from backend services, managing filters, and rendering genotype-specific visualizations. It initializes default filter states (e.g., presentInParent, presentInChild, genders, effectTypes, variantTypes, inheritanceTypes) based on the selected dataset's configuration. It also manages the display of genotype preview variants and handles query submissions, including canceling ongoing streams on navigation changes.
Related Classes/Methods:
Manages the display and exploration of gene-related information, including gene details, expression data, and associated variants. It handles gene symbol searches, displays summary and family variants, and allows filtering based on affected status, effect types, and variant types. It also manages the URL state based on selected gene and filters.
Related Classes/Methods:
Provides an interface for browsing and analyzing phenotypic data, including instrument selection and measure searching. It dynamically updates the displayed measures based on user input and selected instruments, and allows downloading of phenotypic data.
Related Classes/Methods:
Offers specialized tools for phenotypic analysis, such as statistical tests or data comparisons. It manages the state of various filters (gene symbols, gene sets, gene scores, phenotypic measures, effect types, present in parent, family tags, family IDs, person filters, genomic scores) and submits queries to the pheno tool service to retrieve and display analysis results.
Related Classes/Methods:
Handles the execution and display of enrichment analysis results, often involving gene sets or pathways. It collects gene-related filters (gene symbols, gene sets, gene scores, enrichment models) and submits them to the enrichment query service to obtain and present enrichment results.
Related Classes/Methods:
Displays detailed profiles for specific genes, aggregating various data points like annotations, variants, and expression. It configures and manages the gene profiles table, including columns for gene sets, gene scores, and dataset-specific statistics, and provides functionality to navigate to specific queries.
Related Classes/Methods:
Generates and presents reports related to genetic variants, summarizing findings and relevant clinical information. It displays family counters, pedigree tables, and de novo reports, and allows filtering families based on tags. It also provides functionality to download variant reports.
Related Classes/Methods:
A common UI component for standardized user input handling, specifically for person and family filters. It manages the state of categorical and continuous filters and ensures at least one continuous filter is selected.
Related Classes/Methods:
A service for fetching and submitting domain-specific data to the backend API, primarily for managing and retrieving dataset information, including hierarchies, descriptions, and permissions.
Related Classes/Methods:
A service for displaying modal dialogs, including helper modals that can display either template-based content or markdown.
Related Classes/Methods:
A service for providing user feedback, specifically for displaying error messages to the user.
Related Classes/Methods:
A service for fundamental functionalities such as authentication and token management, including generating PKCE, requesting and revoking access tokens, and refreshing tokens.
Related Classes/Methods: