Methods And Systems For Placement Of An Electrode Array During An Intracranial Electroencephalogram
20220369993 · 2022-11-24
Assignee
Inventors
Cpc classification
A61B5/37
HUMAN NECESSITIES
A61B2562/08
HUMAN NECESSITIES
A61B34/20
HUMAN NECESSITIES
A61B2562/164
HUMAN NECESSITIES
A61B5/7264
HUMAN NECESSITIES
International classification
Abstract
An electrode system for an intracranial electroencephalogram is described. A substrate is configured to be applied directly on a brain of a patient. The substrate has a profile that is suitable to be placed within a subdural space in between a portion of intact cranium and cerebral cortex of the brain. A tracking device is arranged on the substrate. A plurality of electrodes are configured to sense electrical activity associated with the brain. Each of the plurality of electrodes has a predefined relationship with the tracking device. A tracking system is operable to determine a position of the tracking device relative to a reference point based on a strength of an electromagnetic field relative to the tracking device. A controller is configured to selectively determine a position for each of the plurality of electrodes based on the position of the tracking device and the predefined relationship.
Claims
1. An electrode system for at least one of an intracranial electroencephalogram, an intracranial electroencephalography, and an electrocorticography, the electrode system comprising: a subdural electrode array including: a substrate configured to be applied directly on a brain of a patient, the substrate being conformable to a shape of the brain and having a profile suitable to be placed within a subdural space in between a portion of intact cranium and cerebral cortex of the brain; a first tracking device arranged on the substrate; a second tracking device arranged on the substrate; and a plurality of electrodes, arranged on the substrate, configured to sense electrical activity associated with the brain, wherein each of the plurality of electrodes has a first predefined relationship with the first tracking device and a second predefined relationship; a tracking system operable to (i) determine a first position of the first tracking device relative to a reference point based on a strength of an electromagnetic field relative to the first tracking device and (ii) a second position of the second tracking device relative to the reference point based on the strength of the electromagnetic field relative to the second tracking device; and a controller configured to selectively determine a position for each of the plurality of electrodes based on at least one of the first position of the first tracking device and a nearest of the first predefined relationship and the second predefined relationship.
2. (canceled)
3. The electrode system of claim 1, wherein the plurality of electrodes is arranged on the substrate in M rows by N columns.
4. The electrode system of claim 1, wherein M is equal to one and N is equal to at least two.
5. The electrode system as claim 1, wherein M is equal to at least two and N is equal to at least two.
6. The electrode system of claim 1, wherein: the subdural electrode array includes a unique identifier; and the controller is configured to identify one or more characteristics associated with the subdural electrode array based on the unique identifier.
7. The electrode system of claim 6, wherein the unique identifier is read from at least one of a bar code, a quick response (QR) code, a radio-frequency identification tag, and a serial read-only memory chip.
8. The electrode system of claim 6, wherein the one or more characteristics include at least one of a size of the subdural electrode array, a number of the plurality of electrodes, a number of rows and columns of the plurality of electrodes, a size of the substrate, a label for each of the plurality of electrodes, a location of the first tracking device relative to the substrate, and the first predefined relationship between the first tracking device and each of the plurality of electrodes.
9. The electrode system of claim 8, wherein the controller is configured to store a plurality of different configurations of electrode arrays.
10. The electrode system of claim 9, wherein the controller is configured to receive a user selection of a type of the subdural electrode array from the plurality of different configurations of electrode arrays.
11. The electrode system of claim 10, wherein the controller is configured to receive and store one or more images of the brain.
12. The electrode system of claim 11, wherein the controller is configured to: generate for display the one or more images of the brain; and receive a user selection of a target area of the brain in which the subdural electrode array is to be applied.
13. The electrode system of claim 12, wherein the controller is configured to generate a virtual representation of a virtual electrode array, corresponding to the type of the subdural electrode array selected by the user, overlaid onto the selected target area.
14. The electrode system of claim 13, wherein: the controller is configured to register a first space associated with the brain to a second space associated with the brain; and wherein the first space is a generator coordinate system and the second space is an image coordinate system.
15. The electrode system of claim 14, wherein the controller is configured to determine when the subdural electrode array has been applied to a correct location of the brain based on a relationship between the selected target area and a real time location of the subdural electrode array.
16. The electrode system of claim 1, further comprising: an electroencephalography (EEG) amplifier configured to: receive the sensed electrical activity of the brain via a plurality of measurement signals; and amplify the plurality of measurement signals, wherein: the plurality of electrodes are configured to provide the plurality of measurement signals; the EEG amplifier is configured to provide the amplified plurality of measurement signals to the controller; and the controller is configured to determine when the subdural electrode array has been applied to the brain based on the amplified plurality of measurement signals.
17. (canceled)
18. (canceled)
19. (canceled)
20. (canceled)
21. A method for tracking a location of a plurality of electrodes of a subdural electrode array for performing at least one of an intracranial electroencephalogram, an intracranial electroencephalography, and an electrocorticography, the subdural electrode array including a substrate with a tracking device and the plurality of electrodes, wherein each of the plurality of electrodes has a predefined relationship with the tracking device, the method comprising: sliding the subdural electrode array between at least one of: a portion of an intact cranium and a cortex of a patient; and on a cortical surface through an opening due to a bone flap; selectively determining a position of the tracking device relative to a reference point, based on a strength of a generated electromagnetic field, relative to the tracking device; and determining a position for each of the plurality of electrodes based on the position of the tracking device.
22. The method of claim 21, further comprising determining when the subdural electrode array has been applied to the cortex, wherein determining when the subdural electrode array has been applied to the cortex comprises: measuring electrical activity of a brain of the patient with the plurality of electrodes; and determining that the subdural electrode array has been applied to the cortex based on the measured electrical activity.
23. (canceled)
24. (canceled)
25. The method of claim 22, further comprising displaying a virtual representation of a virtual electrode array, wherein displaying the virtual representation of the virtual electrode array includes: retrieving one or more stored images of a brain of the patient; receiving a selection of a target area of the brain from the one or more images; receiving a selection of a type of electrode array from a list of electrode array configurations; receiving input regarding a position and an orientation of a selected electrode array relative to the target area; and displaying the selected electrode array overlaid onto the selected target area of the one or more images.
26. (canceled)
27. (canceled)
28. (canceled)
29. (canceled)
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0008] The present disclosure will become more fully understood from the detailed description and the accompanying drawings.
[0009]
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018] In the drawings, reference numbers may be reused to identify similar and/or identical elements.
DETAILED DESCRIPTION
[0019] Prior to performing an iEEG, a craniotomy may be performed to remove part of the cranium in order to expose the brain. The removed part of the cranium may be referred to as a bone flap throughout this disclosure. A subdural electrode array is then placed directly on a cortical surface of the patient. For example, the subdural electrode array may be placed in a subdural space such as between a portion of an intact cranium and a cortex of the patient, where only a portion of the subdural electrode array is visible.
[0020] In present systems, intraoperative images (e.g., MRIs or CT scans) are captured after the subdural electrode array has been applied to the patient in order to confirm placement of the subdural electrode array since at least a portion of the subdural electrode array is placed in an area that does not have line of sight with a medical professional or a tracking system. Once the medical professional is satisfied with the placement of the subdural electrode array, the medical professional records the location of the subdural electrode array, including a location for each electrode of the array, on a schematic of the brain. Such systems are time consuming and subject to human error. Thus, systems and methods for assisting a surgeon with navigated placement of an electrode array are desirable. Such systems would reduce the possibility of human errors caused by improper recording of the location of the subdural electrode array and/or each of the electrodes. Such systems also offer a radiation-free method of real-time electrode visualization as opposed to systems that require intraoperative images. Lastly, such systems allow medical professionals to implant less electrodes since the medical professional knows the precise location of the subdural electrode array and does not need to implant many electrodes to guarantee vast coverage of a target area.
[0021] With reference to
[0022] The surgical navigation system 104 includes a cart assembly 124 that houses a navigation computer 128, an identification device 130 and/or other types of control units. The navigation computer 128 may also be referred to as the navigation controller. A navigation interface is in operative communication with the navigation computer 128. One or more input devices may be used to input information into the navigation computer 128 or otherwise to select/control certain aspects of the navigation computer 128. The navigation interface includes one or more displays 132. Such input devices may include interactive touchscreen displays/menus, a keyboard, a mouse, a microphone (voice-activation), gesture control devices, or the like.
[0023]
[0024] With reference to
[0025] In
[0026] The plurality of electrodes 208 may be configured to provide measurement signals, representative of sensed electrical activity of the brain, to the EEG amplifier 112. The tails 216 may be connected via one or more connectors (not shown) to the EEG amplifier 112 that is configured to process the measurement signals. With reference back to
[0027] The one or more signal processing circuits 404 may include one or more amplifier circuits, one or more filter circuits, and one or more analog-to-digital converters for receiving and processing the measurement signals from the subdural electrode array. The power circuit 416 may include a power supply with a power input connection for receiving power from a power source and output connections for providing power to the subdural grid electrode array 200. The user interface 420 may be in the form of a display or buttons that allow a medical professional or other person to control the EEG amplifier 112. The user interface 420 may also display notifications or alerts associated with the EEG amplifier 112. The pulse generator circuit 410 may be configured to generate a pulsed waveform in order to deliver electrical stimulation via the subdural grid electrode array 200 to a portion of the brain.
[0028] The photic stimulator 116 may be used to provide stimulation during the iEEG procedure. The photic stimulator 116 may have various features of the photic stimulator shown and described in U.S. Pat. No. 6,931,275B2 entitled “System for reduction of undesirable brain wave patterns using selective photic stimulation,” the contents which are herein incorporated by reference in their entirety. The interface circuits 412 may facilitate communication between the EEG amplifier 112 and the surgical navigation system 104. Based on EEG data provided by the EEG amplifier 112, the surgical navigation system 104 may be configured to generate for display waveforms of the EEG data. The surgical navigation system 104 may include an EEG program (i.e., specialized computer software) that processes the EEG data and allows a medical professional to further analyze and refine the EEG data received from the EEG amplifier 112. The surgical navigation system via the EEG program may be configured to control operation of the EEG amplifier 112 and the subdural grid electrode array 200.
[0029] The subdural grid electrode array 200 may include a unique identifying component 224, such as a QR code, a bar code, an RFID tag, or a serial read-only memory chip that stores a unique identifier. The identification device 130 may be employed to identify the subdural grid electrode array 200 based on the unique identifying component 224. The identification device 130 may comprise one or more sensors, such as optical sensors, RF sensors, a scanner, a reader, or any other suitable sensor for identifying the unique identifying component 224. For example, in a case where the unique identifying component 224 is a QR code, the identification device 130 may be a camera that is configured to scan and read the QR code.
[0030] The electromagnetic tracking system 108 includes a field generator unit 120, the tracking devices 212, a sensor interface unit (not shown), and a sensor control unit (not shown). One example of an electromagnetic tracking system known in the art that may be employed as the electromagnetic tracking system 108 of this disclosure is the Aurora® System made by Northern Digital, Inc. The field generator unit 120 provides a reference point and generates an electromagnetic (EM) field.
[0031] The field generator unit 120 may be statically positioned (as shown in
[0032] The tracking devices 212 may include one or more sensor coils that detect the EM field when the subdural grid electrode array 200 is within a field of range of the field generator unit 120. The tracking devices 212 output signals based on the detected EM field that are indicative of a state of the tracking devices 212 relative to the field generator unit 120. As used herein, the state of the tracking devices 212 includes, but is not limited to, data that defines the position and/or orientation of the tracking devices 212 or equivalents/derivatives of the position and/or orientation. The tracking devices 212 may be any suitable electromagnetic tracking element, such as a coil array or the like, arranged on the substrate 204. The tracking devices 212 have a size and profile that make the tracking devices 212 suitable to be slid in a subdural space such that the tracking devices 212 do not disturb or damage dura or brain tissue. The sensor interface unit may amplify and digitize the signals provided by the tracking devices 212. The system control unit determines a state for each of the tracking devices 212 based on a strength of the EM field as evidenced by the signals received from the respective tracking devices 212.
[0033] The tracking devices 212 are arranged on the substrate 204 in a predetermined position. As shown in
[0034] As shown in
[0035] The unique identifying component 224 may be used by the surgical navigation system 104 to identify one or more characteristics of the subdural grid electrode array 200. For example, the surgical navigation system 104 may store a look up table of unique identifiers along with one or more characteristics. For example, the one or more characteristics may be a number of the plurality of electrodes 208, a number of rows and columns of the plurality of electrodes 208, a size of the substrate 204, a label for each of the plurality of electrodes 208, a position for each of the tracking devices 212 relative to the substrate 204, and the predefined relationships for each of the tracking devices 212 relative to each of the plurality of electrodes 208. The surgical navigation system 104 may be configured to determine a position for each of the plurality of electrodes 208 based on a nearest tracking device 212. For example, the surgical navigation system 104 may determine a position for each electrode arranged in the first portion 228 based on the position of the first tracking device 212a, a position for each electrode that is arranged in the second portion 232 based on the position of the second tracking device 212b, a position for each electrode arranged in the third portion 236 based on the position of the third tracking device 212c, and a position for each electrode arranged in the fourth portion 240 based on the position of the fourth tracking device 212d.
[0036] In another example, the surgical navigation system 104 may be configured to determine a position for each of the plurality of electrodes 208 based on any one of the tracking devices 212. For example, the surgical navigation system 104 may determine a position for each electrode arranged in the first portion 228 based on the position of the second tracking device 212b, the position of the third tracking device 212c, or the position of the fourth tracking device 212d.
[0037] In other examples, the surgical navigation system 104 may be configured to determine a position for each of the plurality of electrodes 208 based on all of the tracking devices 212, based on each position of the tracking devices 212, based on known properties of the substrate 204 and predefined relationships for the tracking devices 212, and predefined relationships for the substrate 204 and associated positions for each of the plurality of electrodes 208. An algorithm can be applied to render the flexing of the substrate 204 and resultant position for each of the plurality of electrodes 208. The flexing of the substrate 204 may be determined based on the position and orientation of the tracking devices 212. For example, a lookup table may associate position and orientation information of the tracking devices 212 with a flexing of the substrate 204. The lookup table may also associate experimentally determined offsets/displacements for each of the plurality of electrodes 208 with the flexing of the substrate 204.
[0038] The surgical navigation system 104 may be configured to store one or more pre-operative images of the brain 504. The surgical navigation system 104 may utilize data acquired from the one or more pre-operative images in order to determine a shape or a structure of the brain in which the subdural grid electrode array 200 is applied. The surgical navigation system 104 may utilize the shape or structure of the brain in determining a position for each electrode of the plurality of electrodes 208. In this manner, the surgical navigation system 104 is able to determine a position for each electrode of the plurality of electrodes 304 of the subdural strip electrode array 300 even when the strip bends around the curvature of the brain as shown in
[0039] Any suitable imaging device may be used to provide the pre-operative images of the brain 504. For example, any 2D, 3D or 4D imaging device, such as isocentric fluoroscopy, bi-plane fluoroscopy, ultrasound, computed tomography (CT), multi-slice computed tomography (MSCT), magnetic resonance imaging (MRI), positron emission tomography (PET), optical coherence tomography (OCT). The images may also be obtained and displayed in two, three or four dimensions. In more advanced forms, four-dimensional surface rendering regions of the body may also be achieved by incorporating patient data or other data from an atlas or anatomical model map or from pre-operative image data captured by MM, CT, or echocardiography modalities.
[0040] With reference to
[0041] The surgical navigation system 104 may be configured to store a list of electrode arrays and associated characteristics for each electrode array in the list. The associated characteristics may be a number of the plurality of electrodes 208, a number of rows and columns of the plurality of electrodes 208, a size of the substrate 204 of the subdural grid electrode array 200, a label for each of the plurality of electrodes 208, a location of the tracking device 212 relative to the substrate 204 of the subdural grid electrode array 200, and the predefined relationship between the one or more tracking devices 212 and each of the plurality of electrodes 208. In response to a user selecting a target area, the surgical navigation system 104 may prompt the user to select a subdural electrode array from the list of subdural electrode arrays.
[0042] The surgical navigation system 104 may be configured to generate a representation of a virtual electrode arrays 604, 606 corresponding to the type of subdural electrode arrays selected by the user. The virtual electrode arrays 604, 606 may be overlaid onto the selected target area. The surgical navigation system 104 may be configured to allow the user to adjust the state of virtual electrode arrays 604, 606 if the medical professional is not satisfied with the initial state of the virtual electrode arrays 604, 606. The desired state of the subdural grid electrode array 200 and the subdural strip electrode arrays 300 as evidenced by the virtual electrode arrays 604, 606, will be referred to as the planned state from this point on. As shown in
[0043] The medical professional may register the generator coordinate system to the image coordinate system (i.e., align the generator coordinate system to the image coordinate system). During registration, a coordinate transformation matrix between the generator coordinate system and the image coordinate system is determined. Registration may be performed using any suitable method of registration (point-pair registration, surface registration, etc.).
[0044] With reference to
[0045] The surgical navigation system 104 may be configured to monitor the state of the subdural grid electrode array 200 to determine when the state of the subdural grid electrode array 200 matches the planned state (i.e., the subdural grid electrode array 200 has been applied to the correct location of the brain) based on the location of the tracking devices 212 relative to a location of the tracking devices of the virtual electrode array 604. The surgical navigation system 104 may also confirm that the subdural grid electrode array 200 has been applied to the brain based on a change in the electrical measurements of the plurality of electrodes 208. When the state of the subdural grid electrode array 200 matches the planned state, the surgical navigation system 104 may generate an indication that the planned state has been achieved. The alert or indication may be in the form of an audible alert, a graphic indication 708 or an alpha-numeric indication 712.
[0046] The surgical navigation system 104 may selectively determine a position for each of the plurality of electrodes 208 based on the state of each of the tracking devices 212 and the predefined relationships. The surgical navigation system 104 may be configured such that the medical professional is able to predefine a naming convention for each electrode array in a case where multiple electrode arrays are used. The surgical navigation system 104 may also be configured such as to display a name for each electrode array and a label for each electrode overlaid onto the one or more pre-operative images of the brain 504. The medical professional may capture a screenshot of the display 132 including the names and labels that may be stored and retrieved by the surgical navigation system 104. The label for each electrode may be associated with a corresponding channel (i.e., waveform). The medical professional may use the stored images including screen shots to define a resection area based on results of the EEG. For example, the medical professional may select channels of interest which may then be used to identify the resection area based on the location of electrodes associated with the channels of interest.
[0047] As shown in
[0048] With reference to
[0049] At 832 the surgical navigation system 104, registers the generator coordinate system to the image coordinate system. At 836, the field generator unit 120 generates an electromagnetic field. At 840, the sensor interface unit receives signals from the EM tracking devices 212. At 844, the sensor control unit determines a state for each of the tracking devices 212. At 848, the surgical navigation system 104 receives the state of each of the tracking devices 212. At 852, the surgical navigation system 104 determines a state of the subdural grid electrode array 200 including a position for each of the plurality of electrodes 208 based on the state of each of the tracking devices 212 and the predefined relationships.
[0050] At 856, the surgical navigation system 104 generates a real-time representation of the subdural grid electrode array 200 on the display 132. At 860, the surgical navigation system 104 determines whether the state of the subdural grid electrode array 200 matches the planned state. If so, the method 800 continues to 864; otherwise, the method 800 continues back at 840. At 864, the surgical navigation system 104 generates a notification indicating that the planned state has been achieved. While the method 800 is shown as ending in
[0051] The foregoing description is merely illustrative in nature and is in no way intended to limit the disclosure, its application, or uses. The broad teachings of the disclosure can be implemented in a variety of forms. Therefore, while this disclosure includes particular examples, the true scope of the disclosure should not be so limited since other modifications will become apparent upon a study of the drawings, the specification, and the following claims. It should be understood that one or more steps within a method may be executed in different order (or concurrently) without altering the principles of the present disclosure. Further, although each of the examples is described above as having certain features, any one or more of those features described with respect to any example of the disclosure can be implemented in and/or combined with features of any of the other examples, even if that combination is not explicitly described. In other words, the described examples are not mutually exclusive, and permutations of one or more examples with one another remain within the scope of this disclosure.
[0052] Spatial and functional relationships between elements (for example, between controllers, circuit elements, semiconductor layers, etc.) are described using various terms, including “connected,” “engaged,” “coupled,” “adjacent,” “next to,” “on top of,” “above,” “below,” and “disposed.” Unless explicitly described as being “direct,” when a relationship between first and second elements is described in the above disclosure, that relationship can be a direct relationship where no other intervening elements are present between the first and second elements, but can also be an indirect relationship where one or more intervening elements are present (either spatially or functionally) between the first and second elements.
[0053] As used herein, the phrase at least one of A, B, and C should be construed to mean a logical (A OR B OR C), using a non-exclusive logical OR, and should not be construed to mean “at least one of A, at least one of B, and at least one of C.” The term subset does not necessarily require a proper subset. In other words, a first subset of a first set may be coextensive with (equal to) the first set.
[0054] In the figures, the direction of an arrow, as indicated by the arrowhead, generally demonstrates the flow of information (such as data or instructions) that is of interest to the illustration. For example, when element A and element B exchange a variety of information but information transmitted from element A to element B is relevant to the illustration, the arrow may point from element A to element B. This unidirectional arrow does not imply that no other information is transmitted from element B to element A. Further, for information sent from element A to element B, element B may send requests for, or receipt acknowledgements of, the information to element A.
[0055] In this application, including the definitions below, the term “controller” may be replaced with the term “circuit.” The term “controller” may refer to, be part of, or include: an Application Specific Integrated Circuit (ASIC); a digital, analog, or mixed analog/digital discrete circuit; a digital, analog, or mixed analog/digital integrated circuit; a combinational logic circuit; a field programmable gate array (FPGA); a processor circuit (shared, dedicated, or group) that executes code; a memory circuit (shared, dedicated, or group) that stores code executed by the processor circuit; other suitable hardware components that provide the described functionality; or a combination of some or all of the above, such as in a system-on-chip.
[0056] The controller may include one or more interface circuits with one or more transceivers. In some examples, the interface circuit(s) may implement wired or wireless interfaces that connect to a local area network (LAN) or a wireless personal area network (WPAN). Examples of a LAN are Institute of Electrical and Electronics Engineers (IEEE) Standard 802.11-2016 (also known as the WIFI wireless networking standard) and IEEE Standard 802.3-2015 (also known as the ETHERNET wired networking standard). Examples of a WPAN are the BLUETOOTH wireless networking standard from the Bluetooth Special Interest Group and IEEE Standard 802.15.4.
[0057] The controller may communicate with other controllers using the interface circuit(s). Although the controller may be depicted in the present disclosure as logically communicating directly with other controllers, in various implementations the controller may actually communicate via a communications system. The communications system may include physical and/or virtual networking equipment such as hubs, switches, routers, gateways and transceivers. In some implementations, the communications system connects to or traverses a wide area network (WAN) such as the Internet. For example, the communications system may include multiple LANs connected to each other over the Internet or point-to-point leased lines using technologies including Multiprotocol Label Switching (MPLS) and virtual private networks (VPNs).
[0058] In various implementations, the functionality of the controller may be distributed among multiple controllers that are connected via the communications system. For example, multiple controllers may implement the same functionality distributed by a load balancing system. In a further example, the functionality of the controller may be split between a server (also known as remote, or cloud) controller and a client (or, user) controller.
[0059] Some or all hardware features of a controller may be defined using a language for hardware description, such as IEEE Standard 1364-2005 (commonly called “Verilog”) and IEEE Standard 1076-2008 (commonly called “VHDL”). The hardware description language may be used to manufacture and/or program a hardware circuit. In some implementations, some or all features of a controller may be defined by a language, such as IEEE 1666-2005 (commonly called “SystemC”), that encompasses both code, as described below, and hardware description.
[0060] The term code, as used above, may include software, firmware, and/or microcode, and may refer to programs, routines, functions, classes, data structures, and/or objects. The term shared processor circuit encompasses a single processor circuit that executes some or all code from multiple controllers. The term group processor circuit encompasses a processor circuit that, in combination with additional processor circuits, executes some or all code from one or more controllers. References to multiple processor circuits encompass multiple processor circuits on discrete dies, multiple processor circuits on a single die, multiple cores of a single processor circuit, multiple threads of a single processor circuit, or a combination of the above. The term shared memory circuit encompasses a single memory circuit that stores some or all code from multiple controllers. The term group memory circuit encompasses a memory circuit that, in combination with additional memories, stores some or all code from one or more controllers.
[0061] The term memory circuit is a subset of the term computer-readable medium. The term computer-readable medium, as used herein, does not encompass transitory electrical or electromagnetic signals propagating through a medium (such as on a carrier wave); the term computer-readable medium may therefore be considered tangible and non-transitory. Non-limiting examples of a non-transitory computer-readable medium are nonvolatile memory circuits (such as a flash memory circuit, an erasable programmable read-only memory circuit, or a mask read-only memory circuit), volatile memory circuits (such as a static random access memory circuit or a dynamic random access memory circuit), magnetic storage media (such as an analog or digital magnetic tape or a hard disk drive), and optical storage media (such as a CD, a DVD, or a Blu-ray Disc).
[0062] The apparatuses and methods described in this application may be partially or fully implemented by a special purpose computer created by configuring a general purpose computer to execute one or more particular functions embodied in computer programs. The functional blocks and flowchart elements described above serve as software specifications, which can be translated into the computer programs by the routine work of a skilled technician or programmer.
[0063] The computer programs include processor-executable instructions that are stored on at least one non-transitory computer-readable medium. The computer programs may also include or rely on stored data. The computer programs may encompass a basic input/output system (BIOS) that interacts with hardware of the special purpose computer, device drivers that interact with particular devices of the special purpose computer, one or more operating systems, user applications, background services, background applications, etc.
[0064] The computer programs may include: (i) descriptive text to be parsed, such as HTML (hypertext markup language), XML (extensible markup language), or JSON (JavaScript Object Notation), (ii) assembly code, (iii) object code generated from source code by a compiler, (iv) source code for execution by an interpreter, (v) source code for compilation and execution by a just-in-time compiler, etc. As examples only, source code may be written using syntax from languages including C, C++, C#, Objective-C, Swift, Haskell, Go, SQL, R, Lisp, Java®, Fortran, Perl, Pascal, Curl, OCaml, JavaScript®, HTML5 (Hypertext Markup Language 5th revision), Ada, ASP (Active Server Pages), PHP (PHP: Hypertext Preprocessor), Scala, Eiffel, Smalltalk, Erlang, Ruby, Flash®, Visual Basic®, Lua, MATLAB, SIMULINK, and Python®.