CN107562374A - 一种非易失性存储器时序数据压缩的量化方法 - Google Patents

一种非易失性存储器时序数据压缩的量化方法 Download PDF

Info

Publication number
CN107562374A
CN107562374A CN201710689473.0A CN201710689473A CN107562374A CN 107562374 A CN107562374 A CN 107562374A CN 201710689473 A CN201710689473 A CN 201710689473A CN 107562374 A CN107562374 A CN 107562374A
Authority
CN
China
Prior art keywords
mrow
msub
series data
time series
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710689473.0A
Other languages
English (en)
Other versions
CN107562374B (zh
Inventor
刘铎
顾艺
黃柏鈞
李星妮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chongqing University
Original Assignee
Chongqing University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chongqing University filed Critical Chongqing University
Priority to CN201710689473.0A priority Critical patent/CN107562374B/zh
Publication of CN107562374A publication Critical patent/CN107562374A/zh
Application granted granted Critical
Publication of CN107562374B publication Critical patent/CN107562374B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种适用于非易失性存储器时序数据压缩的量化方法,包括步骤1、对待压缩的时间序列数据S进行平滑处理得到平滑时间序列数据,提取中的特征点,并记录原始时间序列数据S中对应位置的值;步骤2、利用线性插值法进行时间序列重构,得到重构时间序列T;步骤3、利用动态时间扭曲算法将序列T与S进行对比,求出两序列间的距离,设定距离阈值,若两时间序列间的距离小于此阈值,则这两个时间序列相似,反之则不相似,此时重新调节平滑窗口宽度;本发明的技术效果是,在非易失性存储器存储时间序列数据时,实现了快速重构时间序列数据,确保压缩数据与原始数据的差异处于可接受的范围内的同时,减少了非易失性存储器的写入数据量。

Description

一种非易失性存储器时序数据压缩的量化方法
技术领域
本发明属于数据存储技术领域,具体涉及一种非易失性存储器的时序数据压缩。
背景技术
随着半导体技术的发展,非易失存储器(NVM)包括相变存储器(PCM)和忆阻器(memristor)正在受到越来越广泛的关注。由这些新型NVM所产生的RAM有PCRAM、STT-RAM和RRAM等,保存在NVM里的数据具有掉电不丢失的特性,即非易失性。与DRAM相比,NVM具有有限的擦写次数。为了延长NVM的使用寿命,现有的技术可以分为两类:减少写和损耗均衡;减少对NVM的写能延长使用寿命。
目前,许多应用领域都会产生时间序列数据,如无线传感器网络、监控系统以及物联网场景等。同时,在许多应用领域都需要及时存储这些时间序列数据,并保证断电不丢失,这就使得非易失性存储器与时间序列数据的结合成为必然。
在容量一定的情况下,非易失性存储器的寿命会随着数据量的增加而缩短,为了保证数据存储过程的正常进行需要对大量的时间序列数据进行压缩处理,压缩处理需要发现时间序列数据的隐藏趋势或相似之处,发掘隐藏趋势的技术手段能应用于经济预测,天气预报以及物理或环境科学等领域。
欧氏距离是目前使用最广泛的量化两个时间序列数据之间差异的方法,如图1所示,横坐标表示时间戳,纵坐标表示数据值,两条曲线分别表示两条时间序列数据。欧氏距离能在线性时间内(线性时间表示为欧式距离运行时间与数据量成比例)准确地度量时间序列数据之间差异,但是,欧氏距离不能随时间轴自适应地对数据进行位移,即它对时间失真也是非常敏感。这就使得欧氏距离在对时间失真问题等常见的领域(如语音识别)不适用。此外,欧氏距离不能在两个不同长度的时间序列上使用。
动态时间扭曲算法(DTW)可以克服欧式距离的局限性并且正确解决时间序列数据中的时间失真问题。与欧氏距离仅考虑两个时间序列中配对数据点之间的距离不同,动态时间扭曲算法(DTW)可以在另一个时间序列中搜索距离本时间序列中数据点x最近的数据点并计算距离。此外,在添加约束条件之后,DTW可以容忍不同程度的时间失真,或者排除不合理的情况来减少搜索时间。由于其弹性匹配能力和实现的简单性,DTW算法被广泛应用于指纹验证系统,文字识别,色谱数据预处理和面部识别等不同领域。
随着DTW在特定场景的应用,DTW占用的空间很大。例如,DTW用于语音识别时,在参考数据库中必须保持大量的时间序列数据,其中每个时间序列数据包含目标语言中特定单词或短语的声音波形。虽然可以降低时间序列的采样率(即下采样)来减小参考数据库的大小,但这会使语音识别的精度降低。由于非易失性存储器内存空间通常是有限制的,不能承受动态时间扭曲算法(DTW)的内存空间耗用量。
发明内容
本发明所要解决的技术问题就是提供一种非易失性存储器时序数据压缩的量化方法,它能高效压缩并快速重构时间序列,并确保压缩数据与原始数据的差异处于可接受范围内,减少非易失性存储器的写入数据量,从而提高基于非易失性存储器的内存数据分析平台的空间效率。
本发明所要解决的技术问题是通过这样的技术方案实现的,它包括以下步骤:
步骤1、设置一个平滑窗口宽度,并对待压缩的时间序列数据S进行平滑处理,得到平滑时间序列数据S',提取平滑时间序列数据S'中的特征点,记录原始时间序列数据S中对应位置的值;
步骤2、根据步骤1保存的特征点,利用线性插值法对平滑时间序列数据S'进行时间序列数据重构,得到重构时间序列数据T;
步骤3、利用动态时间扭曲算法,求出时间序列数据S与重构时间序列数据T之间的距离;设定一个距离阈值,若是两个时间序列数据之间的距离大于此阈值,这两个时间序列数据不相似,则重新调节平滑窗口宽度,直到选取出合适的平滑窗口宽度使得所求距离小于距离阈值。
本发明的技术效果是:当存储原始时间序列数据前,压缩了原始时间序列数据,实现了快速重构时间序列数据,且在确保压缩数据与原始数据的差异处于可接受范围内的同时,减少了非易失性存储器的写入数据量。
附图说明
本发明的附图说明如下:
图1为欧式距离量化的示意图;
图2为本发明的流程图;
图3为实施例的时序数据压缩结果图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明:
本发明的运行环境是:一台电脑设备,它包含CPU,NVRAM等必要的硬件设备,能够运行基于Linux kernel的操作系统。
依次读取数据集的时间序列数据,将其保存到数组S中,每个元素依次为时间戳对应的数据点。如图2所示,本发明的流程包括以下步骤:
在步骤S01,选取平滑窗口长度ω,从时间序列数据S=(d1,d2…dn)的第一个数据点开始执行步骤S02;
假设时间序列数据S共有n个数据点,且n>>ω,ω初始值为1。
在步骤S02,通过求平滑窗口中所有数据点的平均值,依次计算时间序列数据S中各个数据点的值,计算方法如公式(1):
式(1)中,d′i表示时间序列数据S中第i个时间点平滑后得到的新值,dk表示时间序列数据S中第k个时间点的值,并将求得到新的时间序列数据保存到平滑时间序列数据S'中;
平滑后的序列相对原始时间序列消除了轻微的噪声,对每个原始时间序列进行平滑处理,以消除数据点中的局部变化。
在步骤S03,依次读取平滑时间序列数据S'各点的值,判断是否为特征点,特征点选择符合以下四个条件中的一个,&&表示“与”:
(d′(i-1)<d′i&&d′i≥d′(i+1))
(d′(i-1)≤d′i&&d′i>d′(i+1))
(d′(i-1)>d′i&&d′i≤d′(i+1))
(d′(i-1)>d′i&&d′i≤d′(i+1))
若为特征点,则执行步骤S04,若不是,则继续选取点判断;
由本步骤可以看出,特征点为平滑时间序列数据S'中的波峰或者波谷点。
在步骤S04,将特征点的时间戳和数值记录到元组(t,dt)中;
其中t为特征点对应的原始时间序列数据的时间戳,dt为时间戳对应的原始时间序列数据S值。
在步骤S05,根据记录的特征点,利用线性插值法进行时间序列数据重构,得到重构时间序列数据T;
假设两个相邻特征点(t1,dt1)与(t2,dt2),其中,t2>t1,dt2>dt1。因此,在这两个特征点间,需要对t2-t1-1(t1、t2是整数)个丢失的数据进行重构。
采用线性插值对第q个丢失的数据点进行重构,则重构后时间戳为t1+q的数据点的值为计算方法如公式(2):
式(2)中,dt1为原始时间序列数据S在t1时刻的值,dt2为原始时间序列数据S在t2时刻的值;
式(2)中1≤q≤(t2-t1-1),依次读取任意两个相邻特征点进行重构,得到完整的重构时间序列数据T;
在步骤S06,计算欧式距离,将重构时间序列数据T与原始时间序列数据S间的序列点两两相减,获得一个序列距离矩阵M,M中的每个元素计算如下:
式(3)中,m(k,l)表示矩阵M中位于第k行第l列的元素,表示时间序列数据T中的第k个元素的值,表示时间序列数据S中的第l个元素的值;
在步骤S07,根据距离矩阵M生成损失矩阵M'(又称为累积距离矩阵),损失矩阵中各元素(M'(a,b))的值则需要逐步计算,具体值的计算式如下
m'(a,b)=Min[m'(a-1,b-1),m'(a-1,b),m'(a,b-1)]+m(a,b)………(4)
其中,a为损失矩阵M'行坐标,b为损失矩阵M'列坐标;
得到损失矩阵后,矩阵M'的最后一个元素为重构时间序列数据T与时间序列数据S间的距离,记为Cm
在步骤S08,判断Cm是否大于距离阈值C,C与待压缩的原始时间序列数据相关,不同数据有不同的C,若大于C,则认为此时两序列不相似,则执行步骤S09;否则认为两序列相似,并将特征点存入非易失性存储器中;
在步骤S09,滑动窗口长度增加1,即ω=ω+1,再次执行步骤S01。
实施例
本实施例所用数据为心电图时间序列数据数据集,参见Yanping Chen,EamonnKeogh,Bing Hu,Nurjahan Begum,Anthony Bagnall,Abdullah Mueen and GustavoBatista(2015).The UCR Time Series Classification Archive.URL(UCR时间序列数据的分类存档)www.cs.ucr.edu/~eamonn/time_series_data/。
该时间序列数据集包括一段时间内人类心跳的电活动,共有300条时间序列数据,每条时间序列数据表示一个心跳周期。本实施例以该数据集的第一个心跳周期为例进行说明,整个数据集需要重复执行此实施例300次。
1、选取平滑窗口长度ω=1,从心跳周期数据S=(d1,d2…dn)的第一个数据点开始执行步骤S02;其中,n=140,即S中共有140个心跳采样数据;
2、通过公式(1),利用平滑窗口依次计算140个心跳采样数据的平滑值;
3、依次读取平滑处理后的140个心跳采样数据,选择特征点;
4、将特征点的时间戳和数值记录到元组(t,dt)中;
5、根据记录的特征点,利用公式(2)的线性插值法进行重构,得到重构后的心跳周期数据T;
6、计算欧式距离,将重构心跳周期数据T与原始心跳周期数据S间的140个心跳采样数据根据公式(3)进行计算,获得一个距离矩阵M,其中M为一个140*140的矩阵;
7、根据公式(4),将的距离矩阵M转换成损失矩阵,得到损失矩阵后,矩阵的最后一个元素为重构后的心跳周期数据T与原始心跳周期数据S间的距离,记为Cm
8、判断Cm是否大于距离阈值C,本实施例中取C=0;若是,则心跳周期数据T与原始心跳周期数据S不相似,则执行下一步9;否则两序列相似,将特征点存入非易失性存储器中;
9、滑动窗口长度增加1,即ω=ω+1,再次回到第1步执行。
本实施例时序数据压缩结果图3所示,横坐标为平滑窗口宽度,纵坐标为压缩率,由图3看出,随着平滑窗口长度ω的增加,需要存储的特征点个数不断减少,压缩率也在不断提高。

Claims (5)

1.一种非易失性存储器时序数据压缩的量化方法,其特征是,包括以下步骤:
步骤1、设置一个平滑窗口宽度,并对待压缩的时间序列数据S进行平滑处理,得到平滑时间序列数据S',提取平滑时间序列数据S'中的特征点,记录原始时间序列数据S中对应位置的值;
步骤2、根据步骤1保存的特征点,利用线性插值法对平滑时间序列数据S'进行时间序列数据重构,得到重构时间序列数据T;
步骤3、利用动态时间扭曲算法,求出时间序列数据S与重构时间序列数据T之间的距离;设定一个距离阈值,若是两个时间序列数据之间的距离大于此阈值,这两个时间序列数据不相似,则重新调节平滑窗口宽度,直到选取出合适的平滑窗口宽度使得所求距离小于距离阈值。
2.根据权利要求1所述的非易失性存储器时序数据压缩的量化方法,其特征是:在步骤1中,所述平滑处理的计算式为:
<mrow> <msubsup> <mi>d</mi> <mi>i</mi> <mo>&amp;prime;</mo> </msubsup> <mo>=</mo> <mfrac> <mrow> <msubsup> <mi>&amp;Sigma;</mi> <mrow> <mi>k</mi> <mo>=</mo> <mrow> <mo>(</mo> <mi>i</mi> <mo>-</mo> <mi>&amp;omega;</mi> <mo>)</mo> </mrow> </mrow> <mrow> <mo>(</mo> <mi>i</mi> <mo>+</mo> <mi>&amp;omega;</mi> <mo>)</mo> </mrow> </msubsup> <msub> <mi>d</mi> <mi>k</mi> </msub> </mrow> <mrow> <mn>2</mn> <mi>&amp;omega;</mi> <mo>+</mo> <mn>1</mn> </mrow> </mfrac> <mn>...</mn> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>
式(1)中,ω为平滑窗口长度,di'为时间序列数据S中第i个时间点平滑后得到的新值,dk为时间序列数据S中第k个时间点的值。
3.根据权利要求2所述的非易失性存储器时序数据压缩的量化方法,其特征是:在步骤1中,所述的平滑时间序列数据S'特征点为平滑时间序列数据S'中的波峰或者波谷点。
4.根据权利要求3所述的非易失性存储器时序数据压缩的量化方法,其特征是:在步骤2中,线性插值法的计算公式为:
<mrow> <msub> <mi>d</mi> <mrow> <mo>(</mo> <msub> <mi>t</mi> <mn>1</mn> </msub> <mo>+</mo> <mi>q</mi> <mo>)</mo> </mrow> </msub> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>d</mi> <msub> <mi>t</mi> <mn>1</mn> </msub> </msub> <mo>+</mo> <mfrac> <mrow> <msub> <mi>d</mi> <msub> <mi>t</mi> <mn>2</mn> </msub> </msub> <mo>-</mo> <msub> <mi>d</mi> <msub> <mi>t</mi> <mn>1</mn> </msub> </msub> </mrow> <mrow> <msub> <mi>t</mi> <mn>2</mn> </msub> <mo>-</mo> <msub> <mi>t</mi> <mn>1</mn> </msub> </mrow> </mfrac> <mo>&amp;times;</mo> <mi>q</mi> <mo>)</mo> </mrow> <mn>...</mn> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>
式(2)中,q为两个特征点(t1,dt1)与(t2,dt2)间第q个丢失的数据点,为重构后时间戳为t1+q的数据点的值;dt1为原始时间序列数据S在t1时刻的值,dt2为原始时间序列数据S在t2时刻的值。
5.根据权利要求4所述的非易失性存储器时序数据压缩的量化方法,其特征是:在步骤3中,时间序列数据S与重构时间序列数据T点两两相减,获得序列距离矩阵M的计算式为:
<mrow> <mi>M</mi> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>m</mi> <mrow> <mo>(</mo> <mi>k</mi> <mo>,</mo> <mi>l</mi> <mo>)</mo> </mrow> </msub> <mo>)</mo> </mrow> <mo>=</mo> <msub> <mi>d</mi> <msub> <mi>T</mi> <mi>k</mi> </msub> </msub> <mo>-</mo> <msub> <mi>d</mi> <msub> <mi>S</mi> <mi>l</mi> </msub> </msub> <mn>......</mn> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow>
式(3)中,m(k,l)表示矩阵M中位于第k行第l列的元素,表示时间序列数据T中的第k个元素的值,表示时间序列数据S中的第l个元素的值;
损失矩阵M'中各元素的值的计算式如下:
m'(a,b)=Min[m'(a-1,b-1),m'(a-1,b),m'(a,b-1)]+m(a,b)………(4)
式(4)中,a为损失矩阵M'行坐标,b为损失矩阵M'列坐标;
矩阵M'的最后一个元素为重构时间序列数据T与时间序列数据S间的距离Cm
CN201710689473.0A 2017-08-14 2017-08-14 一种非易失性存储器时序数据压缩的量化方法 Active CN107562374B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710689473.0A CN107562374B (zh) 2017-08-14 2017-08-14 一种非易失性存储器时序数据压缩的量化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710689473.0A CN107562374B (zh) 2017-08-14 2017-08-14 一种非易失性存储器时序数据压缩的量化方法

Publications (2)

Publication Number Publication Date
CN107562374A true CN107562374A (zh) 2018-01-09
CN107562374B CN107562374B (zh) 2020-05-26

Family

ID=60975372

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710689473.0A Active CN107562374B (zh) 2017-08-14 2017-08-14 一种非易失性存储器时序数据压缩的量化方法

Country Status (1)

Country Link
CN (1) CN107562374B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109325060A (zh) * 2018-07-27 2019-02-12 山东大学 一种基于数据特征的时间序列流数据快速搜索方法
CN110188920A (zh) * 2019-04-26 2019-08-30 华中科技大学 一种锂电池剩余寿命预测方法
CN110522441A (zh) * 2019-08-01 2019-12-03 北京今科医疗科技有限公司 一种心电数据处理方法及装置
CN110688362A (zh) * 2019-08-27 2020-01-14 浙江浙大中控信息技术有限公司 基于时间戳的数据分段式存储方法
CN112380268A (zh) * 2020-10-27 2021-02-19 国网宁夏电力有限公司经济技术研究院 等间隔时间序列压缩方法、装置、设备和存储介质
CN114579063A (zh) * 2022-05-07 2022-06-03 浙江口碑网络技术有限公司 Od数据的存储及读取方法、装置、存储介质及计算机设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030023444A1 (en) * 1999-08-31 2003-01-30 Vicki St. John A voice recognition system for navigating on the internet
CN1685344A (zh) * 2002-11-01 2005-10-19 三菱电机株式会社 用于概括未知视频内容的方法
US20080111887A1 (en) * 2006-11-13 2008-05-15 Pixel Instruments, Corp. Method, system, and program product for measuring audio video synchronization independent of speaker characteristics
CN101483652A (zh) * 2009-01-10 2009-07-15 五邑大学 生物特征识别系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030023444A1 (en) * 1999-08-31 2003-01-30 Vicki St. John A voice recognition system for navigating on the internet
CN1685344A (zh) * 2002-11-01 2005-10-19 三菱电机株式会社 用于概括未知视频内容的方法
US20080111887A1 (en) * 2006-11-13 2008-05-15 Pixel Instruments, Corp. Method, system, and program product for measuring audio video synchronization independent of speaker characteristics
CN101483652A (zh) * 2009-01-10 2009-07-15 五邑大学 生物特征识别系统

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109325060A (zh) * 2018-07-27 2019-02-12 山东大学 一种基于数据特征的时间序列流数据快速搜索方法
CN109325060B (zh) * 2018-07-27 2021-10-12 山东大学 一种基于数据特征的时间序列流数据快速搜索方法
CN110188920A (zh) * 2019-04-26 2019-08-30 华中科技大学 一种锂电池剩余寿命预测方法
CN110522441A (zh) * 2019-08-01 2019-12-03 北京今科医疗科技有限公司 一种心电数据处理方法及装置
CN110522441B (zh) * 2019-08-01 2022-03-08 北京今科医疗科技有限公司 一种心电数据处理方法及装置
CN110688362A (zh) * 2019-08-27 2020-01-14 浙江浙大中控信息技术有限公司 基于时间戳的数据分段式存储方法
CN112380268A (zh) * 2020-10-27 2021-02-19 国网宁夏电力有限公司经济技术研究院 等间隔时间序列压缩方法、装置、设备和存储介质
CN112380268B (zh) * 2020-10-27 2022-03-18 国网宁夏电力有限公司经济技术研究院 等间隔时间序列压缩方法、装置、设备和存储介质
CN114579063A (zh) * 2022-05-07 2022-06-03 浙江口碑网络技术有限公司 Od数据的存储及读取方法、装置、存储介质及计算机设备
CN114579063B (zh) * 2022-05-07 2022-09-02 浙江口碑网络技术有限公司 Od数据的存储及读取方法、装置、存储介质及计算机设备

Also Published As

Publication number Publication date
CN107562374B (zh) 2020-05-26

Similar Documents

Publication Publication Date Title
CN107562374B (zh) 一种非易失性存储器时序数据压缩的量化方法
JP5203693B2 (ja) メモリ・セル集合体を操作するための方法、メモリ・コントローラ、メモリ・チップ、およびコンピュータ・プログラム
Zhang et al. Reducing {Solid-State} Storage Device Write Stress through Opportunistic In-place Delta Compression
WO2017143914A1 (zh) 一种利用训练数据训练模型的方法和训练系统
CN109887562B (zh) 电子病历的相似度确定方法、装置、设备和存储介质
CN101715595A (zh) 存储器单元读取阈的自适应估计
US20130185268A1 (en) Methods of compressing and storing data and storage devices using the methods
US20090293049A1 (en) Method for constructing dynamic call graph of application
TW201011774A (en) Data collection and compression in a solid state storage device
US11676671B1 (en) Amplification-based read disturb information determination system
US11487342B2 (en) Reducing power consumption in a neural network environment using data management
JP2019070965A (ja) 学習装置、学習方法、プログラム
CN115756312A (zh) 数据访问系统、数据访问方法和存储介质
US10019158B2 (en) Determination of a read voltage to be applied to a page based on read voltages of other pages
US11126624B2 (en) Trie search engine
US10761769B2 (en) Accessible accumulated memory temperature readings in a memory sub-system
CN115203073A (zh) 一种内存预取方法、装置及介质
Li et al. Downsampling of time-series data for approximated dynamic time warping on nonvolatile memories
CN115145476A (zh) 基于紧凑工作负载表示的存储器控制器及其方法
CN110275596B (zh) 基于固态硬盘的上电初始化加速方法、装置和计算机设备
US11983424B2 (en) Read disturb information isolation system
WO2019231548A1 (en) Sensing operations in memory
US20240144634A1 (en) Method and apparatus with region of interest extraction
US11929135B2 (en) Read disturb information determination system
US11763898B2 (en) Value-voltage-distirubution-intersection-based read disturb information determination system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant