Creating visualizations of large data sets is a difficult problem since the process of rendering a significantly large number of data points on a screen or printer with limited resolution involves a significant reduction in the detail available.
There are many statistical methods that are used to reduce the data points displayed on data visualizations. These methods fail to provide a means for representing data more concisely and without losing the information required to return to the original presentation. These methods also fail to allow the users to easily change the resolution of a visualization without extensive use of processing resources. Thus, there is a need for more advanced visualization technology that uses techniques that will enable users to analyze data of significant volume and complexity at varying levels of resolution without materially losing information and without requiring significant processing each time a change in resolution is made.
It is to be understood that both the following general description and the following detailed description are exemplary and explanatory only and are not restrictive, as claimed. Provided are methods and systems for representing data. An example method can comprise providing a first representation of data and receiving a request to change resolution of the data. The data can be transformed, based on at least one wavelet function, to at least one of reduced data or expanded data. A second representation of the data can be provided based on at least one of the reduced data or expanded data.
In another aspect, an example method can comprise converting a plurality of database records into corresponding vectors. At least one of the vectors can be transformed based on a wavelet function. A representation of values of the database records can be provided based on a result of the transforming the at least one of the vectors.
In another aspect, an example method can comprise receiving first data. The first data can be reduced according to a transformation based on at least one first wavelet function. The reduced first data can be selectively displayed.
Additional advantages will be set forth in part in the description which follows or may be learned by practice. The advantages will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims.
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate embodiments and together with the description, serve to explain the principles of the methods and systems:
Before the present methods and systems are disclosed and described, it is to be understood that the methods and systems are not limited to specific methods, specific components, or to particular implementations. It is also to be understood that the terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting.
As used in the specification and the appended claims, the singular forms “a,” “an” and “the” include plural referents unless the context clearly dictates otherwise. Ranges may be expressed herein as from “about” one particular value, and/or to “about” another particular value. When such a range is expressed, another embodiment includes from the one particular value and/or to the other particular value. Similarly, when values are expressed as approximations, by use of the antecedent “about,” it will be understood that the particular value forms another embodiment. It will be further understood that the endpoints of each of the ranges are significant both in relation to the other endpoint, and independently of the other endpoint.
“Optional” or “optionally” means that the subsequently described event or circumstance may or may not occur, and that the description includes instances where said event or circumstance occurs and instances where it does not.
Throughout the description and claims of this specification, the word “comprise” and variations of the word, such as “comprising” and “comprises,” means “including but not limited to,” and is not intended to exclude, for example, other components, integers or steps. “Exemplary” means “an example of” and is not intended to convey an indication of a preferred or ideal embodiment. “Such as” is not used in a restrictive sense, but for explanatory purposes.
Disclosed are components that can be used to perform the disclosed methods and systems. These and other components are disclosed herein, and it is understood that when combinations, subsets, interactions, groups, etc. of these components are disclosed that while specific reference of each various individual and collective combinations and permutation of these may not be explicitly disclosed, each is specifically contemplated and described herein, for all methods and systems. This applies to all aspects of this application including, but not limited to, steps in disclosed methods. Thus, if there are a variety of additional steps that can be performed it is understood that each of these additional steps can be performed with any specific embodiment or combination of embodiments of the disclosed methods.
The present methods and systems may be understood more readily by reference to the following detailed description of preferred embodiments and the examples included therein and to the Figures and their previous and following description.
As will be appreciated by one skilled in the art, the methods and systems may take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware aspects. Furthermore, the methods and systems may take the form of a computer program product on a computer-readable storage medium having computer-readable program instructions (e.g., computer software) embodied in the storage medium. More particularly, the present methods and systems may take the form of web-implemented computer software. Any suitable computer-readable storage medium may be utilized including hard disks, CD-ROMs, optical storage devices, or magnetic storage devices.
Embodiments of the methods and systems are described below with reference to block diagrams and flowchart illustrations of methods, systems, apparatuses and computer program products. It will be understood that each block of the block diagrams and flowchart illustrations, and combinations of blocks in the block diagrams and flowchart illustrations, respectively, can be implemented by computer program instructions. These computer program instructions may be loaded onto a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions which execute on the computer or other programmable data processing apparatus create a means for implementing the functions specified in the flowchart block or blocks.
These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including computer-readable instructions for implementing the function specified in the flowchart block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer-implemented process such that the instructions that execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart block or blocks.
Accordingly, blocks of the block diagrams and flowchart illustrations support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the block diagrams and flowchart illustrations, and combinations of blocks in the block diagrams and flowchart illustrations, can be implemented by special purpose hardware-based computer systems that perform the specified functions or steps, or combinations of special purpose hardware and computer instructions.
The present invention relates to visual data reduction techniques that allow the user to easily transition between a display of millions of data points on a visualization to a display of a few thousand points. These techniques enable the reduction of larger data points into a summation of “basis” data without losing the pattern and information density found in the original data. Through the teachings of the present disclosure it is possible to have a significant data reduction ratio, without losing the ability to restore the data that has been reduced to its initial state, and without significant errors and processing resources. While these techniques afford the reduction of the data points being display in a visualization, they intelligently keep the information about the original data points so that transitions can easily and accurately be made the original and the reduced data point visualizations. The techniques described herein allow users to zoom in and zoom out on the visualization with a fraction of time and processing required by current techniques. Using the techniques of the present disclosure the users can also selectively drill down (e.g., zoom in) on specific portions of a visualization by selecting the applicable data points where a drill down is required. As the techniques keep track of the relationship between the original and the reduced data, transitioning between the detailed and the less detailed information is facilitated. For example,
Such techniques as will be described in this disclosure can also be used with graphs such as the bar chart illustrated in
Currently the primary technique used to reduce data to a manageable size for visualizations is data compression, which is the process of encoding the data to remove information that is thought to be redundant or unnecessary, thereby using fewer bits to represent the data set than used for the original representation. Similarly polynomial interpolation is also sometimes used. Although compression techniques and polynomial techniques do allow for data reduction, compression and polynomial techniques typically require significant extra processing to provide the compression and, to the extent it is even possible, similarly significant processing to restore the data to something close to its original form. In addition, with compression and polynomial techniques, the points that are considered redundant as part of the compression or interpolation processes are typically eliminated and lost, and cannot be restored without repeating the inquiries and the like that led to the original variation. Such loss degrades the analysis process of the data. Accordingly, neither of compression or polynomial techniques have been able to provide a reasonable solution to the problem of displaying large data sets while allowing the viewer to zoom in or out to a resolution that is appropriate to best understand the data being visualized.
The present invention is able to achieve this zooming in and out functionality by the use of mathematical functions called wavelets. When visualized, a wavelet can be represented as a wave-like oscillation, such as the one illustrated in
From a functional point of view wavelets can be represented as a tree or family of filters, such as are illustrated in
Furthermore the selection of the appropriate wavelets and the determination of the parameters for the filters used to maximize the ability to zoom in and out on the data with minimal error and processing, are also non-trivial. For example, the varying frequencies, periods, amplitudes and shapes of the Daubechies families of wavelets seem particularly suited for the techniques of the present disclosure. It is however noted that other families of wavelets and other frequencies, amplitudes, periods, shapes and other wavelet characteristics can produce similar results and are intended to be covered within the teachings of the present disclosure.
Referring now to
v[n]=(Dim1[n],Dim2[n]·Dimx[n])
With respect to
Reference is now made to the
Using the teachings of the present disclosure the vector v[n] referenced above, can be processed using the wavelets, to transform the vector into one or more wavelet transforms. Classic wavelet theory notation introduces the father wavelet function denoted by φ and the mother wavelet function denoted by ψ. The father wavelet can contain the low frequency fundamental information about the signal and the mother wavelet can contain the high frequency details of the signal. These functions can be chosen to be orthogonal, compliant with the momentum condition, smooth, condensed, and of limited energy in accordance with classic wavelet theory. Accordingly:
φ(x)=Σnhnφ(2x−n) is an example father wavelet
and
ψ(x)=Σngnφ(2x−n) is an example mother wavelet
In the above equations, hn and gn are coefficients chosen to be in compliance with classic wavelet theory and associated with the high pass (ha) and low pass (gn) characteristics of the filters referenced in
In this formula an is a coefficient that can be determined in accordance with wavelet theory, and for most cases an equals vn. Accordingly the above formula is equivalent to the vector being multiplied by the father wavelet. In another aspect, the present invention can utilize other, more complicated schemes to derive an.
In one aspect, wavelet transforms can be applied in multiple levels or iterations, such as is suggested by the filtering levels in
This first level wavelet transform has been derived using the Mallat decomposition algorithm wherein:
ā=(a*h)↓2
=(a*g)↓2
In the above equations the operator * is the usual convolution operator of sequences of the real numbers:
and the operator “↓2” means that every second value is discarded. In this equation “t” is an integer chosen to cycle the summation through all of the values of the signal being represented.
If another level of wavelet analysis is desired, according to wavelet theory, the second level or iteration can be determined using the formula:
In this formula the new coefficients are determined as follows:
{tilde over (ã)}=(ã*h)↓2
{tilde over ({tilde over (b)})}=(ã*g)↓2
Accordingly,
Further levels or wavelet iterations can be derived in the same manner if desired.
In accordance with wavelet theory the second member of Daubechies wavelets can have the following values for the low pass analysis filter coefficients:
The values for the high pass analysis filter coefficient can be correspondingly:
These values can be constant regardless of the level or iteration of the wavelet analysis. The above equations can be used to reduce the original vector. Comparable equations are also available to synthesize or restore the original vector. The values for the high pass and low pass filters coefficients for the synthesis equations can be as follows:
Using the reduction coefficients h0 and g0, the first level of wavelet transform can be calculated as follows:
ã
n
=h
0
v[2(n−1)+4]+h1v[2(n−1)+3]+h2v[2(n−1)+2]+h3v[2(n−1)+1]
and
{tilde over (b)}
n
=g
0
v[2(n−1)+4]+g1v[2(n−1)+3]+g2v[2(n−1)+2]+g3v[2(n−1)+1]
These equations are calculated for n=0, 1, 2, . . . N/2 where N is the number of records in the database. So, for example, if n is equal to 1, or the first record, the above equations become:
ã
l
=h
0
v[4]+h1v[3]+h2v[2]+h3v[1]
and
{tilde over (b)}
l
=g
0
v[4]+g1v[3]+g2v[2]+g3v[1]
Since an=vn the above equations also define the first level wavelet transform of the signal. If it is desired to perform a second level of wavelet analysis the applicable formulas can be constructed in the same manner as set forth above, however ã becomes {tilde over (ã)}, {tilde over ({tilde over (b)})} becomes {tilde over ({tilde over (b)})} and v becomes ã.
Consider now the database of
In one aspect, the same procedure for rendering can be to be applied to the reduced data set as was applied to the original data set. However, as a result of the wavelet transform, the range and zero levels of the values are typically different. To return reduced data values from the wavelet transform within the same range and zero level, the transform can be scaled in a manner known to those skilled in the art. The scaling is typically defined by the following equation:
Substituting the field element values for the engines within the ƒ(x) formulas for the various levels of reduction the coefficients can be calculated for whatever other levels are chosen, and the scaling factor can then be applied. The results of these calculations after scaling are represented in
As shown in
If level 1 is the desired reduction level, it is enough to provide the values in light gray shading, as obtained from the procedure described above, to the reduced value display. If further reduction is required, another step can be applied to the data in the light gray shading, in the same manner, to reduce the values to those reflected with the darker gray shading at each subsequent level. In all cases, the values with the white or no highlight, although no longer required for the visualization of the display at that level of resolution, are kept in memory to be able to reconstruct exactly all stages during a synthesis process.
The stages of representation can be completely developed in memory and resolution and scaling adjustments made according to user inputs that are quickly computed with usual parallelisation techniques to accelerate further the computations.
A graphical representation of the bar chart for Level 1 is set forth in
To choose the number of levels of reduction that are used the data that is to be reduced can be represented by a target number of samples M. The number of levels to reduce the data can be determined by:
#L=ceil((log(N/M)/log(2.0)))
The ceil function makes sure that N/2<=M<=N.
For the two dimensional data reduction of a scatter plot, the following method is used. Consider a table with two measures Measure1 and Measure2. The scatterplot concept is to plot the N points
p[n]=(Measure1[n],Measure2[n])
A grid of √{square root over (N)}×√{square root over (N)} cells can be created. With the example database having 16 records, a grid of 4 times 4 cells can be constructed. The extent of this matrix is:
(min(Measure1),max(Measure1))×(min(Measure2),max(Measure2))
The representation is as depicted in
An image representation in grayscale of the matrix M is shown in
As previously stated, wavelet transforms can afford not only the easy and accurate reduction of a signal, but wavelet transforms can also afford the easy and accurate reconstruction of that same signal. The step for reconstructing Level 1 out of level 2 components can be expressed by the formula:
ã=({tilde over (ã)}↑2*{tilde over (h)})+({tilde over ({tilde over (b)})}↑2*{tilde over (g)})
Subsequently, the next step, reconstructing from Level 1 to the signal can be expressed by the following formula:
a=(ã↑2*{tilde over (h)})+({tilde over (b)}↑2*{tilde over (g)})
Where the up sampling operator (↑2) inserts zeros every second place and the convolution operator is applied as defined above. The coefficients of the father wavelet “ã” and mother wavelet “{tilde over (b)}” are therefore sampled up and rescaled to match up the level. The low pass and high pass parts of the signal can be filtered and combined to reconstruct exactly the original sequence “a”. The equations for Level 2 to level 1 can be as follows:
ã[2n]={tilde over (h)}1{tilde over (ã)}n+1+{tilde over (h)}3{tilde over (ã)}n−1+ǵ1{tilde over ({tilde over (b)})}n−1+{tilde over (g)}3{tilde over ({tilde over (b)})}n−1
ã[2n+1]={tilde over (h)}0{tilde over (ã)}n+2+{tilde over (h)}2{tilde over (ã)}n+2+{tilde over (g)}0{tilde over ({tilde over (b)})}n+2+{tilde over (g)}2{tilde over ({tilde over (b)})}n
For Level 1 to original signal the equations can be:
v[2n]={tilde over (h)}1ãn+1+{tilde over (h)}3ãn−1+ǵ1{tilde over (b)}n−1+{tilde over (g)}3{tilde over (b)}n−1
v[2n+1]={tilde over (h)}0ãn+2+{tilde over (h)}2ãn+2+{tilde over (g)}0{tilde over (b)}n+2+{tilde over (g)}2{tilde over (b)}n
In both cases for n=0, 1, 2, . . . N/2.
Utilizing the above techniques it is possible to easily and accurately zoom and zoom out of a visualization with complete accuracy and with minimal incremental processing. From the point of view of a user implementing these techniques there are multiple options for a user interface. Although various approaches may be utilized, all are intended to be incorporated into the scope of the present disclosure. For example in one embodiment the user may enter a required number of data points for the reduced dataset through objects such as actual data entry, drop down boxes, sliders, switches and so forth. Similarly default values for the reduction rate can be pre-programmed and actuated by clicking on an object, mousing over an object or otherwise selecting an object or a portion of an object by lassoing or other techniques.
As an illustration of the above user interface techniques,
In one aspect, the system 1600 can comprise a first device 1602. The first device 1602 can be configured to receive data from a remote source and/or user. For example, the first device 1602 can comprise a first data unit 1604 configured to receive, store, update, and otherwise manage data. In one aspect, the first data unit 1604 can comprise a data structure, such as a database. The data structure can comprise a plurality of data values organized as data records. In one aspect, the data values can be the original data values or can be data values that have been transformed according to one or more transformation algorithms.
In one aspect, the first device 1602 can comprise a first transformation unit 1606 configured to transform data. For example, the first transformation unit 1606 can be configured to reduce or expand data based on one or more wavelet functions. For example the first transformation unit 1606 can be configured to apply a wavelet transform and/or inverse wavelet transform to the data according the techniques described herein. For example, the first transformation unit 1606 can be configured to convert the data into a plurality of vectors (e.g., one vector for every database record). The first transformation unit 1606 can be configured to determine one or more coefficients, wavelet functions, and/or wavelet function parameters based on the data and the desired transformation.
In one aspect, the first device 1602 can comprise a representation unit 1608 configured to represent the data. In one aspect, the representation unit 1608 can provide a control or other user input button allowing a user to select the resolution of data represented. For example, the user can provide input requesting a reduced (e.g., lower resolution) representation of the data. As another example, the user can provide input requesting an expanded (e.g., higher resolution) representation of the data. In response to the request, the representation unit 1608 can obtain transformed data from the first transformation unit 1606.
In one aspect, the system 1600 can comprise a second device 1610 configured to communicate with the first device 1602 through a network 1612. The network 1612 can comprise network adapters, switches, routers, and the like connected through wireless links (e.g., radio frequency, satellite) and/or physical links (e.g., fiber optic cable, coaxial cable, Ethernet cable). In one aspect, the network 1612 can be configured to provide communication from telephone, cellular, modem, and/or other electronic devices to and throughout the system 1600. For example, the first device 1602 can comprise a first network unit 1614 configured to receive and transmit data across the network 1612. The second device 1610 can comprise a second network unit 1616 configured to receive and transmit data across the network 1612.
In one aspect, the second device 1610 can comprise a second data unit 1618 configured to store data. In one aspect, the second data unit 1618 can comprise a data structure, such as a database. The data structure can comprise a plurality of data values organized as data records. In one aspect, the data values can be the original data values or can be data values that have been transformed according to one or more transformation algorithms.
In one aspect, the second device 1610 can comprise a second transformation unit 1620 configured to transform data. For example, the second transformation unit 1620 can be configured to reduce or expand data based on one or more wavelet functions. For example the first transformation unit 1620 can be configured to apply a wavelet transform and/or inverse wavelet transform to the data according the techniques described herein. For example, the second transformation unit 1620 can be configured to convert the data into a plurality of vectors (e.g., one vector for ever database record). The second transformation unit 1620 can be configured to determine one or more coefficients, wavelet functions, and/or wavelet function parameters based on the data and the desired transformation.
As an illustration, the second network unit 1616 can be configured to receive a request from the first device 1602 for data. In response, the second transformation unit 1620 can be configured to transform data, such as reducing data. The second network device 1610 can be configured to provide the reduced data to the first device 1602. After the first device 1602 receives the reduced data, the first device 1602 can request an expanded version of the reduced data. For example, a user at the first device 1602 can request a higher resolution of data than the reduced data. In one aspect, the request for data from the first device 1602 can specify the level of resolution of the data. Additional transformations from the second transformation unit 1620 can be utilized to convert data to one or more resolutions for consumption by a user at the first device 1602.
At step 1706, the data can be converted to a plurality of vectors. For example, the data can be converted from a plurality of database records to the plurality of vectors. As a further example, each vector can comprise a row of a database. An example vector can comprise a list, array, collection or other group of data values from a particular database record.
At step 1708, the data can be transformed, based on at least one wavelet function, to at least one of reduced data or expanded data. For example, the at least one wavelet function can comprise a Daubechies wavelet function, mother wavelet function, father wavelet function, low pass wavelet function, high pass wavelet function, or other wavelet function. In one aspect, transforming, based on at least one wavelet function, the data to the expanded data can comprise performing an inverse wavelet transform to the data. In another aspect, transforming, based on at least one wavelet function, the data to at least one of the reduced data or the expanded data can comprise averaging first portions of the data with corresponding second portions of the data and selecting a result of the averaging as the reduced data set. For example, the first portions can be every nth (e.g., second, third, fourth, fifth) data value of the data, and the second portions can be some or all of the remaining data values. In yet another aspect, transforming the data based on the at least one wavelet function can comprise multiplying at least one wavelet function by a corresponding coefficient. The corresponding coefficient can be based on the data. For example, the corresponding coefficient can based on only a portion of the data (e.g., as few as four values from the data).
At step 1710, at least one of the reduced data or the expanded data can be resealed to match a scale of the data. For example, step 1708 may, in some cases, change the scale of the data to a different scale for the reduced data or expanded data. At step 1712, information indicative of the data can be stored. The information can be a result of the transformation. For example, the information can comprise data resulting from a high pass wavelet function (e.g., mother wavelet function). At step 1714, a second representation of the data can be provided based on at least one of the reduced data or expanded data. The second representation can comprise a graph, chart, picture, or other type of representation.
At step 1716, the reduced data or expanded data can be transformed, based on at least one wavelet function, to at least one of reduce or expand the reduced data or the expanded data. For example, expanding the reduced data can comprise restoring the data based on the reduced data and the information indicative of the data.
At step 1804, at least one of the vectors can be transformed based on a wavelet function. For example, the at least one wavelet function can comprise a Daubechies wavelet function, mother wavelet function, father wavelet function, low pass wavelet function, high pass wavelet function, or other wavelet function.
In one aspect, transforming the at least one of the vectors based on the wavelet function can comprise performing an inverse wavelet transform to the at least one of the vectors. In another aspect, transforming the at least one of the vectors based on a wavelet function can comprise determining a coefficient based on a vector of the at least one of the vectors and multiplying the wavelet function by the coefficient. For example, determining the coefficient based on the vector of the at least one of the vectors can comprise determining a result of a convolution operator applied to a first coefficient and a second coefficient. The first coefficient can be based on a value of the vector.
At step 1806, a representation of values of the database records can be provided based on a result of step 1804. In one aspect, providing the representation of values of the database records based on the result of step 1804 can comprise rescaling the transformed at least one vector to match a scale of the vectors before transformation.
At step 1904, the first data (e.g., formatted as vectors) can be reduced according to a transformation based on at least one first wavelet function. For example, the wavelet function can comprise a Daubechies wavelet function, mother wavelet function, father wavelet function, low pass wavelet function, high pass wavelet function, or other wavelet function.
At step 1906, the reduced first data can be selectively displayed. In one aspect, selectively displaying the reduced data can comprise providing a control configured to select an amount of at least one of reduction or expansion (e.g., resolution) of the first data.
At step 1908, the reduced first data can be expanded to obtain second data based on at least one second wavelet function. In one aspect, expanding the reduced first data to obtain the second data based on at least one second wavelet function can comprise multiplying a wavelet function of the at least one second wavelet functions by a corresponding coefficient. The corresponding coefficient can be based on the reduced first data. In another aspect, expanding the reduced first data to obtain the second data based on at least one second wavelet function can comprise performing an inverse wavelet transform to the reduced first data. The at least one second wavelet function can comprise a Daubechies wavelet function, mother wavelet function, father wavelet function, low pass wavelet function, high pass wavelet function, or other wavelet function. As an example, the at least one second wavelet function can comprise the same function as the at least one first wavelet function but with different parameters and/or multiplied by a different coefficient.
At step 1910, the second data can be selectively displayed. For example, some or all of the second data can be displayed. In one aspect, selectively displaying the second data can comprise providing a control configured to select an amount of at least one of reduction or expansion (e.g., resolution) of the first data and/or second data.
In an exemplary aspect, the methods and systems can be implemented on a computer 2001 as illustrated in
The present methods and systems can be operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that can be suitable for use with the systems and methods comprise, but are not limited to, personal computers, server computers, laptop devices, and multiprocessor systems. Additional examples comprise set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that comprise any of the above systems or devices, and the like.
The processing of the disclosed methods and systems can be performed by software components. The disclosed systems and methods can be described in the general context of computer-executable instructions, such as program modules, being executed by one or more computers or other devices. Generally, program modules comprise computer code, routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The disclosed methods can also be practiced in grid-based and distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules can be located in both local and remote computer storage media including memory storage devices.
Further, one skilled in the art will appreciate that the systems and methods disclosed herein can be implemented via a general-purpose computing device in the form of a computer 2001. The components of the computer 2001 can comprise, but are not limited to, one or more processors or processing units 2003, a system memory 2012, and a system bus 2013 that couples various system components including the processor 2003 to the system memory 2012. In the case of multiple processing units 2003, the system can utilize parallel computing.
The system bus 2013 represents one or more of several possible types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, such architectures can comprise an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, an Accelerated Graphics Port (AGP) bus, and a Peripheral Component Interconnects (PCI), a PCI-Express bus, a Personal Computer Memory Card Industry Association (PCMCIA), Universal Serial Bus (USB) and the like. The bus 2013, and all buses specified in this description can also be implemented over a wired or wireless network connection and each of the subsystems, including the processor 2003, a mass storage device 2004, an operating system 2005, transformation software 2006, transformation data 2007, a network adapter 2008, system memory 2012, an Input/Output Interface 2010, a display adapter 2009, a display device 2011, and a human machine interface 2002, can be contained within one or more remote computing devices 2014a,b,c at physically separate locations, connected through buses of this form, in effect implementing a fully distributed system.
The computer 2001 typically comprises a variety of computer readable media. Exemplary readable media can be any available media that is accessible by the computer 2001 and comprises, for example and not meant to be limiting, both volatile and non-volatile media, removable and non-removable media. The system memory 2012 comprises computer readable media in the form of volatile memory, such as random access memory (RAM), and/or non-volatile memory, such as read only memory (ROM). The system memory 2012 typically contains data such as transformation data 2007 and/or program modules such as operating system 2005 and transformation software 2006 that are immediately accessible to and/or are presently operated on by the processing unit 2003.
In another aspect, the computer 2001 can also comprise other removable/non-removable, volatile/non-volatile computer storage media. By way of example,
Optionally, any number of program modules can be stored on the mass storage device 2004, including by way of example, an operating system 2005 and transformation software 2006. Each of the operating system 2005 and transformation software 2006 (or some combination thereof) can comprise elements of the programming and the transformation software 2006. Transformation data 2007 can also be stored on the mass storage device 2004. Transformation data 2007 can be stored in any of one or more databases known in the art. Examples of such databases comprise, DB2®, Microsoft® Access, Microsoft® SQL Server, Oracle®, mySQL, PostgreSQL, and the like. The databases can be centralized or distributed across multiple systems.
In another aspect, the user can enter commands and information into the computer 2001 via an input device (not shown). Examples of such input devices comprise, but are not limited to, a keyboard, pointing device (e.g., a “mouse”), a microphone, a joystick, a scanner, tactile input devices such as gloves, and other body coverings, and the like. These and other input devices can be connected to the processing unit 2003 via a human machine interface 2002 that is coupled to the system bus 2013, but can be connected by other interface and bus structures, such as a parallel port, game port, an IEEE 1394 Port (also known as a Firewire port), a serial port, or a universal serial bus (USB).
In yet another aspect, a display device 2011 can also be connected to the system bus 2013 via an interface, such as a display adapter 2009. It is contemplated that the computer 2001 can have more than one display adapter 2009 and the computer 2001 can have more than one display device 2011. For example, a display device can be a monitor, an LCD (Liquid Crystal Display), or a projector. In addition to the display device 2011, other output peripheral devices can comprise components such as speakers (not shown) and a printer (not shown) which can be connected to the computer 2001 via Input/Output Interface 2010. Any step and/or result of the methods can be output in any form to an output device. Such output can be any form of visual representation, including, but not limited to, textual, graphical, animation, audio, tactile, and the like. The display 2011 and computer 2001 can be part of one device, or separate devices.
The computer 2001 can operate in a networked environment using logical connections to one or more remote computing devices 2014a,b,c. By way of example, a remote computing device can be a personal computer, portable computer, smartphone, a server, a router, a network computer, a peer device or other common network node, and so on. Logical connections between the computer 2001 and a remote computing device 2014a,b,c can be made via a network 2015, such as a local area network (LAN) and/or a general wide area network (WAN). Such network connections can be through a network adapter 2008. A network adapter 2008 can be implemented in both wired and wireless environments. Such networking environments are conventional and commonplace in dwellings, offices, enterprise-wide computer networks, intranets, and the Internet.
For purposes of illustration, application programs and other executable program components such as the operating system 2005 are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computing device 2001, and are executed by the data processor(s) of the computer. An implementation of transformation software 2006 can be stored on or transmitted across some form of computer readable media. Any of the disclosed methods can be performed by computer readable instructions embodied on computer readable media. Computer readable media can be any available media that can be accessed by a computer. By way of example and not meant to be limiting, computer readable media can comprise “computer storage media” and “communications media.” “Computer storage media” comprise volatile and non-volatile, removable and non-removable media implemented in any methods or technology for storage of information such as computer readable instructions, data structures, program modules, or other data. Exemplary computer storage media comprises, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer.
The methods and systems can employ Artificial Intelligence techniques such as machine learning and iterative learning. Examples of such techniques include, but are not limited to, expert systems, case based reasoning, Bayesian networks, behavior based AI, neural networks, fuzzy systems, evolutionary computation (e.g. genetic algorithms), swarm intelligence (e.g. ant algorithms), and hybrid intelligent systems (e.g. Expert inference rules generated through a neural network or production rules from statistical learning).
While the methods and systems have been described in connection with preferred embodiments and specific examples, it is not intended that the scope be limited to the particular embodiments set forth, as the embodiments herein are intended in all respects to be illustrative rather than restrictive.
Unless otherwise expressly stated, it is in no way intended that any method set forth herein be construed as requiring that its steps be performed in a specific order. Accordingly, where a method claim does not actually recite an order to be followed by its steps or it is not otherwise specifically stated in the claims or descriptions that the steps are to be limited to a specific order, it is no way intended that an order be inferred, in any respect. This holds for any possible non-express basis for interpretation, including: matters of logic with respect to arrangement of steps or operational flow; plain meaning derived from grammatical organization or punctuation; the number or type of embodiments described in the specification.
It will be apparent to those skilled in the art that various modifications and variations can be made without departing from the scope or spirit. Other embodiments will be apparent to those skilled in the art from consideration of the specification and practice disclosed herein. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit being indicated by the following claims.
This application is a Continuation of U.S. Non-Provisional application Ser. No. 14/084,752, filed on Nov. 20, 2013, which is incorporated by reference herein in its entirety.
Number | Date | Country | |
---|---|---|---|
Parent | 14084752 | Nov 2013 | US |
Child | 16879190 | US |