The present disclosure relates to a software tool and methods to analyze and visualize the composition and population structure of microbial communities.
High-throughput DNA sequencing technologies, including targeted marker-gene sequencing, are providing unprecedented insight into the composition and population structure of microbial communities. Although it may seem that DNA sequencing should reduce many scientific questions to simply counting the organisms' representative sequences, there are subtle but significant challenges associated with sampling, counting, and representational statistics. As a consequence, many microbiome-specific analytical pipelines and workflows have been developed.
High-throughput sequencing of microbial communities provides a tool to characterize associations between the host microbiome and health status (i.e., healthy or disease phenotypes), to detect pathogens, and to identify the interplay of an organism's microbiome with the built environment. Large amounts of microbiome sample data may be available, but significant effort is required for researchers to effectively analyze them, which limits the utility of these rich data resources.
Potentially pathogenic or probiotic bacteria can be identified by detecting significant differences in their distribution across healthy and disease populations, thereby making the analysis of differential abundance critical. Similar issues are encountered in the attempt to correlate microbiome composition with environmental factors. Although methods for comparing whole communities are commonly used in this context, there is a need for tools that discern taxon-specific associations in marker-gene surveys.
While tools and packages exist to answer many of the questions asked of this exciting new data type, analyses remain inaccessible to researchers without the right skill set. A desire exists to make microbiome analyses and studies more accessible to researchers who lack programming and statistical skills. Effective integrative and interactive visual and statistical tools to analyze the large-scale microbiome sample data can greatly increase the value of these data for researchers.
Herein is provided a software tool and methods to analyze and visualize the composition and population structure of microbial communities.
In particular embodiments, a software tool and methods may be used for microbiome data analyses. The software tool and methods may be used to design microbiome studies, understand phenotype interactions, parse variables, and facilitate microbiome study analysis. The software tool and methods may be used to predict subjects' prognosis, predict subjects' responsiveness to various treatments, identify a treatment effective for an individual subject, and/or assign subjects into appropriate arm within a clinical trial. In particular embodiments, microbiome sample data may be accessed at a computing system via the software tool. The software tool may generate a user interface comprising phenotype and feature selection options. A user of the software tool may provide user input comprising phenotype and feature selections of the microbiome sample data. Upon receiving the user input, the software tool may generate a visualization from the user input and the microbiome sample data and an exportable report and software code comprising the generated visualization as output. In particular embodiments, the software tool may further aggregate counts of features in the microbiome sample data based on the user input and generate the visualization from the aggregated counts. In particular embodiments, the software tool may additionally generate an output of an indication that a subject is eligible for a clinical trial in testing a medical treatment for a particular medical condition.
In particular embodiments, the software tool may access a plurality of microbiome samples. The software tool may then generate a user interface. The user interface may comprise one or more input fields. In particular embodiments, each of the input fields may correspond to one or more of a phenotype or a feature associated with the plurality of microbiome samples. The software tool may then receive, via the user interface, one or more user inputs to one or more of the input fields. In particular embodiments, the software tool may generate, at the user interface, a visualization comprising one or more analysis results associated with the plurality of microbiome samples. The one or more analysis results may be generated based on the one or more user inputs. The software tool may further output an exportable report and software code comprising the generated visualization.
In particular embodiments, the software tool may provide microbiome-specific analyses in a user-friendly interface and guided workflow, thus removing the prerequisite of having software programming skills for users to study microbiome data. The software tool may also suggest analyses or visualizations based on data input for analysis. This may help users in understanding large-scale data sets and readily direct users to insights of the microbiome data of these data sets. In addition, the software tool may provide simulations of experiments including mixed-effect models, spline models, and various use cases. In particular embodiments, the software tool may be a software package, software application, or web interface. As an example and not by way of limitation, the software tool may include an R package, which allows a user to perform and visualize microbiome analytical workflows either through the command line or an interactive Shiny application included with the package. In addition to applying common analytical workflows, the software tool may enable automated analysis report generation. The software tool may have several technical advantages. One technical advantage may include addressing the needs of both computational scientists by combining different analysis methods in one package, but also the needs of bench scientists with a limited coding background. Another technical advantage may include furthering microbiome data analysis by suggesting parameters or feature to compare and providing simulations of data at various time points. Another technical advantage may include delivering a set of powerful and well-designed interactive visualizations, which distinguishes it from conventional work that may be dependent on command lines or may not contain all the visualization capabilities as featured in the software tool disclosed herein.
In particular embodiments, the software tool may access a plurality of microbiome samples. The software tool may then generate a user interface. The user interface may comprise one or more input fields. In particular embodiments, each of the input fields may correspond to one or more of a phenotype or a feature associated with the plurality of microbiome samples. The software tool may then receive, via the user interface, one or more user inputs to one or more of the input fields. In particular embodiments, the software tool may generate, at the user interface, a visualization comprising one or more analysis results associated with the plurality of microbiome samples. The one or more analysis results may be generated based on the one or more user inputs. The software tool may further output an exportable report and software code comprising the generated visualization.
In particular embodiments, a computing system may preprocess a plurality of microbiome samples for microbiome analyses to be performed by a software tool. The computing system may then input the processed microbiome samples to the software tool. The computing system may then use the software tool to perform quality control on the processed microbiome samples. In particular embodiments, the computing system may use the software tool to perform one or more microbiome analyses based on one or more user inputs. The computing system may further generate an exportable report comprising analysis results associated with the one or more microbiome analyses.
In particular embodiments, an initial step of to perform an analysis within the software tool 120 may be to pre-process data as desired following the understanding of sampling characteristics. Initial visualizations may help in quality control (QC) 125 and understanding of sequencing depth and feature detection characteristics. A next step may comprise selecting (or receiving a selection of) a taxonomy level, and aggregating data at the chosen level for downstream analyses.
In particular embodiments, intra-sample analysis 130 may comprise functions focused on investigating the microbial composition within a sample or a group of samples. The software tool 120 may provide user options and visualizations to explore the relative abundance, feature abundance or alpha diversity. In particular embodiments, inter-sample analysis 135 may focus on differences between samples or groups of samples through heatmaps of variable or differentially abundant operational taxonomic units (OTUs) or features and beta diversity calculations. Beta diversity distance metrics may vary within the software package and include Bray-Curtis. In particular embodiments, feature correlation analysis 140 of the software tool 120 may provide scatterplots of abundance between features and correlation statistics which may be faceted by phenotypes. A test for significance within each facet may be performed. Phenotype correlation 140 may also be provided, in which the relationship between a feature and a continuous phenotype may be analyzed. In particular embodiments, the software tool 120 may perform differential abundance analysis 145 using DESeq2, Kruskal-Wallis, limma, or a zero-inflated log normal model. DESeq2 and limma are methods for comparisons in microarray and RNA-sequencing data that have been adapted for microbiome data. Kruskal-Wallis is a non-parametric test for any differences in distribution between groups. The zero-inflated log normal model is implemented in the metagenomeSeq package to account for zero-inflation in microbiome data. In particular embodiments, the software tool 120 may provide longitudinal analysis 150, including the option to visualize feature abundances across specific levels of a phenotype, such as dates or tissue types. Optionally, a separate phenotype may be used to link a common data point across the different levels with lines. In particular embodiments, the software tool 120 may additionally provide survival analysis 155, including the option to visualize survival analysis of sample data. The survival analysis 155 may help users understand the samples that were lost track of or the samples that haven't had an event (e.g., death). In particular embodiments, the software tool 120 may further report or output selected analyses and export them in files with different formats such as HTML, PDF, Word document, or PowerPoint with R markdown code for reproducibility and adjustments.
In particular embodiments, the software tool 120 may accept several different data/file formats comprising metagenome sequencing results which may be stored at an MRexperiment file (a modified object for the data from high-throughput sequencing experiments) internally. If an MRexperiment file is already available, a user may simply upload it as, e.g., an RData file (designed for use with R) or an RDS object (a single R object). In particular embodiments, the software tool 120 may determine the correct file format based on the file extension. If an MRexperiment file is not already available, biological observation matrix (BIOM) formatted files produced by any program may also be provided. As an example and not by way of limitation, such program may comprise QIIME2 (a computing environment for processing and analyzing amplicon library data) or mothur (an open source software package for bioinformatics data processing). If an MRexperiment file is not already available, a simple counts matrix in CSV (comma-separated values) or TSV (tab-separated values) format may be also uploaded. In particular embodiments, the software tool 120 may use a counts matrix which may have no row names to store the information on the features or operational taxonomic units (OTUs) in its first columns. All other columns names may correspond to sample names. If the data does not contain phenotype information or in case the user wants to adjust the phenotype information included with an MRexperiment or BIOM file, they may upload an additional phenotype file and link it with the counts data. The required format may be such that each sample is a row with the names of the rows in the phenotype data corresponding to the names of the columns in the count data. Appending several phenotype files by subsequent uploads may be possible. If no phenotype file is given, the names of the columns of the count data may be used as the phenotype data. Finally, if not already included with a given MRexperiment, a feature data file may be provided if aggregation to a particular phylogenetic level is desired. In particular embodiments, each unique feature may be a row corresponding to the ones in the counts data feature column and each column may be a taxonomy level. All three data entities (counts, phenotypes and features) may be stored together internally as an MRexperiment, which may be downloaded (if desired) via a “Get Data” option on the data input interface of the microbiome analysis tool.
In particular embodiments, the software tool 120 may generate one or more quality-control plots based on the accessed microbiome samples. Once the data has been uploaded, several QC plots may give an overview of the number of features and the number of reads available in each of the samples.
In particular embodiments, the software tool 120 may receive, via the user interface of the software tool, a data-filtering input based on one or more of minimum sample presence, minimum number of features, or minimum number of reads. As illustrated in
As indicated in
After all required modifications to the counts, phenotype or feature annotation data have been completed, the user may switch to the analysis section of the software tool 120. The analysis workflow within the software tool 120 may be split into six different sections: intra sample 130, inter sample 135, correlation 140, differential abundance 145, longitudinal 150, and survival 155. Each plot within a corresponding analysis section may be generated after the user sets all required input elements and clicks the “update” button. All visualizations may be implemented using the plotly R package which provides basic interactivity, including zooming or panning via its mode bar. In addition, the user may export the plot in its current state (i.e., showing specific user interactions) as a scalable vector graphic (SVG) file using the camera icon of the mode bar. Every analysis section may comprise one or more “report” buttons associated with its respective input fields. In order to include the results of the current analysis, i.e., the currently visible plots, the user may click the “report” button which may include code to reproduce the visualization outside of the software tool.
In particular embodiments, the microbiome analyses may comprise an intra-sample analysis 130 comprising investigating microbial composition within a microbiome sample or a group of microbiome samples. The intra-sample analysis 130 may compare compositions in each sample or groups or samples. For intra-sample analysis 130, the one or more analysis results may comprise one or more of relative abundance, feature abundance, or alpha diversity. Different functions may be available to visualize the relative abundance of top features, the abundance of a specific feature as well as the alpha diversity within the sample. Within the software tool 120, one common set of input elements may be used to generate all visualization.
In particular embodiments, the one or more analysis results may comprise relative abundance. The relative abundance may comprise one or more abundant features in a bar plot generated based on one or more user-specified analysis parameters. In particular embodiments, the one or more user-specified analysis parameters may comprise one or more of a phenotype, a faceting manner, or a feature. The bar plot may be modifiable based on one or more of a number of features to show, a switch between showing percentage or reads, or a plot width. As an example and not by way of limitation, relative abundance may show the most abundant features in a bar plot summarized by a user-defined variable across the x-axis. In addition, the user may choose to facet by phenotypes, adjust the number of features to show, switch between showing total numbers (reads) and normalized value (if normalized), and modify the overall plot width. In general, main input elements may be defined before any visualization can be produced whereas the plot options may only modify existing plots if deemed necessary.
In particular embodiments, the one or more analysis results may comprise feature abundance. The feature abundance may comprise an individual abundance of a specific feature as a box plot or a categorical scatterplot generated based on one or more user-specified analysis parameters. The one or more user-specified analysis parameters may comprise one or more of a phenotype, a faceting manner, or a feature. In particular embodiments, the box plot or categorical scatterplot may be modifiable based on one or more of a switch between showing points or not showing points, a switch between showing log scale or not showing log scale, a switch between showing percentage or reads, or a plot width. In particular embodiments, the feature abundance plot may show the individual abundance of a specific feature either as a boxplot or a categorical scatterplot depending on the x-axis variable chosen. The user may choose to employ a particular scale, define plot width and decide whether to show individual sample points or not. Feature plots may be opened by selecting a specific feature in the input section or by clicking on a feature in the relative abundance plot.
In particular embodiments, the one or more analysis results may comprise alpha diversity. The alpha diversity may comprise a measure of a complexity or a diversity within a particular microbiome sample (e.g., habitat or area) as a box plot generated based on one or more user-specified analysis parameters. In particular embodiments, the one or more user-specified analysis parameters may comprise one or more of a phenotype, a faceting manner, or a feature. The box plot may be modifiable based on one or more of an index, a coloring manner, or a plot width. Alpha diversity may be computed by functions in the vegan package and may be visualized as a boxplot using the same input definitions by feature and relative abundance. The user may choose to color and thus split the boxes by a phenotype and set the overall plot width. In particular embodiments, multiple diversity measures may be offered with Shannon diversity provided as the default. Shannon diversity in particular may measure how evenly the microbes are distributed in a sample and may be defined based on the proportion of an individual feature. The diversity measure may be changed via the plot options and the plots may be split by a specific phenotype coloring.
In particular embodiments, the microbiome analyses may comprise an inter-sample analysis 135. The inter-sample analysis 135 may comprise determining differences between microbiome samples or a group of microbiome samples. The inter-sample analysis 135 may focus on differences between samples or groups of samples via feature heatmaps and beta diversity calculations. Accordingly, the one or more analysis results may comprise one or more of beta diversity or feature heatmap. The inter-sample analysis 135 may enable a user to analyze microbiome differentiations between samples or phenotype groups. Based on inter-sample analysis 135, the software tool 120 may provide beta diversity visualizations and heatmaps. In particular embodiments, responsive to different user selections of the provided options, the software tool 20 may show the extent to which a given variable is contributing to beta diversity or heatmap coloring. The software tool 120 may also display clusters or data of interest via the user interface to a user.
In particular embodiments, the one or more analysis results may comprise beta diversity. The beta diversity may comprise a measure of a complexity of communities between microbiome samples, as compared to within a sample (i.e., alpha diversity). The measure may be based on one or more user-specified analysis parameters. In particular embodiments, the one or more user-specified analysis parameters may comprise one or more of a distance matrix, an Adonis variable, or an Adonis strata. The beta diversity may be illustrated as a scatter plot generated based on principle component analysis. The scatter plot may be modifiable based on one or more of a selection of one or more principal components, a coloring ellipse based on a phenotype, a shape based on a phenotype, a point size, or a plot width. Calculating beta diversity may first require the computation of a pairwise distance or similarity matrix. With the software tool, the user may select between different measures offered via the vegan package. As an example and not by way of limitation, bray may be the suggested default selection of the measures for microbiome analysis.
In particular embodiments, principal component analysis, a dimension reduction method, may be subsequently performed on the chosen distance matrix and visualized in a scatter plot. The user may have the option to choose the principal components to display, add coloring and confidence ellipses based on a phenotype, define the shape based on a phenotype, and adjust both the point size as well as the overall plot width. In particular embodiments, permutational multivariate analysis of variance (PERMANOVA), from the vegan package may be offered via the software tool 120. In particular embodiments, a user may choose to use command lines to run this function independently and pass the results to the plotting function. A PERMANOVA analysis may let the user statistically determine if the centroids of a dissimilarity or distance matrix differ between groups of samples. Optionally, the user may select a phenotype as well as a strata variable with the results being shown, both within the visualization as well as in a table below it.
In particular embodiments, the one or more analysis results may comprise feature heatmap. The feature heatmap may comprise a visualization on differences and similarities between microbiome samples. In particular embodiments, the feature heatmap may be generated based on one or more of a number of top features sorted by a user-defined criteria or a user selected feature. The user-defined criteria may comprise one or more of variance, Fano factor, or median absolute deviation.
In particular embodiments, the microbiome analyses may comprise a correlation analysis 140. The correlation analysis 140 may comprise a visualization of relationship between two features or a feature and a phenotype in a scatter plot enhanced with a linear regression statistic. Faceting and/or coloring by phenotypes may be available in both correlation plots. In particular embodiments, the correlation analysis 140 may be generated based on an association-evaluation method comprising one or more of Spearman, Person, or Kendall. In particular embodiments, Spearman may be the default method. The user may be asked to choose between different methods to aid in the evaluation of the association. The correlation analysis 140 may be further generated based on one or more user-specified analysis parameters comprising one or more of a base feature, a correlation feature, or a correlation phenotype. In particular embodiments, the most common feature may be selected by default as the base feature and the user may have to set the correlation feature or phenotype and may opt to change the base feature. A regression line may be added by default but may be removed via the plot options by the user.
In particular embodiments, the microbiome analyses may comprise a differential abundance analysis 145. The differential abundance analysis 145 may comprise a test of null hypothesis that a mean or mean ranks between groups of microbiome samples are the same for a specific feature. In particular embodiments, the differential abundance analysis 145 may be generated based on one or more user-specified analysis parameters comprising one or more of a testing method, a comparison phenotype, or a comparison level. The software tool 120 may further generate an interactive table for the differential abundance analysis 145, the interactive table being operable for a user to open feature plots showing specific levels selected by the user. Differential abundance analysis 145 may help detect changes in feature abundance across two or more different levels of a phenotype. In particular embodiments, four different methods may be chosen via the software tool 120, namely DESeq2, Kruskal-Wallis, limma, or a zero-inflated log normal model. DESeq2 and limma are widely used methods for comparisons in microarray and RNA-sequencing data which may easily be adapted for microbiome data. Kruskal-Wallis is a non-parametric test for any differences in distribution between groups. The zero-inflated log normal model may be implemented in the metagenomeSeq package to account for zero-inflation in microbiome data. In particular embodiments, DESeq2 may be used with small (e.g., <=25) sample sizes. The results may be displayed in an interactive table (DT) within the software tool 120 and the user may open feature plots showing the specific levels by clicking on a row of interest.
In particular embodiments, the microbiome analyses may comprise a longitudinal analysis 150. The longitudinal analysis 150 may comprise a comparison of microbial composition across time points or conditions (e.g., tissues). In particular embodiments, the longitudinal analysis 150 may be generated based on one or more user-specified analysis parameters comprising one or more of a selected feature, a longitudinal phenotype, a phenotype level order, or a phenotype identifier. The software tool 120 may further generate an interactive visualization of a feature plot corresponding to the longitudinal analysis 150, the interactive visualization being operable for a user to select and color one or more specific phenotype identifiers within the feature plot. The order of the phenotype levels may be preserved in the visualization. The longitudinal analysis 150 may allow the user to generate feature plots with more control over the data shown within the plot. For a specific feature, the user may choose a phenotype and specific levels of that phenotype to show in the plot. The chosen order of the levels may be kept within the visualization which allows sorting by specific dates or tissues among other things. In particular embodiments, all of these input elements may be required to produce a visualization. In addition, if desired and available, the user may choose a specific phenotype to summarize on which will then be connected by lines across the different levels. The user may use the optional phenotype identifier (ID) parameter to add connections between IDs over all selected time points/conditions. The resulting visualization may be interactive and the user may then select and color specific IDs within the plot by clicking on the lines or selecting them via the input element above the plot. In particular embodiments, several different IDs may be selected using different colors via the color select element next to the input element. In order to do this via mouse clicks on the plot, the user may hold the shift key when adding additional line selections. The user may also double click near the edge of the plot to remove selections.
In particular embodiments, the computing system may access a plurality of microbiome samples. The computing system may then receive one or more user-specified analysis parameters associated with a request for a survival analysis 155. The one or more user-specified analysis parameters may comprise one or more of a selected feature, a selected diversity index, a split of groups, or a phenotype. In particular embodiments, the computing system may generate a visualization comprising a result of the survival analysis 155 associated with the plurality of microbiome samples. The result of the survival analysis 155 may be generated based on the one or more user-specified analysis parameters. The computing system may further generate an exportable report and software code comprising the generated visualization. In particular embodiments, a survival analysis 155 may focus on the time to a particular event. As an example and not by way of limitation, the event may be a death if it is about a time to overall survival. As another example and not by way of limitation, the event may be a well-defined progression event. The survival analysis 155 may be based on the time to the event and the censoring, i.e., whether the sample was censored or whether there was a particular event. In particular embodiments, samples being censored may mean they did not die, but it is unknown or we lost them since the time of randomization beyond this particular time, and they have not had a death. If they had an event, that may mean they died at this particular time since randomization.
In particular embodiments, the survival analysis 155 may be based on a Kaplan-Meier curve. Kaplan-Meier is a traditional way for survival analysis 155, or timed events.
Once an analysis is complete, a user may share the results with other users or download the results for further analysis. In particular embodiments, the software tool 120 may enable the user to download the results by providing the option to include any part or all of the analysis in a report. In particular embodiments, the exportable report may be generated based on one or more report setting specified by a user via the software tool 120. The one or more report settings may comprise one or more of a file name, a report title, author information, or introductory text. In particular embodiments, the exportable report may be in a format specified by the user. The software code may be identified as related to a particular analysis of the microbiome analyses. In particular embodiments, the report may be fully reproducible outside of the software tool 120.
In order to obtain the report, the user may first click the “Generate” 1818 button. Then the relevant R code collected during the analysis anytime the user clicks the “Export” 1820 button may be written to a temporary file. The temporary R file may be then knitted into a document. As an example and not by way of limitation, the document may be a R markdown (.rmd) file. As another example and not by way of limitation, knitting the temporary R file into the document may be based on knitr::spin. In particular embodiments, the R markdown document may be subsequently rendered to the desired output format(s), e.g., with rmarkdown::render. R code chunks may be enhanced with basic parameters to optimize the sizing of figures.
During the process of report generation, any analysis may be repeated for each output format while calling the render function. In particular embodiments, the software tool 120 may generate reports as a background process and send the results to users in different communication methods. As an example and not by way of limitation, the results may be sent to users via email. In particular embodiments, once the render process is completed, the user may download the results by clicking “EXPORT” 1820. As an example and not by way of limitation, the user may then obtain a zip folder which holds both the R markdown document as well as any output formats specified by the user. In particular embodiments, the R markdown document may be edited and re-rendered outside of the software tool. The user may need to adjust the path to the input data to do so. In particular embodiments, all functionality available via the software tool may be also accessible via the command line in a standard R environment.
This disclosure contemplates any suitable number of computer systems 2200. This disclosure contemplates computer system 2200 taking any suitable physical form. As example and not by way of limitation, computer system 2200 may be an embedded computer system, a system-on-chip (SOC), a single-board computer system (SBC) (such as, for example, a computer-on-module (COM) or system-on-module (SOM)), a desktop computer system, a laptop or notebook computer system, an interactive kiosk, a mainframe, a mesh of computer systems, a mobile telephone, a personal digital assistant (PDA), a server, a tablet computer system, or a combination of two or more of these. Where appropriate, computer system 2200 may include one or more computer systems 2200; be unitary or distributed; span multiple locations; span multiple machines; span multiple data centers; or reside in a cloud, which may include one or more cloud components in one or more networks. Where appropriate, one or more computer systems 2200 may perform without substantial spatial or temporal limitation one or more steps of one or more methods described or illustrated herein. As an example and not by way of limitation, one or more computer systems 2200 may perform in real time or in batch mode one or more steps of one or more methods described or illustrated herein. One or more computer systems 2200 may perform at different times or at different locations one or more steps of one or more methods described or illustrated herein, where appropriate.
In particular embodiments, computer system 2200 includes a processor 2202, memory 2204, storage 2206, an input/output (I/O) interface 2208, a communication interface 2210, and a bus 2212. Although this disclosure describes and illustrates a particular computer system having a particular number of particular components in a particular arrangement, this disclosure contemplates any suitable computer system having any suitable number of any suitable components in any suitable arrangement.
In particular embodiments, processor 2202 includes hardware for executing instructions, such as those making up a computer program. As an example and not by way of limitation, to execute instructions, processor 2202 may retrieve (or fetch) the instructions from an internal register, an internal cache, memory 2204, or storage 2206; decode and execute them; and then write one or more results to an internal register, an internal cache, memory 2204, or storage 2206. In particular embodiments, processor 2202 may include one or more internal caches for data, instructions, or addresses. This disclosure contemplates processor 2202 including any suitable number of any suitable internal caches, where appropriate. As an example and not by way of limitation, processor 2202 may include one or more instruction caches, one or more data caches, and one or more translation lookaside buffers (TLBs). Instructions in the instruction caches may be copies of instructions in memory 2204 or storage 2206, and the instruction caches may speed up retrieval of those instructions by processor 2202. Data in the data caches may be copies of data in memory 2204 or storage 2206 for instructions executing at processor 2202 to operate on; the results of previous instructions executed at processor 2202 for access by subsequent instructions executing at processor 2202 or for writing to memory 2204 or storage 2206; or other suitable data. The data caches may speed up read or write operations by processor 2202. The TLBs may speed up virtual-address translation for processor 2202. In particular embodiments, processor 2202 may include one or more internal registers for data, instructions, or addresses. This disclosure contemplates processor 2202 including any suitable number of any suitable internal registers, where appropriate. Where appropriate, processor 2202 may include one or more arithmetic logic units (ALUs); be a multi-core processor; or include one or more processors 2202. Although this disclosure describes and illustrates a particular processor, this disclosure contemplates any suitable processor.
In particular embodiments, memory 2204 includes main memory for storing instructions for processor 2202 to execute or data for processor 2202 to operate on. As an example and not by way of limitation, computer system 2200 may load instructions from storage 2206 or another source (such as, for example, another computer system 2200) to memory 2204. Processor 2202 may then load the instructions from memory 2204 to an internal register or internal cache. To execute the instructions, processor 2202 may retrieve the instructions from the internal register or internal cache and decode them. During or after execution of the instructions, processor 2202 may write one or more results (which may be intermediate or final results) to the internal register or internal cache. Processor 2202 may then write one or more of those results to memory 2204. In particular embodiments, processor 2202 executes only instructions in one or more internal registers or internal caches or in memory 2204 (as opposed to storage 2206 or elsewhere) and operates only on data in one or more internal registers or internal caches or in memory 2204 (as opposed to storage 2206 or elsewhere). One or more memory buses (which may each include an address bus and a data bus) may couple processor 2202 to memory 2204. Bus 2212 may include one or more memory buses, as described below. In particular embodiments, one or more memory management units (MMUs) reside between processor 2202 and memory 2204 and facilitate accesses to memory 2204 requested by processor 2202. In particular embodiments, memory 2204 includes random access memory (RAM). This RAM may be volatile memory, where appropriate. Where appropriate, this RAM may be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, where appropriate, this RAM may be single-ported or multi-ported RAM. This disclosure contemplates any suitable RAM. Memory 2204 may include one or more memories 2204, where appropriate. Although this disclosure describes and illustrates particular memory, this disclosure contemplates any suitable memory.
In particular embodiments, storage 2206 includes mass storage for data or instructions. As an example and not by way of limitation, storage 2206 may include a hard disk drive (HDD), a floppy disk drive, flash memory, an optical disc, a magneto-optical disc, magnetic tape, or a Universal Serial Bus (USB) drive or a combination of two or more of these. Storage 2206 may include removable or non-removable (or fixed) media, where appropriate. Storage 2206 may be internal or external to computer system 2200, where appropriate. In particular embodiments, storage 2206 is non-volatile, solid-state memory. In particular embodiments, storage 2206 includes read-only memory (ROM). Where appropriate, this ROM may be mask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM), or flash memory or a combination of two or more of these. This disclosure contemplates mass storage 2206 taking any suitable physical form. Storage 2206 may include one or more storage control units facilitating communication between processor 2202 and storage 2206, where appropriate. Where appropriate, storage 2206 may include one or more storages 2206. Although this disclosure describes and illustrates particular storage, this disclosure contemplates any suitable storage.
In particular embodiments, I/O interface 2208 includes hardware, software, or both, providing one or more interfaces for communication between computer system 2200 and one or more I/O devices. Computer system 2200 may include one or more of these I/O devices, where appropriate. One or more of these I/O devices may enable communication between a person and computer system 2200. As an example and not by way of limitation, an I/O device may include a keyboard, keypad, microphone, monitor, mouse, printer, scanner, speaker, still camera, stylus, tablet, touch screen, trackball, video camera, another suitable I/O device or a combination of two or more of these. An I/O device may include one or more sensors. This disclosure contemplates any suitable I/O devices and any suitable I/O interfaces 2208 for them. Where appropriate, I/O interface 2208 may include one or more device or software drivers enabling processor 2202 to drive one or more of these I/O devices. I/O interface 2208 may include one or more I/O interfaces 2208, where appropriate. Although this disclosure describes and illustrates a particular I/O interface, this disclosure contemplates any suitable I/O interface.
In particular embodiments, communication interface 2210 includes hardware, software, or both providing one or more interfaces for communication (such as, for example, packet-based communication) between computer system 2200 and one or more other computer systems 2200 or one or more networks. As an example and not by way of limitation, communication interface 2210 may include a network interface controller (NIC) or network adapter for communicating with an Ethernet or other wire-based network or a wireless NIC (WNIC) or wireless adapter for communicating with a wireless network, such as a WI-FI network. This disclosure contemplates any suitable network and any suitable communication interface 2210 for it. As an example and not by way of limitation, computer system 2200 may communicate with an ad hoc network, a personal area network (PAN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), or one or more portions of the Internet or a combination of two or more of these. One or more portions of one or more of these networks may be wired or wireless. As an example, computer system 2200 may communicate with a wireless PAN (WPAN) (such as, for example, a BLUETOOTH WPAN), a WI-FI network, a WI-MAX network, a cellular telephone network (such as, for example, a Global System for Mobile Communications (GSM) network), or other suitable wireless network or a combination of two or more of these. Computer system 2200 may include any suitable communication interface 2210 for any of these networks, where appropriate. Communication interface 2210 may include one or more communication interfaces 2210, where appropriate. Although this disclosure describes and illustrates a particular communication interface, this disclosure contemplates any suitable communication interface.
In particular embodiments, bus 2212 includes hardware, software, or both coupling components of computer system 2200 to each other. As an example and not by way of limitation, bus 2212 may include an Accelerated Graphics Port (AGP) or other graphics bus, an Enhanced Industry Standard Architecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT) interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBAND interconnect, a low-pin-count (LPC) bus, a memory bus, a Micro Channel Architecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, a PCI-Express (PCIe) bus, a serial advanced technology attachment (SATA) bus, a Video Electronics Standards Association local (VLB) bus, or another suitable bus or a combination of two or more of these. Bus 2212 may include one or more buses 2212, where appropriate. Although this disclosure describes and illustrates a particular bus, this disclosure contemplates any suitable bus or interconnect.
Herein, a computer-readable non-transitory storage medium or media may include one or more semiconductor-based or other integrated circuits (ICs) (such, as for example, field-programmable gate arrays (FPGAs) or application-specific ICs (ASICs)), hard disk drives (HDDs), hybrid hard drives (HHDs), optical discs, optical disc drives (ODDs), magneto-optical discs, magneto-optical drives, floppy diskettes, floppy disk drives (FDDs), magnetic tapes, solid-state drives (SSDs), RAM-drives, SECURE DIGITAL cards or drives, any other suitable computer-readable non-transitory storage media, or any suitable combination of two or more of these, where appropriate. A computer-readable non-transitory storage medium may be volatile, non-volatile, or a combination of volatile and non-volatile, where appropriate.
Herein, “or” is inclusive and not exclusive, unless expressly indicated otherwise or indicated otherwise by context. Therefore, herein, “A or B” means “A, B, or both,” unless expressly indicated otherwise or indicated otherwise by context. Moreover, “and” is both joint and several, unless expressly indicated otherwise or indicated otherwise by context. Therefore, herein, “A and B” means “A and B, jointly or severally,” unless expressly indicated otherwise or indicated otherwise by context.
The scope of this disclosure encompasses all changes, substitutions, variations, alterations, and modifications to the example embodiments described or illustrated herein that a person having ordinary skill in the art would comprehend. The scope of this disclosure is not limited to the example embodiments described or illustrated herein. Moreover, although this disclosure describes and illustrates respective embodiments herein as including particular components, elements, feature, functions, operations, or steps, any of these embodiments may include any combination or permutation of any of the components, elements, features, functions, operations, or steps described or illustrated anywhere herein that a person having ordinary skill in the art would comprehend. Furthermore, reference in the appended claims to an apparatus or system or a component of an apparatus or system being adapted to, arranged to, capable of, configured to, enabled to, operable to, or operative to perform a particular function encompasses that apparatus, system, component, whether or not it or that particular function is activated, turned on, or unlocked, as long as that apparatus, system, or component is so adapted, arranged, capable, configured, enabled, operable, or operative. Additionally, although this disclosure describes or illustrates particular embodiments as providing particular advantages, particular embodiments may provide none, some, or all of these advantages.
This application claims the benefit, under 35 U.S.C. § 119(e), of U.S. Provisional Patent Application No. 63/054859, filed 22 Jul. 2020, which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
63054859 | Jul 2020 | US |