Main Content

深層学習を使用した波形セグメンテーション

この例は、再帰型深層学習ネットワークと時間-周波数解析を使用して、人間の心電図 (ECG) 信号をセグメント化する方法を説明します。

はじめに

人間の心臓の電気的活動は、ベースライン信号から離れた一連の振幅として測定できます。単一の正常な心拍サイクルの場合、ECG 信号は次の心拍形態に分けられます [1]。

  • P 波 — QRS 群が心房性脱分極を表す前の小さいたわみ

  • QRS 群 — 心拍の最大振幅部分

  • T 波 — QRS 群が心室再分極を表した後の小さいたわみ

ECG 波形のこれらの領域のセグメンテーションでは、人間の心臓全体の健康状態と異常の存在を評価するのに役立つ測定値の基準を提供できます [2]。手作業で ECG 信号の各領域に注釈を付けると、手間と時間がかかるタスクになる可能性があります。信号処理と深層学習の手法を使用すると、関心領域の注釈を効率的かつ自動的に付けられるようになる可能性があります。

この例では、一般に公開されている QT データベースからの ECG 信号を使用します [3] [4]。データは、サンプル レート 250 Hz で合計 105 人の患者から測定された、約 15 分間の ECG の記録で構成されています。各記録を取得するために、検査員は患者の胸部の異なる場所に 2 つの電極を配置して、2 チャネル信号にします。データベースは、自動化されたエキスパート システムによって生成される信号領域ラベルを提供します [2]。この例は、深層学習の解を使用して、サンプルがある領域に応じて各 ECG 信号のサンプルにラベル付けすることを目的としています。信号に対して関心領域をラベル付けするこのプロセスは、多くの場合、"波形セグメンテーション" と呼ばれます。

信号領域を分類するよう深層ニューラル ネットワークに学習させるために、長短期記憶 (LSTM) ネットワークを使用できます。この例は、 LSTM セグメンテーション性能を向上させるために信号前処理技術と時間-周波数解析をどのように使用できるかを示します。特に、この例は、フーリエ シンクロスクイーズド変換を使用して、ECG 信号の非定常動作を表しています。

データのダウンロードと準備

105 個の 2 チャネルの ECG 信号から成る各チャネルは、自動化されたエキスパート システムによってそれぞれラベル付けされ、210 個の MAT ファイルに領域ラベルと共に保存された合計 210 個の ECG 信号に対して個別に扱われます。このファイルは、https://www.mathworks.com/supportfiles/SPT/data/QTDatabaseECGData.zip で入手できます。

MATLAB® の tempdir コマンドによって指定された場所にある一時ディレクトリに、データ ファイルをダウンロードします。tempdir と異なるフォルダーにデータ ファイルを置きたい場合、これ以降の手順でディレクトリ名を変更してください。

% Download the data
dataURL = 'https://www.mathworks.com/supportfiles/SPT/data/QTDatabaseECGData1.zip';
datasetFolder = fullfile(tempdir,'QTDataset');
zipFile = fullfile(tempdir,'QTDatabaseECGData.zip');
if ~exist(datasetFolder,'dir')
     websave(zipFile,dataURL);
     unzip(zipFile,tempdir);
end

unzip 操作を実行すると、一時ディレクトリにフォルダー QTDatabaseECGData が作成され、このフォルダーに 210 個の MAT ファイルが格納されます。各ファイルでは、変数 ecgSignal に ECG 信号が格納され、変数 signalRegionLabels に領域ラベルのテーブルが格納されます。また、各ファイルでは、変数 Fs に信号のサンプル レートが格納されます。この例では、信号のサンプル レートはすべて 250 Hz です。

ファイル内のデータにアクセスするための信号データストアを作成します。この例では、一時ディレクトリの QTDatabaseECGData フォルダーにデータセットが保存されていると仮定します。そうでない場合は、以下のコードでデータのパスを変更してください。SignalVariableNames パラメーターを使用して、各ファイルから読み取りたい信号変数名を指定します。

sds = signalDatastore(datasetFolder,'SignalVariableNames',["ecgSignal","signalRegionLabels"])
sds = 
  signalDatastore with properties:

                       Files:{
                             '/tmp/QTDataset/ecg1.mat';
                             '/tmp/QTDataset/ecg10.mat';
                             '/tmp/QTDataset/ecg100.mat'
                              ... and 207 more
                             }
                     Folders: {'/tmp/QTDataset'}
    AlternateFileSystemRoots: [0×0 string]
                    ReadSize: 1
         SignalVariableNames: ["ecgSignal"    "signalRegionLabels"]
       ReadOutputOrientation: "column"

関数 read を呼び出すたびに、ECG 信号および領域ラベルのテーブルが格納された 2 要素 cell 配列がデータストアによって返されます。データストアの関数 preview を使用して、最初のファイルの内容が、長さ 225,000 サンプルの ECG 信号、および 3385 個の領域ラベルを含むテーブルであることを確認します。

data = preview(sds)
data=2×1 cell array
    {225000×1 double}
    {  3385×2 table }

領域ラベル テーブルの最初の数行を確認し、領域範囲のインデックスと領域クラスの値 (P、T、または QRS) が各行に含まれていることを確認します。

head(data{2})
    ROILimits     Value
    __________    _____

     83    117     P   
    130    153     QRS 
    201    246     T   
    285    319     P   
    332    357     QRS 
    412    457     T   
    477    507     P   
    524    547     QRS 

signalMask オブジェクトを使用して、最初の 1000 個のサンプルのラベルを可視化します。

M = signalMask(data{2});
plotsigroi(M,data{1}(1:1000))

通常の機械学習の分類手順は次のとおりです。

  1. データベースを学習データセットとテスト データセットに分割します。

  2. 学習データセットを使用してネットワークに学習させます。

  3. 学習済みのネットワークを使用して、テスト データセットについて予測を行います。

ネットワークをデータの 70% で学習し、残りの 30% でテストします。

再現可能な結果が必要な場合は、乱数発生器をリセットします。関数 dividerand を使用して、ファイルをシャッフルするためのランダムなインデックスを取得し、signalDatastore の関数 subset を使用して、データを学習とテストのデータストアに分割します。

rng default
[trainIdx,~,testIdx] = dividerand(numel(sds.Files),0.7,0,0.3);
trainDs = subset(sds,trainIdx);
testDs = subset(sds,testIdx);

このセグメンテーション問題では、ECG 信号が LSTM ネットワークに入力され、入力信号と同じ長さをもつラベルのシーケンスまたはマスクが LSTM ネットワークから出力されます。このネットワークのタスクは、各信号サンプルに対し、その信号が属する領域の名前をラベルとして付けることです。そのため、データセット上の領域ラベルを、信号サンプルごとにラベルが 1 つずつ付けられたシーケンスに変換する必要があります。変換されたデータストアと補助関数 getmask を使用して、領域ラベルを変換します。関数 getmask は、いずれの関心領域にも属さないラベル サンプルにラベル カテゴリ "n/a" を追加します。

type getmask.m
function outputCell = getmask(inputCell)
%GETMASK Convert region labels to a mask of labels of size equal to the
%size of the input ECG signal.
%
%   inputCell is a two-element cell array containing an ECG signal vector
%   and a table of region labels. 
%
%   outputCell is a two-element cell array containing the ECG signal vector
%   and a categorical label vector mask of the same length as the signal. 

% Copyright 2020 The MathWorks, Inc.

sig = inputCell{1};
roiTable = inputCell{2};
L = length(sig);
M = signalMask(roiTable);

% Get categorical mask and give priority to QRS regions when there is overlap
mask = catmask(M,L,'OverlapAction','prioritizeByList','PriorityList',[2 1 3]);

% Set missing values to "n/a"
mask(ismissing(mask)) = "n/a";

outputCell = {sig,mask};
end

変換されたデータストアをプレビューし、このデータストアによって同じ長さの信号ベクトルとラベル ベクトルが返されることを確認します。カテゴリカル マスク ベクトルの先頭から 1000 個の要素をプロットします。

trainDs = transform(trainDs, @getmask);
testDs = transform(testDs, @getmask);

transformedData = preview(trainDs)
transformedData=1×2 cell array
    {224993×1 double}    {224993×1 categorical}

plot(transformedData{2}(1:1000))

非常に長い入力信号を LSTM ネットワークに渡すと、推定精度の低下と過剰なメモリ消費を招く可能性があります。これらの影響を回避するには、変換されたデータストアおよび補助関数 resizeData を使用して、ECG 信号およびそれらに対応するラベル マスクを分割します。この補助関数は、5000 サンプルのセグメントをできるだけ多く作成し、残りのサンプルを破棄します。変換されたデータストアの出力のプレビューを見ると、最初の ECG 信号とそのラベル マスクが 5000 サンプルのセグメントに分割されているのが分かります。変換されたデータストアのプレビューには、この cell 配列の最初の 8 要素のみが示されていることに注意してください。この cell 配列の要素数は、本来、floor(224993/5000) = 44 であり、データストアの関数 read を呼び出すと、この数の要素をもつ cell 配列が返されます。

trainDs = transform(trainDs,@resizeData);
testDs = transform(testDs,@resizeData);
preview(trainDs)
ans=8×2 cell array
    {[  0 0 0 0 0 0 1 1 1 1 1 1 0 1 2 1 1 2 2 2 3 4 6 8 11 15 18 18 17 17 17 16 14 12 8 4 2 1 0 -1 -2 -1 0 0 0 1 2 2 2 2 1 0 -1 -1 -2 -3 -3 -2 -2 -2 -1 0 4 5 5 3 2 0 -1 -1 0 2 3 5 5 3 4 8 15 25 36 50 63 73 83 90 97 99 98 88 74 58 42 30 22 19 15 10 5 1 -1 -2 -2 -3 -4 -5 -6 -7 -9 -9 -10 -12 -13 -13 -12 -13 -14 -15 -15 -16 -18 -19 -20 -21 -22 -21 -22 -23 -24 -25 -25 -26 -27 -28 -29 -29 -28 -26 -25 -24 -23 -21 -19 -18 -16 -14 -12 -11 -9 -7 -6 -5 -5 -3 -3 -3 -3 -2 -2 -2 -2 -1 -1 -2 -2 -1 -1 -1 -1 0 0 0 -1 0 1 2 3 5 7 8 11 13 13 13 12 11 9 6 2 0 -2 -3 -5 -7 -8 -8 -7 -5 -4 -5 -4 -3 -4 -4 -5 -5 -6 -8 -9 -9 -8 -9 -9 -8 -6 -6 -4 -2 -3 -4 -5 -6 -7 -8 -8 -7 -6 -5 -6 -8 -7 -5 2 12 24 36 48 58 66 72 78 83 82 75 61 46 30 18 11 9 6 0 -4 -8 -9 -11 -12 -12 -13 -13 -14 -14 -15 -17 -17 -17 -17 -18 -18 -18 -19 -21 -22 -23 -23 -25 -25 -26 -26 -27 -28 -29 -30 -31 -32 -32 -33 -33 -34 -34 -34 -34 -32 -31 -30 -29 -27 -25 -23 -22 -19 -17 -15 -15 -14 -12 -11 -11 -9 -8 -8 -8 -8 -9 -9 -8 -8 -8 -8 -9 -8 -7 -7 -8 -8 -7 -7 -7 -6 -5 -3 -3 -1 2 4 5 6 7 6 5 4 2 -2 -5 -7 -7 -8 -10 -10 -10 -10 -9 -9 -7 -7 -6 -5 -5 -6 -8 -10 -11 -12 -12 -11 -11 -11 -10 -9 -7 -6 -5 -6 -7 -9 -11 -13 -14 -14 -14 -12 -11 -10 -11 -10 -6 0 10 22 35 47 58 68 76 80 83 78 67 51 36 22 12 6 3 -1 -6 -10 -12 -13 -14 -16 -17 -17 -17 -18 -18 -18 -19 -20 -20 -20 -20 -20 -19 -19 -20 -21 -22 -23 -25 -26 -26 -26 -26 -27 -27 -28 -28 -29 -28 -29 -28 -28 -29 -28 -27 -25 -25 -23 -22 -21 -19 -17 -15 -14 -12 -10 -9 -8 -7 -6 -5 -5 -5 -5 -5 -5 -5 -4 -4 -4 -3 -3 -3 -4 -3 -3 -3 -3 -4 -3 -4 -4 -2 -1 0 2 4 8 10 10 10 10 9 8 6 4 0 -3 -5 -5 -7 -9 -9 -8 -7 -8 -8 -7 -7 -7 -6 -6 -6 -7 -9 -9 -10 -11 -11 -11 -10 -10 -9 -7 -5 -3 -4 -5 -7 -9 -10 -11 -9 -8 -6 -4 -3 -4 -6 -5 0 6 16 27 40 51 60 68 75 82 81 77 66 52 39 27 17 10 6 2 -2 -6 -10 -12 -13 -14 -15 -16 -15 -16 -16 -17 -17 -17 -18 -18 -18 -17 -17 -16 -17 -17 -18 -19 -19 -20 -20 -21 -22 -23 -24 -25 -26 -26 -26 -26 -27 -26 -26 -26 -25 -24 -23 -22 -21 -19 -18 -16 -14 -11 -9 -8 -7 -5 -4 -4 -3 -2 -1 -1 -1 -1 -1 -2 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 4 5 7 10 14 16 17 15 14 13 12 11 8 5 1 0 0 -2 -4 -4 -3 -3 -2 -1 0 0 0 -1 -2 -3 -5 -5 -5 -6 -6 -5 -5 -5 -4 -2 0 1 2 1 0 -3 -5 -5 -5 -4 -2 0 0 -1 -1 1 7 14 26 39 53 63 73 81 87 90 87 80 65 51 38 26 18 12 8 3 -2 -6 -8 -9 -10 -11 -12 -12 -12 -14 -13 -12 -12 -13 -13 -14 -15 -16 -17 -16 -17 -18 -18 -17 -18 -20 -21 -22 -22 -24 -24 -24 -24 -24 -24 -23 -24 -24 -24 -23 -22 -21 -19 -16 -14 -13 -11 -9 -7 -5 -3 0 0 1 2 3 4 4 4 6 6 6 6 7 8 7 7 7 7 6 6 8 8 8 8 9 9 9 10 11 12 12 14 15 17 19 22 25 27 27 27 27 25 22 19 15 13 11 11 10 9 8 7 8 8 8 9 9 10 10 9 9 7 5 5 6 6 5 5 5 6 6 9 12 13 11 9 6 4 1 1 4 6 7 9 9 8 9 14 23 34 48 62 77 86 96 103 109 110 103 92 76 61 45 34 29 25 19 11 6 2 0 0 -1 -3 -5 -6 -6 -6 -7 -7 -7 -7 -8 -8 -8 -9 -10 -11 -11 -11 -12 -14 -15 -15 -16 -17 -17 -18 -19 -20 -21 -21 -22 -22 -21 -21 -20 -19 -18 -16 -15 -13 -11 -9 -7 -4 -1 1 2 4 5 6 7 8 9 9 9 9 9 9 9 8 9 10 10 11 12 12 11 11 11 11 10 11 11 12 13 14 15 15 15 17 20 24 28 29 30 29 28 28 27 24 20 16 14 13 12 11 10 9 8 9 9 9 9 10 11 11 10 9 8 7 7 6 6 6 6 7 7 8 10 12 13 11 8 5 3 1 0 2 5 6 6 5 4 6 12 22 35 50 62 77 88 97 103 108 110 104 94 78 62 45 34 29 26 21 14 9 5 3 1 0 -1 -2 -3 -4 -4 -5 -6 -6 -5 -6 -8 -8 -8 -8 -9 -10 -10 -12 -13 -14 -15 -15 -16 -17 -17 -19 -21 -22 -22 -23 -24 -24 -23 -24 -24 -22 -20 -19 -17 -14 -12 -10 -9 -7 -5 -4 -3 -1 1 3 4 5 7 7 7 8 8 8 7 7 8 7 7 7 7 5 5 5 5 5 5 6 7 7 7 7 8 9 10 11 13 16 18 20 21 20 20 19 18 15 12 9 7 6 4 3 2 2 2 2 3 2 1 2 3 4 3 3 2 1 0 0 -1 -1 -2 -2 -1 0 1 2 2 0 -3 -5 -8 -9 -9 -8 -6 -5 -6 -6 -5 -1 7 20 35 49 62 74 84 92 99 105 103 94 77 58 39 25 19 16 12 6 0 -3 -6 -9 -11 -12 -12 -14 -14 -14 -14 -15 -15 -16 -17 -17 -18 -17 -17 -18 -18 -19 -20 -22 -23 -23 -24 -26 -27 -28 -29 -30 -31 -30 -31 -31 -33 -33 -33 -32 -30 -30 -28 -27 -25 -22 -20 -18 -16 -13 -10 -8 -6 -4 -2 -2 -2 -1 0 -1 0 0 0 0 0 1 0 0 0 1 1 1 0 1 2 2 2 3 3 3 4 5 6 7 9 13 16 19 19 19 18 18 17 16 13 9 6 4 3 1 0 -2 -2 -2 -1 0 0 1 1 1 1 0 0 0 -2 -3 -3 -2 -3 -3 -4 -2 -1 0 1 1 0 -2 -5 -6 -9 -9 -7 -5 -3 -1 -1 0 2 8 18 32 46 59 71 83 94 101 107 106 98 83 65 49 35 27 23 21 15 7 2 0 0 -2 -4 -4 -6 -7 -8 -8 -9 -9 -9 -8 -9 -9 -10 -9 -10 -11 -11 -11 -12 -13 -14 -15 -16 -18 -18 -19 -20 -21 -22 -23 -24 -24 -24 -24 -24 -24 -23 -21 -19 -17 -16 -14 -11 -9 -7 -5 -2 -1 1 2 2 2 3 4 4 4 4 4 4 4 5 5 4 3 4 5 5 4 4 4 4 5 5 7 6 6 6 7 8 9 12 15 19 20 21 19 18 18 18 16 12 8 5 4 4 2 1 0 0 0 1 3 3 3 4 4 4 3 2 1 1 0 0 1 1 0 1 1 2 3 3 3 1 0 -1 -3 -5 -5 -3 -1 0 0 0 1 4 10 21 34 47 60 71 82 89 97 100 100 93 80 66 47 34 26 23 19 13 7 3 1 -1 -2 -3 -4 -6 -7 -6 -6 -6 -6 -6 -6 -7 -8 -9 -9 -9 -10 -10 -11 -12 -14 -15 -16 -17 -18 -19 -19 -21 -21 -22 -23 -24 -25 -25 -24 -23 -23 -21 -20 -19 -18 -16 -12 -10 -7 -5 -4 -3 -2 -1 0 1 1 2 2 2 1 1 1 0 0 1 1 0 0 1 1 1 1 2 3 4 3 3 3 3 4 5 7 7 8 11 13 15 16 16 16 15 14 12 10 7 4 3 2 0 0 0 1 0 0 0 1 1 2 3 3 1 0 0 -1 -2 -3 -2 -2 -1 -1 0 0 1 2 2 1 -1 -4 -6 -7 -7 -6 -5 -4 -4 -5 -3 0 5 14 27 42 56 67 79 87 96 101 105 101 87 71 53 39 29 24 22 16 10 5 2 1 0 -1 -2 -3 … ]}    {[n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    …      ]}
    {[ -34 -34 -33 -32 -31 -30 -28 -26 -24 -22 -20 -17 -15 -12 -10 -8 -6 -6 -5 -3 -3 -2 0 1 1 0 1 2 2 2 2 2 2 2 2 3 4 4 5 6 6 7 7 8 10 12 15 18 20 21 21 20 20 18 17 13 8 4 2 2 0 -2 -2 -1 0 -1 -1 0 0 1 1 1 0 -2 -3 -3 -3 -3 -3 -2 -2 -1 -1 1 3 5 6 4 2 -1 -3 -5 -6 -6 -4 -1 0 -1 -2 0 5 13 26 41 56 69 80 92 99 107 109 107 96 79 62 43 28 20 17 13 6 0 -3 -5 -6 -7 -8 -9 -11 -13 -13 -12 -11 -11 -12 -12 -14 -15 -16 -17 -17 -18 -19 -19 -19 -21 -23 -24 -26 -27 -28 -28 -28 -29 -30 -31 -31 -32 -33 -33 -32 -32 -31 -29 -27 -25 -23 -20 -18 -16 -14 -11 -8 -6 -5 -3 -1 0 1 2 2 1 2 2 2 2 3 3 4 4 3 3 3 3 4 4 5 5 6 8 8 8 11 14 17 19 20 21 20 19 18 17 13 8 6 5 4 2 0 0 0 0 1 1 1 0 0 1 1 0 -2 -3 -4 -4 -4 -3 -4 -4 -4 -3 -2 0 1 1 0 -3 -7 -9 -11 -11 -9 -5 -3 -4 -6 -5 -2 5 17 31 44 58 69 79 87 91 97 94 86 71 55 39 22 12 8 5 0 -6 -9 -12 -13 -14 -15 -15 -17 -19 -19 -19 -20 -20 -19 -19 -20 -21 -21 -22 -23 -24 -25 -25 -26 -28 -30 -31 -33 -35 -35 -35 -36 -37 -38 -39 -40 -40 -39 -39 -40 -39 -38 -37 -36 -35 -33 -30 -27 -26 -23 -21 -20 -19 -16 -15 -13 -12 -12 -12 -13 -13 -13 -13 -12 -12 -12 -11 -11 -12 -11 -11 -11 -12 -12 -12 -13 -13 -13 -12 -12 -12 -11 -10 -8 -5 -2 0 0 0 0 -1 -3 -6 -9 -11 -12 -14 -16 -18 -19 -20 -19 -18 -17 -17 -17 -16 -16 -17 -18 -18 -19 -20 -21 -22 -22 -22 -22 -21 -20 -20 -19 -17 -15 -17 -19 -21 -24 -26 -27 -27 -25 -24 -23 -24 -26 -28 -24 -16 -6 5 19 31 43 51 57 63 66 65 57 46 30 13 0 -8 -12 -14 -18 -22 -26 -28 -29 -30 -30 -31 -31 -32 -31 -33 -34 -34 -34 -34 -35 -35 -36 -37 -38 -39 -39 -41 -41 -43 -43 -45 -46 -46 -47 -48 -50 -50 -50 -51 -52 -51 -51 -52 -51 -49 -47 -47 -45 -43 -41 -39 -38 -35 -34 -32 -30 -28 -27 -26 -24 -23 -21 -21 -21 -21 -21 -23 -23 -22 -22 -22 -22 -21 -21 -22 -23 -24 -24 -24 -23 -22 -21 -20 -20 -19 -17 -15 -13 -11 -11 -11 -10 -11 -13 -17 -20 -22 -23 -24 -25 -26 -28 -28 -27 -26 -25 -26 -25 -23 -23 -24 -25 -26 -27 -28 -29 -29 -29 -30 -31 -30 -31 -30 -28 -26 -25 -26 -28 -31 -33 -36 -37 -37 -36 -34 -35 -35 -37 -36 -32 -24 -14 -2 10 22 32 40 47 54 58 57 51 38 23 6 -7 -14 -17 -20 -24 -29 -32 -34 -35 -36 -38 -40 -41 -41 -42 -41 -42 -43 -44 -45 -44 -45 -46 -47 -47 -47 -48 -48 -49 -50 -52 -52 -53 -53 -54 -55 -55 -57 -56 -58 -57 -58 -57 -58 -58 -57 -57 -54 -54 -51 -50 -47 -44 -41 -38 -38 -36 -35 -32 -32 -31 -29 -30 -30 -30 -30 -31 -31 -31 -30 -31 -31 -30 -30 -30 -31 -30 -29 -30 -29 -28 -26 -26 -25 -25 -23 -21 -18 -16 -15 -15 -15 -15 -15 -17 -19 -22 -25 -27 -27 -28 -29 -31 -31 -30 -30 -30 -31 -30 -30 -30 -31 -31 -31 -33 -33 -34 -34 -35 -35 -35 -34 -33 -32 -29 -27 -27 -29 -31 -33 -36 -37 -38 -36 -37 -36 -35 -36 -36 -33 -25 -17 -5 8 22 34 44 54 64 71 72 65 51 35 18 4 -4 -9 -12 -18 -24 -28 -31 -32 -34 -35 -36 -36 -37 -37 -37 -37 -37 -38 -39 -39 -39 -38 -39 -38 -40 -40 -43 -44 -44 -44 -45 -46 -46 -47 -47 -48 -48 -50 -52 -52 -52 -51 -52 -50 -50 -49 -47 -45 -42 -41 -39 -38 -35 -34 -33 -32 -30 -29 -28 -26 -25 -24 -24 -23 -22 -22 -22 -22 -21 -21 -21 -20 -19 -19 -19 -19 -18 -17 -16 -15 -13 -11 -11 -9 -5 -3 -2 0 3 3 2 2 2 2 0 -4 -7 -9 -11 -12 -14 -16 -17 -16 -14 -14 -14 -13 -12 -12 -13 -13 -15 -16 -17 -17 -16 -16 -16 -17 -16 -16 -15 -13 -10 -7 -8 -9 -11 -13 -16 -17 -15 -13 -10 -9 -9 -10 -10 -7 0 10 21 34 48 59 69 77 84 89 87 81 68 53 38 24 16 11 6 1 -4 -8 -11 -11 -12 -13 -14 -14 -14 -15 -16 -17 -16 -16 -17 -18 -18 -18 -19 -20 -21 -22 -23 -23 -23 -24 -25 -26 -27 -28 -30 -30 -30 -30 -32 -33 -34 -35 -35 -35 -33 -32 -30 -28 -26 -25 -23 -20 -17 -14 -12 -10 -9 -8 -6 -4 -4 -3 -3 -1 -1 -2 -2 -2 -1 -1 0 1 1 0 1 3 3 3 3 5 6 8 11 14 16 17 18 18 18 18 15 13 9 6 5 5 3 1 0 0 1 1 1 2 2 2 2 2 1 0 0 -1 -1 -2 -2 0 0 0 0 2 5 7 8 8 7 4 2 0 0 0 2 4 4 2 1 1 5 12 23 37 51 64 74 85 92 99 102 98 89 75 60 44 31 23 22 19 14 8 3 1 0 0 0 0 -1 -3 -4 -4 -4 -5 -6 -6 -8 -8 -9 -10 -11 -13 -14 -15 -16 -18 -19 -20 -22 -24 -26 -27 -29 -30 -30 -30 -29 -30 -30 -29 -28 -27 -25 -23 -22 -20 -17 -15 -13 -10 -7 -5 -4 -2 -1 -1 0 0 1 2 3 2 3 2 2 3 4 5 5 5 6 5 5 5 5 5 6 6 9 12 15 16 18 18 17 17 16 14 10 8 7 6 4 2 0 0 1 2 2 2 1 1 1 1 1 1 0 0 -2 -1 -1 0 -1 -1 -1 0 1 3 5 5 3 0 -1 -2 -4 -4 -2 0 0 -1 -3 -3 -1 3 12 25 35 46 56 66 74 81 88 90 88 78 67 52 37 27 23 21 16 10 6 3 2 2 2 1 0 -1 -2 -2 -2 -2 -2 -2 -3 -5 -6 -7 -8 -9 -9 -10 -11 -12 -13 -14 -15 -16 -17 -17 -18 -18 -19 -20 -21 -21 -20 -19 -19 -18 -17 -14 -13 -13 -11 -10 -10 -9 -7 -4 -2 -1 0 0 0 2 4 4 4 4 5 5 5 5 5 6 6 6 6 5 5 6 8 9 10 12 14 16 19 20 21 21 19 19 19 18 16 13 11 9 7 6 6 7 8 8 8 8 8 10 10 10 9 9 9 9 9 9 9 9 8 8 9 10 11 13 14 14 12 10 8 7 6 6 9 11 13 13 12 13 17 27 39 53 65 78 89 102 112 119 124 119 109 91 75 59 48 43 39 34 27 22 20 19 17 16 15 13 11 10 10 10 9 7 6 4 2 1 0 0 -1 -2 -2 -2 -4 -6 -7 -9 -9 -9 -8 -8 -9 -11 -12 -13 -13 -12 -10 -9 -7 -6 -5 -4 -4 0 2 5 6 9 11 13 14 15 17 19 20 20 21 21 21 22 22 22 21 22 22 24 24 25 26 25 25 26 28 29 32 35 39 42 44 45 45 45 44 44 42 41 38 34 32 29 28 28 28 28 28 28 29 29 29 28 27 25 24 23 24 24 24 24 24 23 23 25 27 30 31 32 31 29 27 25 26 27 29 32 35 34 33 33 36 43 53 66 79 93 102 113 122 129 134 133 129 115 102 87 73 63 58 56 50 45 38 34 32 30 28 27 26 25 24 23 23 23 … ]}    {[T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    …        ]}
    {[12 11 10 9 7 7 6 4 4 4 4 3 2 2 2 1 0 0 -1 -2 -4 -5 -7 -9 -10 -11 -11 -12 -12 -13 -14 -15 -16 -16 -17 -17 -17 -17 -17 -17 -16 -14 -12 -10 -7 -4 -1 1 3 6 9 11 13 14 15 16 16 17 18 19 19 20 20 20 21 21 22 22 22 23 23 23 24 25 27 28 30 32 35 38 40 40 41 40 40 40 39 37 33 30 26 23 21 22 22 23 23 22 22 21 22 21 22 22 20 19 18 18 17 17 17 17 17 18 21 24 25 25 24 21 18 15 15 15 16 18 21 22 20 19 22 30 40 53 69 83 96 107 117 126 131 132 124 110 90 69 51 39 35 34 31 26 20 17 16 15 13 11 10 10 8 6 6 5 5 4 4 4 2 0 -3 -5 -6 -5 -4 -4 -6 -9 -11 -13 -15 -17 -18 -19 -21 -21 -21 -20 -21 -25 -27 -25 -21 -20 -18 -15 -14 -13 -12 -8 -7 -5 -2 0 3 3 3 4 4 6 7 6 5 5 7 7 7 8 10 11 10 9 8 9 10 11 14 15 17 18 22 26 28 30 31 32 31 30 29 28 25 22 19 15 14 14 15 15 14 12 13 13 14 13 13 12 10 9 9 9 9 8 7 6 7 8 10 14 15 14 14 13 11 8 6 6 8 10 14 15 14 11 12 18 27 39 54 69 82 92 98 105 109 109 102 86 68 48 32 21 17 16 13 9 5 2 1 0 0 -1 -2 -3 -4 -5 -7 -7 -8 -9 -10 -9 -11 -12 -12 -14 -14 -15 -15 -17 -18 -20 -21 -22 -24 -25 -26 -26 -26 -27 -27 -27 -27 -27 -26 -25 -23 -21 -19 -16 -14 -11 -10 -7 -5 -3 0 3 5 7 8 8 8 8 9 10 11 11 12 13 13 13 14 15 15 16 17 18 19 19 22 24 27 29 33 34 35 35 36 36 34 32 30 27 24 21 20 19 19 19 20 19 18 18 18 19 19 19 18 17 15 14 14 15 15 15 16 17 18 20 23 24 23 21 20 19 17 17 18 20 21 21 20 18 19 23 32 45 57 69 80 91 97 104 110 116 117 111 102 85 68 53 44 41 40 36 30 25 21 19 18 17 16 16 16 15 14 11 11 11 11 11 10 9 7 6 5 5 4 3 2 1 0 -2 -3 -3 -4 -5 -6 -6 -7 -8 -7 -7 -7 -6 -5 -2 -1 0 2 4 6 8 10 13 16 18 21 23 24 25 26 27 28 28 30 30 31 31 32 33 34 34 34 34 34 35 36 39 40 40 42 45 48 50 53 52 51 50 50 51 49 48 44 42 39 36 36 36 37 36 37 37 37 36 36 36 34 34 34 35 35 34 34 34 33 33 35 36 38 39 39 39 39 38 35 33 31 31 32 34 36 35 34 34 37 43 53 67 79 92 103 115 123 132 138 139 134 118 103 86 73 65 61 58 50 44 39 38 35 34 34 32 30 28 28 27 27 26 25 25 24 22 21 20 19 18 17 16 14 13 12 11 11 9 8 8 6 4 3 3 3 4 4 5 5 6 7 8 10 11 13 15 18 19 21 24 25 26 27 29 30 31 32 32 33 32 33 34 35 35 36 37 36 36 35 36 36 36 39 40 42 44 47 49 52 52 52 51 50 49 46 46 43 40 36 34 32 31 32 32 32 31 31 31 31 30 29 28 26 25 25 25 24 24 25 26 27 28 30 32 31 29 28 26 24 22 22 23 24 25 25 24 22 24 31 41 52 66 78 92 100 109 115 122 123 116 105 87 71 57 50 46 42 36 29 25 21 20 18 17 16 15 14 13 11 10 11 10 8 7 7 5 4 3 2 1 0 -1 -2 -3 -4 -6 -8 -9 -10 -11 -11 -12 -13 -13 -12 -13 -13 -13 -12 -10 -9 -7 -5 -4 -3 -1 0 1 3 5 7 8 9 9 10 10 10 10 10 10 10 11 11 12 11 12 12 12 11 13 14 15 17 20 23 25 27 28 28 27 26 26 25 23 19 17 13 10 9 9 9 9 8 8 8 7 7 7 6 4 3 3 2 1 0 0 0 1 2 3 5 7 7 7 4 2 -1 -2 -2 -1 0 2 3 1 1 3 8 16 27 41 54 66 75 85 91 97 97 92 81 64 49 34 23 18 16 13 7 2 -1 -2 -3 -5 -7 -8 -9 -10 -11 -12 -13 -14 -15 -15 -17 -18 -18 -18 -18 -20 -21 -22 -23 -25 -26 -28 -29 -30 -31 -31 -32 -33 -34 -34 -35 -35 -34 -33 -32 -32 -30 -28 -26 -24 -21 -18 -15 -14 -12 -9 -7 -6 -5 -3 -2 -2 -2 -1 -1 -1 0 0 0 0 0 2 2 2 2 3 3 5 7 9 11 14 16 16 17 16 16 16 15 13 10 7 3 0 -1 -1 -2 -2 -1 -1 -1 -2 -2 -1 -2 -4 -5 -5 -6 -6 -5 -5 -5 -5 -5 -3 -1 0 2 2 0 -2 -4 -6 -7 -6 -5 -3 -3 -5 -6 -6 -2 6 19 33 47 58 68 79 85 92 94 95 85 71 54 35 21 14 13 10 4 0 -3 -5 -6 -8 -10 -12 -12 -12 -14 -15 -15 -15 -15 -16 -18 -19 -19 -18 -19 -21 -22 -23 -23 -24 -25 -27 -29 -29 -30 -31 -34 -35 -35 -35 -34 -34 -34 -33 -33 -33 -31 -29 -27 -25 -22 -19 -17 -15 -14 -12 -11 -8 -6 -5 -4 -3 -2 -2 -2 -1 -1 -1 -2 -1 -1 0 0 0 0 1 1 1 2 3 5 6 10 13 15 16 16 16 15 15 13 10 7 4 2 0 -1 -2 -1 -1 -2 -2 -1 -1 -1 -1 -1 -2 -4 -4 -4 -5 -4 -4 -4 -3 -3 -2 0 2 3 3 2 0 -2 -5 -6 -5 -4 -1 1 0 0 0 6 14 26 41 57 71 82 94 100 107 107 104 90 74 57 40 28 22 20 15 7 1 0 0 0 -1 -2 -3 -6 -8 -9 -8 -8 -10 -13 -15 -15 -14 -15 -16 -18 -20 -21 -22 -22 -24 -25 -27 -30 -31 -29 -29 -32 -36 -37 -36 -35 -34 -33 -34 -33 -31 -28 -27 -27 -25 -22 -18 -16 -15 -17 -18 -18 -15 -11 -7 -7 -9 -9 -8 -8 -9 -9 -8 -7 -7 -6 -5 -6 -7 -6 -5 -5 -4 -1 1 4 6 8 9 7 7 7 5 1 -3 -5 -7 -9 -12 -12 -12 -12 -12 -12 -11 -11 -11 -10 -8 -8 -9 -11 -13 -16 -17 -16 -18 -18 -17 -16 -16 -17 -16 -13 -11 -11 -12 -13 -15 -17 -17 -16 -14 -13 -14 -16 -16 -13 -7 1 14 29 43 57 67 75 81 84 85 76 65 50 35 20 8 3 1 -3 -10 -15 -16 -16 -17 -20 -23 -24 -25 -26 -30 -32 -32 -31 -31 -32 -33 -34 -33 -34 -36 -38 -39 -40 -41 -42 -43 -45 -45 -45 -46 -49 -52 -54 -53 -53 -53 -52 -51 -51 -50 -47 -46 -44 -43 -40 -38 -37 -34 -32 -29 -28 -27 -26 -24 -23 -23 -22 -21 -20 -20 -20 -21 -21 -20 -19 -18 -18 -17 -17 -16 -16 -16 -14 -12 -9 -6 -2 0 0 0 0 0 0 -1 -3 -5 -8 -10 -12 -13 -14 -14 -12 -12 -12 -13 -12 -11 -12 -13 -13 -14 -15 -15 -15 -15 -15 -16 -15 -15 -15 -12 -9 -7 -8 -9 -11 -12 -14 -14 -13 -11 -10 -9 -8 -10 -8 -3 6 18 31 44 58 67 76 84 91 94 88 78 60 44 27 15 9 8 4 0 -6 -9 -12 -13 -13 -14 -15 -15 -15 -16 -18 -19 -20 -20 -21 -21 -21 -22 -24 -24 -25 -26 -27 -27 -29 -31 -32 -33 -34 -35 -36 -36 -37 -37 -38 -38 -38 -38 -37 -36 -34 -33 -30 -28 -25 -24 -22 -20 -18 -15 -14 -12 -10 -8 -8 -7 -6 -5 -5 -3 -2 -2 -2 -1 -1 -1 0 0 0 0 1 2 3 4 6 9 11 13 14 15 15 15 14 11 7 3 2 1 0 -2 -2 -1 -2 -2 -2 -2 -2 -2 -1 -1 … ]}    {[n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    …        ]}
    {[  -2 -1 -1 0 0 -1 -1 -1 -2 -3 -3 -4 -4 -4 -3 -2 -2 -2 -1 1 3 2 1 0 -3 -6 -8 -9 -8 -8 -7 -4 -4 -5 -3 4 14 27 42 60 74 86 96 106 115 116 110 92 73 52 37 27 22 17 10 4 0 -2 -3 -3 -5 -7 -7 -7 -7 -8 -9 -10 -10 -11 -12 -12 -13 -14 -15 -14 -14 -15 -17 -17 -19 -20 -22 -22 -24 -25 -26 -27 -27 -29 -30 -30 -30 -30 -30 -28 -27 -25 -24 -22 -21 -21 -20 -18 -16 -14 -11 -9 -8 -8 -7 -5 -4 -5 -6 -6 -7 -6 -5 -5 -5 -6 -6 -6 -6 -6 -6 -5 -4 -5 -5 -4 -4 -3 -2 0 2 5 7 9 10 9 8 7 6 3 0 -2 -4 -7 -9 -9 -10 -10 -9 -8 -8 -8 -8 -9 -9 -11 -13 -13 -14 -15 -16 -15 -14 -15 -14 -14 -12 -12 -10 -7 -5 -6 -8 -10 -13 -16 -17 -17 -15 -15 -14 -15 -16 -16 -12 -5 7 22 37 51 64 75 85 92 99 98 88 73 56 40 24 16 12 7 0 -6 -10 -13 -15 -16 -15 -15 -16 -18 -18 -20 -22 -23 -22 -21 -21 -23 -23 -24 -26 -26 -27 -27 -29 -30 -31 -34 -35 -37 -36 -38 -39 -40 -41 -40 -42 -41 -42 -41 -42 -42 -40 -38 -35 -34 -31 -30 -28 -26 -23 -19 -18 -15 -13 -11 -12 -13 -12 -11 -10 -10 -10 -9 -9 -9 -9 -9 -9 -9 -7 -6 -6 -6 -5 -5 -5 -4 -2 0 1 3 7 10 11 11 10 9 9 10 8 6 2 0 -2 -4 -6 -6 -4 -5 -5 -5 -4 -3 -4 -4 -5 -6 -7 -8 -8 -9 -9 -10 -8 -8 -8 -7 -5 -3 -2 -2 -3 -5 -7 -9 -10 -12 -13 -12 -9 -8 -9 -10 -8 -3 5 17 32 46 56 65 73 81 87 90 86 74 58 42 27 15 9 7 3 -2 -7 -10 -10 -11 -13 -14 -13 -14 -15 -15 -16 -16 -17 -18 -18 -19 -20 -21 -22 -22 -23 -24 -23 -25 -27 -29 -29 -29 -30 -30 -31 -31 -32 -33 -33 -33 -33 -34 -32 -31 -31 -31 -30 -28 -26 -24 -22 -18 -16 -15 -14 -13 -12 -10 -8 -7 -6 -6 -4 -4 -4 -4 -4 -3 -3 -3 -2 -2 -2 -1 -1 -1 -1 -1 0 1 2 3 6 9 12 14 15 15 14 14 13 12 9 6 3 1 0 -2 -2 -1 0 0 1 2 1 1 1 1 0 0 0 0 -1 -2 -2 -2 -2 -2 0 1 3 4 6 5 4 2 0 0 -1 -1 0 0 0 -1 -2 -2 0 8 18 30 42 54 64 74 81 88 93 94 88 75 59 42 28 22 20 19 12 8 5 3 1 0 0 -1 -2 -2 -2 -2 -4 -5 -5 -6 -8 -8 -7 -8 -8 -10 -11 -12 -13 -14 -15 -16 -17 -17 -18 -18 -19 -20 -21 -22 -24 -24 -23 -23 -23 -22 -21 -19 -19 -16 -14 -11 -9 -6 -4 -2 -1 0 1 2 3 3 5 4 4 4 4 4 4 4 4 5 4 5 5 5 4 5 7 8 9 10 12 15 18 21 22 22 20 21 20 19 16 13 10 8 5 4 4 4 5 6 6 5 4 6 7 7 6 6 5 3 3 3 3 2 2 3 3 4 7 10 10 8 7 5 2 1 1 3 3 3 3 3 2 4 11 23 35 51 65 81 92 101 110 118 120 110 95 75 55 40 32 28 22 15 8 5 4 2 2 1 0 -2 -3 -4 -5 -5 -6 -5 -6 -7 -8 -9 -10 -10 -11 -12 -14 -16 -17 -17 -19 -20 -21 -22 -24 -25 -25 -25 -25 -27 -26 -26 -26 -25 -23 -21 -20 -19 -18 -16 -14 -12 -9 -4 -2 -1 0 2 4 4 5 5 4 3 4 5 5 5 6 7 7 7 7 7 7 7 8 9 10 11 12 13 14 16 20 24 27 28 26 25 24 22 20 17 15 12 10 7 5 4 5 6 5 4 5 6 7 8 7 6 4 1 1 1 1 1 2 2 3 4 6 9 10 10 9 7 3 0 0 1 3 5 7 7 4 3 5 13 25 40 55 72 86 97 107 114 121 119 113 97 79 62 46 36 30 27 20 14 9 7 5 4 4 2 2 2 1 0 -1 -2 -4 -5 -5 -6 -7 -8 -9 -9 -10 -11 -11 -12 -13 -15 -17 -18 -18 -20 -21 -21 -21 -22 -23 -22 -22 -22 -22 -21 -20 -20 -18 -16 -14 -12 -9 -5 -1 0 1 3 4 5 6 8 9 9 10 11 11 11 11 12 12 12 12 13 14 13 13 14 15 15 16 18 19 20 22 26 29 31 32 33 33 32 31 29 25 20 17 17 17 16 14 14 15 15 14 15 15 15 15 15 15 14 13 13 12 11 10 12 13 14 14 15 17 18 21 21 21 19 17 15 14 12 13 15 15 15 13 12 14 21 31 45 60 73 87 98 110 117 125 127 121 108 89 72 54 44 40 38 32 25 20 18 16 15 13 13 12 11 10 10 9 7 6 5 5 5 5 5 3 1 0 0 -1 -2 -3 -4 -5 -6 -7 -8 -10 -11 -11 -12 -12 -12 -12 -12 -11 -10 -9 -7 -6 -4 -2 0 1 3 5 8 10 11 14 15 16 16 17 18 18 19 19 20 20 20 20 21 21 21 21 22 23 22 23 24 26 28 31 36 38 39 39 39 38 36 35 32 28 26 25 25 23 22 21 22 22 22 22 23 23 23 24 23 22 20 19 19 19 19 18 19 19 19 20 22 25 26 27 26 25 22 20 18 17 18 19 21 21 21 19 22 27 37 49 64 79 91 104 115 126 132 134 130 115 99 81 67 55 49 45 40 33 28 25 23 22 20 18 17 17 16 15 15 15 13 12 12 12 10 9 9 8 7 6 5 4 2 1 0 0 -1 -2 -2 -3 -4 -5 -6 -7 -8 -7 -6 -5 -5 -4 -2 0 0 2 4 6 8 10 12 14 15 17 18 19 20 20 21 21 21 20 20 20 20 21 22 22 22 22 23 24 24 24 26 29 31 34 38 39 38 37 37 36 33 30 27 25 23 22 21 19 17 17 19 20 19 19 19 19 17 16 15 14 13 11 12 12 12 12 12 13 13 15 17 20 20 19 17 14 12 9 10 11 12 13 15 14 13 14 21 32 44 58 71 85 95 106 114 120 122 115 102 83 66 51 42 37 34 28 21 17 14 12 11 10 8 7 6 4 3 2 1 0 0 0 -1 -2 -4 -5 -5 -6 -6 -8 -9 -10 -12 -14 -15 -15 -16 -18 -19 -20 -21 -21 -21 -22 -22 -21 -20 -18 -16 -14 -12 -10 -9 -7 -5 -2 0 1 3 3 3 4 5 6 7 6 6 7 7 7 7 8 9 9 8 8 8 8 10 11 12 12 15 17 20 21 22 23 22 22 20 19 15 11 9 7 6 4 3 3 3 3 3 4 3 2 3 3 3 2 1 0 -1 -1 0 0 -1 -2 -1 0 1 3 6 6 5 3 1 -1 -3 -4 -4 -2 -1 0 0 0 1 7 17 30 43 56 68 80 88 94 101 102 95 81 65 48 33 24 21 19 14 8 4 1 0 -2 -3 -5 -6 -7 -8 -8 -10 -11 -11 -12 -13 -14 -14 -15 -16 -17 -18 -19 -21 -22 -23 -24 -26 -26 -27 -29 -30 -31 -31 -32 -32 -33 -33 -33 -33 -32 -31 -29 -27 -24 -22 -20 -19 -16 -13 -11 -9 -7 -5 -5 -5 -4 -2 -2 -3 -2 -2 -3 -4 -3 -2 -2 -2 -1 0 0 0 0 1 1 2 5 9 12 13 13 13 12 10 9 6 3 0 -2 -2 -4 -5 -6 -7 -7 -7 -7 -6 -6 -6 -5 -4 -5 -6 -8 -8 -9 -9 -9 -8 -8 -9 -9 -9 -7 -5 -2 0 -1 -4 -7 -9 -11 -12 -11 -8 -6 -5 -5 -6 -4 -1 7 20 36 51 66 80 92 101 109 113 107 92 74 56 39 27 22 17 11 3 -1 -3 -4 -5 -7 -8 -9 -11 -11 -12 -12 -14 -14 -14 -15 -17 -18 -18 -19 -20 -21 -22 -22 -24 -25 -26 -27 -28 -30 -30 -31 -31 -32 -32 -32 -32 -33 -32 -31 -30 -29 -27 -25 -24 -21 -19 -16 -14 -12 -10 -8 -6 -5 -5 -4 … ]}    {[n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    …       ]}
    {[52 62 69 78 84 87 86 77 65 49 34 22 15 14 12 8 2 -1 -3 -4 -4 -4 -4 -4 -5 -6 -5 -4 -5 -7 -8 -8 -8 -8 -8 -8 -9 -10 -10 -10 -11 -12 -12 -13 -15 -16 -18 -18 -19 -19 -20 -21 -22 -22 -20 -19 -18 -18 -16 -14 -14 -12 -9 -6 -6 -6 -5 -1 0 0 1 1 1 0 1 2 3 4 5 4 3 3 4 4 5 5 5 5 6 5 6 6 6 6 7 10 11 14 17 19 18 16 15 17 18 18 15 11 7 4 4 4 3 1 2 3 4 4 5 6 7 6 5 5 5 5 4 3 2 1 1 1 1 1 1 3 5 6 7 7 6 3 1 -1 -2 -3 -3 0 0 -1 -3 -2 0 6 15 28 40 51 62 71 81 87 94 95 87 75 58 43 29 21 17 13 8 3 0 -1 -2 -4 -4 -5 -6 -7 -6 -5 -4 -4 -6 -7 -8 -9 -10 -9 -9 -10 -11 -12 -12 -14 -16 -18 -19 -21 -22 -22 -22 -23 -25 -26 -28 -28 -28 -27 -27 -27 -26 -26 -25 -24 -22 -21 -20 -18 -14 -13 -12 -12 -11 -9 -7 -6 -5 -5 -6 -7 -6 -5 -5 -6 -6 -6 -6 -6 -7 -7 -8 -8 -7 -8 -8 -7 -5 -3 -3 -3 -1 1 3 3 4 4 3 1 0 -2 -6 -9 -10 -11 -12 -13 -14 -15 -16 -16 -16 -15 -16 -16 -16 -15 -17 -19 -19 -19 -19 -20 -18 -18 -18 -19 -19 -19 -19 -17 -16 -16 -17 -18 -20 -24 -27 -30 -29 -28 -27 -27 -27 -27 -27 -23 -16 -5 7 22 39 54 63 73 81 90 88 77 60 39 20 6 0 -1 -6 -12 -18 -22 -25 -26 -26 -28 -29 -30 -29 -29 -31 -33 -34 -34 -35 -34 -34 -35 -36 -38 -40 -43 -45 -45 -44 -44 -46 -48 -49 -49 -50 -51 -53 -55 -55 -56 -55 -55 -54 -53 -51 -50 -49 -48 -47 -44 -43 -40 -37 -34 -34 -33 -31 -31 -29 -29 -27 -28 -29 -29 -28 -27 -27 -26 -26 -25 -25 -25 -25 -26 -27 -27 -26 -26 -25 -23 -21 -21 -19 -17 -14 -13 -13 -12 -12 -12 -11 -11 -13 -17 -21 -23 -25 -26 -27 -29 -30 -30 -29 -28 -28 -27 -26 -25 -24 -26 -27 -27 -26 -27 -28 -28 -28 -28 -28 -27 -27 -26 -25 -23 -21 -22 -24 -26 -27 -30 -32 -32 -30 -28 -27 -27 -27 -26 -22 -13 -1 12 28 44 59 72 81 90 95 91 80 62 45 26 12 4 0 -3 -10 -16 -20 -23 -25 -25 -25 -25 -27 -27 -28 -28 -28 -28 -29 -30 -31 -32 -31 -32 -33 -34 -34 -36 -38 -38 -39 -39 -41 -42 -43 -43 -43 -45 -44 -46 -46 -46 -45 -45 -45 -43 -43 -40 -39 -36 -34 -32 -29 -27 -23 -21 -19 -19 -17 -15 -15 -14 -13 -12 -13 -13 -12 -11 -10 -9 -8 -7 -8 -9 -8 -7 -7 -8 -6 -5 -4 -3 -2 0 1 4 7 9 9 10 11 11 10 7 4 1 -1 -2 -3 -5 -5 -5 -5 -3 -3 -3 -3 -2 -1 0 0 -1 -3 -5 -6 -6 -6 -5 -4 -3 -3 -4 -3 0 3 4 2 0 -3 -4 -5 -4 -5 -4 -2 -1 -2 -2 0 6 15 28 43 58 71 82 94 103 110 111 106 93 76 60 44 32 26 23 18 12 8 7 7 5 4 4 5 4 3 2 2 2 1 0 0 -1 -1 -2 -2 -3 -4 -4 -4 -5 -7 -8 -8 -9 -10 -11 -11 -12 -13 -14 -14 -14 -15 -14 -13 -12 -12 -11 -8 -6 -4 -1 2 4 6 8 10 12 14 14 15 16 16 17 18 18 18 19 20 21 21 21 22 22 22 22 22 23 24 25 26 27 27 28 31 34 37 38 40 39 40 40 39 36 31 28 26 26 24 23 22 22 22 24 25 25 25 25 27 26 25 24 23 22 20 20 21 22 21 22 24 25 27 28 30 30 29 27 25 23 21 21 21 23 23 24 22 22 23 30 41 54 68 81 93 104 113 121 127 129 121 108 92 74 58 48 46 43 39 32 29 26 24 23 23 23 21 20 19 18 18 17 18 17 16 15 15 14 13 13 12 11 10 9 10 11 10 8 7 7 7 7 7 6 4 3 3 4 4 5 6 8 9 10 13 16 18 20 22 24 24 25 27 29 30 30 30 31 30 31 32 32 32 31 33 35 35 33 33 34 35 37 37 38 37 38 41 43 46 46 47 47 46 45 45 43 38 35 33 33 31 30 29 30 30 30 31 32 32 32 33 33 32 30 29 29 29 29 29 29 28 28 28 29 30 31 33 34 33 31 29 27 25 25 27 28 29 29 28 27 29 34 44 56 68 80 89 100 107 116 121 123 117 105 91 74 60 52 51 47 42 36 34 33 32 32 30 29 27 25 25 24 22 21 22 22 22 20 20 20 19 19 19 19 18 17 15 14 12 10 10 10 9 7 7 7 6 5 7 8 8 8 9 10 12 13 15 17 19 21 23 26 28 29 30 31 30 31 31 32 32 33 33 33 34 33 34 34 34 34 34 36 36 36 36 37 37 39 41 43 46 45 46 46 47 47 45 43 39 36 34 34 32 30 29 29 30 30 30 30 31 32 33 33 33 32 30 29 28 29 29 29 28 27 27 28 29 30 31 31 30 29 27 26 24 23 23 25 26 27 27 26 28 32 40 51 63 75 84 97 104 112 115 115 108 95 81 64 51 43 42 41 36 31 26 25 23 22 19 18 17 14 15 15 14 13 12 11 9 8 7 7 6 5 5 5 5 3 2 1 0 0 -1 -2 -3 -3 -3 -4 -4 -5 -6 -6 -6 -7 -5 -2 0 0 2 5 7 8 10 12 13 13 13 15 15 16 16 17 18 18 20 21 20 18 19 20 19 18 17 18 18 19 20 21 23 24 26 28 29 30 31 33 32 29 26 22 19 17 17 15 13 12 13 13 13 13 13 14 14 14 13 13 12 12 12 12 11 10 9 9 8 8 10 12 13 14 14 13 10 7 5 4 4 4 6 6 4 2 2 6 13 23 35 48 58 69 79 89 95 101 100 90 76 58 43 30 22 19 16 12 6 3 2 0 0 -1 -2 -4 -5 -6 -7 -8 -9 -10 -11 -11 -12 -14 -14 -15 -16 -18 -17 -17 -18 -20 -21 -22 -23 -24 -25 -25 -26 -27 -28 -28 -29 -29 -27 -26 -25 -24 -23 -21 -19 -18 -17 -15 -14 -12 -10 -8 -6 -5 -4 -3 -3 -2 -1 -1 -1 -1 0 1 1 1 0 0 0 -1 0 1 2 2 2 3 5 6 9 11 11 10 10 12 12 11 8 5 3 1 1 0 -1 -2 -1 0 -1 -2 -1 0 1 1 1 1 0 -1 -2 -2 -3 -3 -3 -3 -3 -3 -1 1 3 4 3 2 0 -3 -6 -7 -7 -7 -7 -6 -6 -6 -2 2 10 20 32 45 55 67 76 86 94 97 95 81 65 46 30 20 15 12 7 1 -2 -4 -5 -6 -8 -9 -8 -9 -10 -11 -11 -11 -13 -13 -14 -14 -15 -17 -17 -17 -18 -18 -19 -19 -20 -21 -22 -24 -25 -26 -26 -27 -29 -29 -29 -29 -28 -29 -28 -27 -27 -26 -24 -21 -20 -18 -16 -14 -13 -12 -10 -8 -7 -6 -4 -4 -4 -2 0 0 0 0 1 1 0 0 0 0 0 1 2 1 1 2 3 4 5 6 9 11 13 14 15 15 15 15 14 10 7 4 4 3 2 1 1 3 3 3 3 3 3 5 6 6 5 5 4 2 1 1 2 3 3 3 3 4 4 6 8 9 7 7 6 4 2 0 0 0 0 1 1 1 3 9 19 31 43 56 69 81 92 102 113 112 105 88 69 50 35 28 24 20 14 9 6 4 2 1 1 0 -1 -2 -3 -4 -4 -4 -5 -6 -7 -8 -7 -7 -8 -9 -9 -10 -12 -12 -13 -14 -15 -16 -18 -19 -20 -20 -19 -20 -20 -20 -20 -20 -21 -19 -18 -16 -15 -12 -9 -8 -7 -5 -3 -1 0 1 3 4 4 4 5 5 5 6 6 7 … ]}    {[QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    …    ]}
    {[  7 7 7 7 8 8 8 8 8 8 9 9 9 9 9 10 11 12 13 14 15 16 18 22 26 27 26 25 25 23 21 18 15 12 11 10 8 6 5 6 7 8 9 10 10 10 10 10 9 8 6 5 5 5 6 7 8 8 7 8 11 14 15 15 13 11 7 6 6 8 9 11 12 11 10 12 20 29 42 57 72 86 96 107 113 119 115 106 91 72 57 44 36 30 25 18 12 7 5 5 4 2 0 0 0 -1 -2 -3 -3 -3 -4 -4 -5 -7 -9 -10 -10 -11 -12 -13 -14 -16 -18 -19 -20 -21 -23 -23 -24 -25 -25 -26 -26 -26 -25 -24 -22 -21 -20 -18 -16 -14 -12 -9 -8 -7 -5 -2 -1 0 1 2 2 1 2 2 2 2 3 4 3 4 4 5 4 4 4 5 6 6 7 8 9 10 14 18 20 21 21 21 20 18 16 12 7 4 3 3 1 -1 -2 -3 -3 -2 0 0 0 0 0 0 0 -1 -2 -2 -3 -4 -3 -2 -2 -1 0 1 2 4 5 4 3 0 -3 -5 -4 -3 -1 1 0 0 0 2 7 16 30 45 58 70 80 90 97 102 102 94 81 63 47 32 22 18 15 9 1 -3 -5 -7 -8 -9 -9 -10 -11 -11 -11 -11 -12 -13 -12 -13 -14 -17 -17 -18 -19 -19 -20 -20 -21 -23 -24 -25 -27 -28 -28 -28 -28 -29 -30 -31 -31 -32 -31 -31 -31 -28 -26 -24 -23 -22 -20 -17 -15 -13 -11 -9 -8 -7 -5 -3 -3 -2 -2 -1 -1 -1 -1 0 0 -1 0 0 1 1 2 2 1 0 1 1 3 4 6 8 9 12 15 17 18 17 17 16 13 10 8 4 3 2 2 1 0 -1 -1 0 1 2 3 5 4 3 2 1 1 0 0 0 0 0 0 0 0 1 2 4 7 7 5 4 2 0 -2 -3 -3 -2 -1 0 -1 -3 -2 4 13 24 36 51 63 73 82 90 98 101 97 86 69 52 36 26 21 18 15 10 4 1 0 -1 -2 -2 -2 -3 -3 -4 -5 -5 -5 -6 -6 -7 -7 -8 -9 -9 -10 -11 -11 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -20 -19 -19 -19 -19 -17 -16 -15 -14 -12 -9 -8 -5 -4 -2 -2 0 3 5 6 7 7 8 8 8 8 8 7 8 9 9 9 9 10 10 10 11 11 11 11 11 12 14 14 15 17 19 20 22 24 25 24 24 23 22 19 15 13 10 10 9 9 7 8 9 10 10 9 10 11 11 10 11 11 10 9 9 9 8 8 9 10 10 10 12 14 16 16 15 14 11 7 5 4 4 4 5 7 6 6 7 13 22 32 46 61 74 86 96 108 114 116 110 96 78 61 49 40 35 30 25 19 13 10 8 7 6 6 6 6 5 4 4 4 3 3 3 3 2 1 0 0 -1 -2 -2 -3 -3 -5 -5 -6 -7 -9 -10 -10 -11 -12 -13 -13 -13 -13 -12 -12 -11 -10 -8 -5 -3 -2 -1 0 2 4 7 10 12 13 14 14 13 13 12 12 12 12 12 11 11 11 10 11 11 10 9 9 8 7 8 10 12 13 15 17 20 22 24 24 22 21 20 20 17 13 9 8 8 6 4 2 0 1 4 6 6 4 2 2 2 2 2 1 1 1 0 0 0 0 0 0 1 1 4 7 8 7 5 2 0 -4 -4 -3 -2 -1 0 1 0 0 5 16 28 43 58 74 87 99 109 117 121 115 103 83 66 50 39 34 28 21 13 8 6 3 2 1 0 -1 -2 -2 -2 -3 -4 -4 -5 -6 -7 -7 -7 -7 -8 -9 -10 -12 -13 -13 -15 -16 -17 -17 -18 -19 -20 -22 -23 -24 -25 -26 -26 -26 -25 -24 -22 -21 -20 -18 -15 -13 -11 -7 -5 -4 -2 -1 0 1 1 1 2 2 3 3 4 3 3 5 4 4 3 4 4 4 4 3 3 3 3 4 6 7 7 9 13 16 17 17 17 17 17 16 14 10 5 0 -1 -1 -3 -5 -6 -6 -6 -7 -5 -5 -5 -6 -4 -3 -4 -7 -8 -9 -10 -9 -8 -8 -9 -9 -10 -10 -9 -7 -4 -2 -2 -4 -7 -10 -14 -16 -16 -14 -13 -12 -12 -13 -11 -5 5 19 36 53 72 87 102 111 121 123 112 95 72 52 34 24 20 14 6 -2 -7 -9 -10 -10 -11 -13 -15 -16 -16 -17 -18 -18 -18 -18 -19 -20 -21 -22 -23 -24 -25 -26 -28 -29 -29 -30 -31 -34 -36 -37 -38 -38 -39 -39 -41 -42 -44 -44 -43 -42 -40 -38 -38 -36 -32 -29 -27 -24 -21 -20 -19 -17 -15 -12 -12 -10 -9 -9 -9 -9 -8 -8 -9 -8 -7 -7 -7 -7 -6 -7 -9 -9 -8 -7 -7 -5 -3 -2 -1 0 3 6 9 12 13 12 11 11 10 6 1 -3 -5 -7 -9 -10 -11 -12 -12 -11 -10 -10 -9 -8 -7 -8 -9 -9 -9 -10 -11 -11 -10 -10 -11 -10 -9 -9 -8 -5 -3 -3 -5 -6 -9 -12 -13 -14 -13 -12 -10 -8 -7 -7 -3 6 19 31 47 63 77 89 99 109 112 112 101 85 66 46 32 24 20 14 8 1 -2 -5 -6 -6 -7 -8 -8 -8 -8 -10 -11 -11 -11 -12 -13 -13 -14 -15 -15 -15 -16 -17 -18 -18 -19 -20 -20 -20 -22 -24 -26 -25 -26 -26 -26 -26 -27 -27 -26 -25 -23 -22 -19 -17 -15 -14 -12 -10 -8 -6 -4 -2 -1 0 0 1 2 2 3 4 4 3 3 4 4 5 5 6 6 6 6 6 6 6 7 8 9 9 10 13 15 17 20 23 25 24 23 23 22 20 17 13 10 8 8 7 4 2 2 3 4 5 5 5 5 5 6 6 4 3 3 3 3 3 3 3 3 4 4 6 8 10 11 9 6 2 0 -1 -2 -1 0 1 2 0 0 2 10 19 31 46 60 72 82 92 99 102 103 93 80 64 48 34 26 23 20 14 8 4 3 2 1 0 0 0 -1 -2 -2 -2 -2 -3 -3 -3 -3 -4 -5 -5 -5 -6 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -16 -16 -16 -17 -17 -16 -16 -14 -12 -10 -9 -7 -4 -2 0 1 3 5 7 8 9 11 12 12 13 13 13 13 13 13 12 12 13 13 13 13 13 14 14 14 14 15 15 16 18 20 21 23 26 29 30 31 31 30 29 26 23 18 14 13 12 12 9 8 8 9 10 11 11 10 10 10 11 11 10 9 8 8 7 6 7 7 7 8 10 11 12 13 14 12 10 8 6 4 4 4 5 6 5 4 6 10 17 29 43 56 69 79 90 97 102 106 106 99 85 69 51 38 30 27 25 18 12 8 7 7 5 5 5 5 4 4 4 3 2 2 2 1 0 0 0 0 -1 -1 -2 -4 -5 -5 -6 -7 -9 -9 -10 -11 -13 -13 -13 -14 -15 -15 -15 -15 -14 -13 -11 -9 -7 -5 -4 -2 0 2 4 5 6 8 10 10 10 11 11 11 10 11 12 12 12 12 13 12 11 12 13 13 13 14 15 16 16 17 18 19 23 26 29 29 29 29 29 27 24 21 17 14 11 10 9 7 7 7 9 9 9 10 11 10 9 9 9 8 7 7 7 6 6 5 6 6 6 8 10 12 13 12 11 8 5 2 1 0 0 2 3 3 2 4 8 15 26 41 57 71 84 96 107 115 119 116 104 85 66 49 38 31 28 23 16 10 6 5 4 2 2 2 2 1 0 0 -1 -2 -3 -2 -2 -2 -3 -3 -5 -6 -7 -8 -8 -10 -11 -12 -13 -13 -15 -16 -18 -19 -20 -19 -19 -18 -18 -18 -17 -16 -15 -13 -11 -9 -7 -4 -1 1 2 4 7 8 10 12 13 13 13 14 14 14 14 15 15 14 13 13 14 15 15 15 16 16 16 16 18 18 19 20 22 24 26 28 30 31 31 31 31 30 28 24 21 18 17 15 14 12 11 13 15 16 15 15 16 16 15 15 15 14 13 11 12 12 12 12 13 13 13 13 15 18 19 18 17 15 12 10 9 8 8 8 8 8 7 7 13 21 30 43 57 71 81 91 102 108 113 109 99 84 67 52 40 35 30 26 20 14 11 9 10 9 8 7 7 6 5 5 4 4 3 3 3 2 1 1 1 0 0 -1 -1 -2 -4 -4 -4 -5 -7 -8 -8 -9 -10 -11 -11 -11 -12 -11 -9 -7 -7 -5 -3 -2 -1 1 4 5 7 10 12 12 13 14 16 16 15 15 16 16 16 17 … ]}    {[T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    …      ]}

ネットワークの学習の選択または事前学習済みネットワークのダウンロード

この例の次の節では、LSTM ネットワークに学習させるための 3 つの異なるアプローチを比較します。データセットのサイズが大きいため、各ネットワークの学習プロセスには数分かかる場合があります。マシンに GPU と Parallel Computing Toolbox™ がある場合、MATLAB は自動的に GPU を使用して学習を高速化します。そうでない場合は CPU が使用されます。

学習手順をスキップし、以下のセレクターを使用して、事前学習済みのネットワークをダウンロードできます。例の実行でネットワークに学習させる場合は、[Train networks] を選択します。学習手順をスキップする場合は、[Download networks] を選択すると、事前学習済みの 3 つのネットワーク (-rawNetfilteredNetfsstNet-) をすべて含むファイルが、MATLAB® の tempdir コマンドで指定された一時ディレクトリの場所にダウンロードされます。tempdir と異なるフォルダーにダウンロード ファイルを置く場合は、以降の手順でディレクトリ名を変更してください。

actionFlag = "Train networks";
if actionFlag == "Download networks"
    % Download the pre-trained networks
    dataURL = 'https://ssd.mathworks.com/supportfiles/SPT/data/QTDatabaseECGSegmentationNetworks.zip'; %#ok<*UNRCH>
    modelsFolder = fullfile(tempdir,'QTDatabaseECGSegmentationNetworks');
    modelsFile = fullfile(modelsFolder,'trainedNetworks.mat');
    zipFile = fullfile(tempdir,'QTDatabaseECGSegmentationNetworks.zip');
    if ~exist(modelsFolder,'dir')
        websave(zipFile,dataURL);
        unzip(zipFile,fullfile(tempdir,'QTDatabaseECGSegmentationNetworks'));
    end
    load(modelsFile)
end

ランダムな初期重みを使用してネットワークに学習させるため、ダウンロードしたネットワークと新たに学習させたネットワークの間で結果がわずかに異なる場合があります。

生の ECG 信号の LSTM ネットワークへの直接入力

最初に、学習データセットから取得した生の ECG 信号を使用して、LSTM ネットワークに学習させます。

学習前のネットワーク アーキテクチャを定義します。サイズ 1 の sequenceInputLayer を指定して、1 次元の時系列を受け入れます。'sequence' 出力モードで LSTM 層を指定して、信号の各サンプルに対して分類できるようにします。最適なパフォーマンスを得るために 200 個の非表示ノードを使用します。出力サイズが 4 の fullyConnectedLayer を波形クラスごとに 1 つ指定します。softmaxLayerclassificationLayer を追加して、推定ラベルを出力します。

layers = [ ...
    sequenceInputLayer(1)
    lstmLayer(200,'OutputMode','sequence')
    fullyConnectedLayer(4)
    softmaxLayer
    classificationLayer];

適切なネットワーク性能を確認する学習プロセスに対するオプションを選択します。各パラメーターの説明については、trainingOptions (Deep Learning Toolbox)のドキュメンテーションを参照してください。

options = trainingOptions('adam', ...
    'MaxEpochs',10, ...
    'MiniBatchSize',50, ...
    'InitialLearnRate',0.01, ...
    'LearnRateDropPeriod',3, ...
    'LearnRateSchedule','piecewise', ...
    'GradientThreshold',1, ...
    'Plots','training-progress',...
    'shuffle','every-epoch',...
    'Verbose',0,...
    'DispatchInBackground',true);

この学習データセットはメモリにすべて収まるため、Parallel Computing Toolbox™ を使用できる場合、データストアの関数 tall を使用してデータを並列で変換してから、変換したデータをワークスペースに集めることができます。ニューラル ネットワークの学習は反復的です。データストアでは、反復のたびにファイルからデータを読み取り、そのデータを変換してからネットワークの係数を更新します。データがコンピューターのメモリに収まる場合、データをワークスペースにインポートしておけば、データの読み取りと変換を 1 回のみ実行すれば済むため、学習が高速になります。データがメモリに収まらない場合、学習エポックごとに学習関数にデータストアを渡して変換を実行しなければならないことに注意してください。

学習セットとテスト セットの両方に tall 配列を作成します。システムに応じて、MATLAB が作成する並列プール内のワーカー数は異なる場合があります。

tallTrainSet = tall(trainDs);
Starting parallel pool (parpool) using the 'Processes' profile ...
Connected to the parallel pool (number of workers: 8).
tallTestSet = tall(testDs);

次に、tall 配列の関数 gather を呼び出してデータセット全体の変換を計算し、学習信号、テスト信号、およびラベルが格納された cell 配列を取得します。

 trainData = gather(tallTrainSet);
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 10 sec
Evaluation completed in 11 sec
 trainData(1,:)
ans=1×2 cell array
    {[0 0 0 0 0 0 1 1 1 1 1 1 0 1 2 1 1 2 2 2 3 4 6 8 11 15 18 18 17 17 17 16 14 12 8 4 2 1 0 -1 -2 -1 0 0 0 1 2 2 2 2 1 0 -1 -1 -2 -3 -3 -2 -2 -2 -1 0 4 5 5 3 2 0 -1 -1 0 2 3 5 5 3 4 8 15 25 36 50 63 73 83 90 97 99 98 88 74 58 42 30 22 19 15 10 5 1 -1 -2 -2 -3 -4 -5 -6 -7 -9 -9 -10 -12 -13 -13 -12 -13 -14 -15 -15 -16 -18 -19 -20 -21 -22 -21 -22 -23 -24 -25 -25 -26 -27 -28 -29 -29 -28 -26 -25 -24 -23 -21 -19 -18 -16 -14 -12 -11 -9 -7 -6 -5 -5 -3 -3 -3 -3 -2 -2 -2 -2 -1 -1 -2 -2 -1 -1 -1 -1 0 0 0 -1 0 1 2 3 5 7 8 11 13 13 13 12 11 9 6 2 0 -2 -3 -5 -7 -8 -8 -7 -5 -4 -5 -4 -3 -4 -4 -5 -5 -6 -8 -9 -9 -8 -9 -9 -8 -6 -6 -4 -2 -3 -4 -5 -6 -7 -8 -8 -7 -6 -5 -6 -8 -7 -5 2 12 24 36 48 58 66 72 78 83 82 75 61 46 30 18 11 9 6 0 -4 -8 -9 -11 -12 -12 -13 -13 -14 -14 -15 -17 -17 -17 -17 -18 -18 -18 -19 -21 -22 -23 -23 -25 -25 -26 -26 -27 -28 -29 -30 -31 -32 -32 -33 -33 -34 -34 -34 -34 -32 -31 -30 -29 -27 -25 -23 -22 -19 -17 -15 -15 -14 -12 -11 -11 -9 -8 -8 -8 -8 -9 -9 -8 -8 -8 -8 -9 -8 -7 -7 -8 -8 -7 -7 -7 -6 -5 -3 -3 -1 2 4 5 6 7 6 5 4 2 -2 -5 -7 -7 -8 -10 -10 -10 -10 -9 -9 -7 -7 -6 -5 -5 -6 -8 -10 -11 -12 -12 -11 -11 -11 -10 -9 -7 -6 -5 -6 -7 -9 -11 -13 -14 -14 -14 -12 -11 -10 -11 -10 -6 0 10 22 35 47 58 68 76 80 83 78 67 51 36 22 12 6 3 -1 -6 -10 -12 -13 -14 -16 -17 -17 -17 -18 -18 -18 -19 -20 -20 -20 -20 -20 -19 -19 -20 -21 -22 -23 -25 -26 -26 -26 -26 -27 -27 -28 -28 -29 -28 -29 -28 -28 -29 -28 -27 -25 -25 -23 -22 -21 -19 -17 -15 -14 -12 -10 -9 -8 -7 -6 -5 -5 -5 -5 -5 -5 -5 -4 -4 -4 -3 -3 -3 -4 -3 -3 -3 -3 -4 -3 -4 -4 -2 -1 0 2 4 8 10 10 10 10 9 8 6 4 0 -3 -5 -5 -7 -9 -9 -8 -7 -8 -8 -7 -7 -7 -6 -6 -6 -7 -9 -9 -10 -11 -11 -11 -10 -10 -9 -7 -5 -3 -4 -5 -7 -9 -10 -11 -9 -8 -6 -4 -3 -4 -6 -5 0 6 16 27 40 51 60 68 75 82 81 77 66 52 39 27 17 10 6 2 -2 -6 -10 -12 -13 -14 -15 -16 -15 -16 -16 -17 -17 -17 -18 -18 -18 -17 -17 -16 -17 -17 -18 -19 -19 -20 -20 -21 -22 -23 -24 -25 -26 -26 -26 -26 -27 -26 -26 -26 -25 -24 -23 -22 -21 -19 -18 -16 -14 -11 -9 -8 -7 -5 -4 -4 -3 -2 -1 -1 -1 -1 -1 -2 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 4 5 7 10 14 16 17 15 14 13 12 11 8 5 1 0 0 -2 -4 -4 -3 -3 -2 -1 0 0 0 -1 -2 -3 -5 -5 -5 -6 -6 -5 -5 -5 -4 -2 0 1 2 1 0 -3 -5 -5 -5 -4 -2 0 0 -1 -1 1 7 14 26 39 53 63 73 81 87 90 87 80 65 51 38 26 18 12 8 3 -2 -6 -8 -9 -10 -11 -12 -12 -12 -14 -13 -12 -12 -13 -13 -14 -15 -16 -17 -16 -17 -18 -18 -17 -18 -20 -21 -22 -22 -24 -24 -24 -24 -24 -24 -23 -24 -24 -24 -23 -22 -21 -19 -16 -14 -13 -11 -9 -7 -5 -3 0 0 1 2 3 4 4 4 6 6 6 6 7 8 7 7 7 7 6 6 8 8 8 8 9 9 9 10 11 12 12 14 15 17 19 22 25 27 27 27 27 25 22 19 15 13 11 11 10 9 8 7 8 8 8 9 9 10 10 9 9 7 5 5 6 6 5 5 5 6 6 9 12 13 11 9 6 4 1 1 4 6 7 9 9 8 9 14 23 34 48 62 77 86 96 103 109 110 103 92 76 61 45 34 29 25 19 11 6 2 0 0 -1 -3 -5 -6 -6 -6 -7 -7 -7 -7 -8 -8 -8 -9 -10 -11 -11 -11 -12 -14 -15 -15 -16 -17 -17 -18 -19 -20 -21 -21 -22 -22 -21 -21 -20 -19 -18 -16 -15 -13 -11 -9 -7 -4 -1 1 2 4 5 6 7 8 9 9 9 9 9 9 9 8 9 10 10 11 12 12 11 11 11 11 10 11 11 12 13 14 15 15 15 17 20 24 28 29 30 29 28 28 27 24 20 16 14 13 12 11 10 9 8 9 9 9 9 10 11 11 10 9 8 7 7 6 6 6 6 7 7 8 10 12 13 11 8 5 3 1 0 2 5 6 6 5 4 6 12 22 35 50 62 77 88 97 103 108 110 104 94 78 62 45 34 29 26 21 14 9 5 3 1 0 -1 -2 -3 -4 -4 -5 -6 -6 -5 -6 -8 -8 -8 -8 -9 -10 -10 -12 -13 -14 -15 -15 -16 -17 -17 -19 -21 -22 -22 -23 -24 -24 -23 -24 -24 -22 -20 -19 -17 -14 -12 -10 -9 -7 -5 -4 -3 -1 1 3 4 5 7 7 7 8 8 8 7 7 8 7 7 7 7 5 5 5 5 5 5 6 7 7 7 7 8 9 10 11 13 16 18 20 21 20 20 19 18 15 12 9 7 6 4 3 2 2 2 2 3 2 1 2 3 4 3 3 2 1 0 0 -1 -1 -2 -2 -1 0 1 2 2 0 -3 -5 -8 -9 -9 -8 -6 -5 -6 -6 -5 -1 7 20 35 49 62 74 84 92 99 105 103 94 77 58 39 25 19 16 12 6 0 -3 -6 -9 -11 -12 -12 -14 -14 -14 -14 -15 -15 -16 -17 -17 -18 -17 -17 -18 -18 -19 -20 -22 -23 -23 -24 -26 -27 -28 -29 -30 -31 -30 -31 -31 -33 -33 -33 -32 -30 -30 -28 -27 -25 -22 -20 -18 -16 -13 -10 -8 -6 -4 -2 -2 -2 -1 0 -1 0 0 0 0 0 1 0 0 0 1 1 1 0 1 2 2 2 3 3 3 4 5 6 7 9 13 16 19 19 19 18 18 17 16 13 9 6 4 3 1 0 -2 -2 -2 -1 0 0 1 1 1 1 0 0 0 -2 -3 -3 -2 -3 -3 -4 -2 -1 0 1 1 0 -2 -5 -6 -9 -9 -7 -5 -3 -1 -1 0 2 8 18 32 46 59 71 83 94 101 107 106 98 83 65 49 35 27 23 21 15 7 2 0 0 -2 -4 -4 -6 -7 -8 -8 -9 -9 -9 -8 -9 -9 -10 -9 -10 -11 -11 -11 -12 -13 -14 -15 -16 -18 -18 -19 -20 -21 -22 -23 -24 -24 -24 -24 -24 -24 -23 -21 -19 -17 -16 -14 -11 -9 -7 -5 -2 -1 1 2 2 2 3 4 4 4 4 4 4 4 5 5 4 3 4 5 5 4 4 4 4 5 5 7 6 6 6 7 8 9 12 15 19 20 21 19 18 18 18 16 12 8 5 4 4 2 1 0 0 0 1 3 3 3 4 4 4 3 2 1 1 0 0 1 1 0 1 1 2 3 3 3 1 0 -1 -3 -5 -5 -3 -1 0 0 0 1 4 10 21 34 47 60 71 82 89 97 100 100 93 80 66 47 34 26 23 19 13 7 3 1 -1 -2 -3 -4 -6 -7 -6 -6 -6 -6 -6 -6 -7 -8 -9 -9 -9 -10 -10 -11 -12 -14 -15 -16 -17 -18 -19 -19 -21 -21 -22 -23 -24 -25 -25 -24 -23 -23 -21 -20 -19 -18 -16 -12 -10 -7 -5 -4 -3 -2 -1 0 1 1 2 2 2 1 1 1 0 0 1 1 0 0 1 1 1 1 2 3 4 3 3 3 3 4 5 7 7 8 11 13 15 16 16 16 15 14 12 10 7 4 3 2 0 0 0 1 0 0 0 1 1 2 3 3 1 0 0 -1 -2 -3 -2 -2 -1 -1 0 0 1 2 2 1 -1 -4 -6 -7 -7 -6 -5 -4 -4 -5 -3 0 5 14 27 42 56 67 79 87 96 101 105 101 87 71 53 39 29 24 22 16 10 5 2 1 0 -1 -2 -3 … ]}    {[n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    P    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    QRS    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    T    n/a    n/a    n/a    n/a    n/a    n/a    n/a    n/a    …    ]}

 testData = gather(tallTestSet);
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 2.9 sec
Evaluation completed in 3 sec

ネットワークの学習

trainNetwork コマンドを使用して LSTM ネットワークに学習させます。

if actionFlag == "Train networks"
     rawNet = trainNetwork(trainData(:,1),trainData(:,2),layers,options);
end

図の学習の精度と損失のサブプロットは、すべての反復回数間の学習の進行状況を追跡します。生の信号データを使用して、ネットワークは、P 波、QRS 群、T 波、またはラベル付けされていない領域 "n/a" に属するものとして、サンプルの約 77% を正しく分類します。

テスト データの分類

学習済み LSTM ネットワークと classify コマンドを使用してテスト データを分類します。学習オプションを一致させるためにミニバッチのサイズ 50 を指定します。

predTest = classify(rawNet,testData(:,1),'MiniBatchSize',50);

混同行列では、分類性能を可視化するための直感的で有益な方法を提供しています。confusionchart コマンドを使用して、テスト データ予測に対する全体の分類精度を計算します。各入力に対して、カテゴリカル ラベルの cell 配列を行ベクトルに変換します。行を正視化した表示を指定して、各クラスのサンプルの割合として結果を表示します。

confusionchart([testData{:,2}],[predTest{:}],'Normalization','row-normalized');

ネットワークへの入力として生の ECG 信号を使用すると、T 波のサンプルの約 60%、P 波のサンプルの 40%、QRS 群のサンプルの 60% のみが正しくなりました。パフォーマンスを向上させるには、深層学習のネットワークに入力する前に ECG 信号の特性の情報を適用します。たとえば、患者の呼吸の動きによって引き起こされる基線変動です。

フィルター処理方法の適用による基線変動と高周波ノイズの除去

3 つの心拍形態は、異なる周波数バンドを占めます。QRS 群のスペクトルには一般的に、10 ~ 25 Hz あたりの中心周波数があり、そのコンポーネントは 40 Hz 未満にあります。P 波と T 波は低周波でも起こります。P 波のコンポーネントは 20 Hz 未満で、T 波のコンポーネントは 10 Hz 未満です [5]。

基線変動は、患者の呼吸の動きによって引き起こされる低周波数 (< 0.5 Hz) の振動です。この発振は、心拍形態から独立していて、有効な情報を提供しません [6]。

[0.5, 40] Hz の通過帯域周波数幅を持つバンドパス フィルターを設計して、変動と高周波ノイズを削除します。これらのコンポーネントを削除すると、ネットワークが関係のない特徴を学習しないため LSTM 学習が向上します。tall データの cell 配列に対して cellfun を使用し、データセットを並列でフィルター処理します。

% Bandpass filter design
hFilt = designfilt('bandpassiir', 'StopbandFrequency1',0.4215,'PassbandFrequency1', 0.5, ...
    'PassbandFrequency2',40,'StopbandFrequency2',53.345,...
    'StopbandAttenuation1',60,'PassbandRipple',0.1,'StopbandAttenuation2',60,...
    'SampleRate',250,'DesignMethod','ellip');

% Create tall arrays from the transformed datastores and filter the signals
tallTrainSet = tall(trainDs);
tallTestSet = tall(testDs);

filteredTrainSignals = gather(cellfun(@(x)filter(hFilt,x),tallTrainSet(:,1),'UniformOutput',false));
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 11 sec
Evaluation completed in 11 sec
trainLabels = gather(tallTrainSet(:,2));
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 3.3 sec
Evaluation completed in 3.7 sec
filteredTestSignals = gather(cellfun(@(x)filter(hFilt,x),tallTestSet(:,1),'UniformOutput',false));
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 2.4 sec
Evaluation completed in 2.5 sec
testLabels = gather(tallTestSet(:,2));
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 1.9 sec
Evaluation completed in 2.1 sec

一般的なケースの生の信号とフィルター処理した信号をプロットします。

trainData = gather(tallTrainSet);
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 3.8 sec
Evaluation completed in 4.1 sec
figure
subplot(2,1,1)
plot(trainData{95,1}(2001:3000))
title('Raw')
grid
subplot(2,1,2)
plot(filteredTrainSignals{95}(2001:3000))
title('Filtered')
grid

医療機器での従来の ECG 測定に慣れている医師はフィルター処理された信号の基線に戸惑う可能性がありますが、ネットワークに対しては変動除去は大変有効です。

フィルター済み ECG 信号を使用したネットワークの学習

前と同様に、同じネットワークのアーキテクチャを使用してフィルター済み ECG 信号で LSTM ネットワークに学習させます。

if actionFlag == "Train networks"
    filteredNet = trainNetwork(filteredTrainSignals,trainLabels,layers,options);
end

信号の前処理は 80% 以上まで学習精度を向上させます。

フィルター処理された ECG 信号の分類

前処理済みテスト データを更新した LSTM ネットワークで分類します。

predFilteredTest = classify(filteredNet,filteredTestSignals,'MiniBatchSize',50);

混同行列として分類性能を可視化します。

figure
confusionchart([testLabels{:}],[predFilteredTest{:}],'Normalization','row-normalized');

シンプルな前処理で、T 波の分類が約 15%、QRS 群と P 波の分類が約 10% 向上します。

ECG 信号の時間-周波数の表現

時系列データの正常な分類に対する共通アプローチは、時間-周波数の特徴を抽出し、それらを元のデータの代わりにネットワークに供給することです。その後、ネットワークは、時間と周波数間で同時にパターンを学習します [7]。

フーリエ シンクロスクイーズド変換 (FSST) は、信号サンプルごとに周波数スペクトルを計算します。そのため、これは元の信号と同じ時間分解能を維持する必要があるこのセグメンテーション問題に最適です。関数 fsst を使用して、学習信号の 1 つの変換を検査します。適切な周波数分解能を与えるために、長さが 128 のカイザー ウィンドウを指定します。

data =  preview(trainDs);
figure
fsst(data{1,1},250,kaiser(128),'yaxis')

対象となる周波数範囲 [0.5, 40] Hz に対し、学習データセットの各信号の FSST を計算します。個別の機能として FSST の実数部と虚数部を取り扱い、ネットワークに両方のコンポーネントを供給します。さらに、平均を減算し、標準偏差で除算することで、学習用の特徴を標準化します。変換されたデータストア、補助関数 extractFSSTFeatures、および関数 tall を使用して、データを並列で処理します。

fsstTrainDs = transform(trainDs,@(x)extractFSSTFeatures(x,250));
fsstTallTrainSet = tall(fsstTrainDs);
fsstTrainData = gather(fsstTallTrainSet);
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: 0% complete
Evaluation 0% complete

- Pass 1 of 1: 4% complete
Evaluation 4% complete

- Pass 1 of 1: 8% complete
Evaluation 8% complete

- Pass 1 of 1: 12% complete
Evaluation 12% complete

- Pass 1 of 1: 17% complete
Evaluation 17% complete

- Pass 1 of 1: 21% complete
Evaluation 21% complete

- Pass 1 of 1: 25% complete
Evaluation 25% complete

- Pass 1 of 1: 29% complete
Evaluation 29% complete

- Pass 1 of 1: 33% complete
Evaluation 33% complete

- Pass 1 of 1: 38% complete
Evaluation 38% complete

- Pass 1 of 1: 42% complete
Evaluation 42% complete

- Pass 1 of 1: 46% complete
Evaluation 46% complete

- Pass 1 of 1: 50% complete
Evaluation 50% complete

- Pass 1 of 1: 54% complete
Evaluation 54% complete

- Pass 1 of 1: 58% complete
Evaluation 58% complete

- Pass 1 of 1: 62% complete
Evaluation 62% complete

- Pass 1 of 1: 67% complete
Evaluation 67% complete

- Pass 1 of 1: 71% complete
Evaluation 71% complete

- Pass 1 of 1: 75% complete
Evaluation 75% complete

- Pass 1 of 1: 79% complete
Evaluation 79% complete

- Pass 1 of 1: 83% complete
Evaluation 83% complete

- Pass 1 of 1: 88% complete
Evaluation 88% complete

- Pass 1 of 1: 92% complete
Evaluation 92% complete

- Pass 1 of 1: 96% complete
Evaluation 96% complete

- Pass 1 of 1: 100% complete
Evaluation 100% complete

- Pass 1 of 1: Completed in 2 min 39 sec
Evaluation 100% complete

Evaluation completed in 2 min 39 sec

テスト データに対してこの手順を繰り返します。

fsstTTestDs = transform(testDs,@(x)extractFSSTFeatures(x,250));
fsstTallTestSet = tall(fsstTTestDs);
fsstTestData = gather(fsstTallTestSet);
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 1 min 8 sec
Evaluation completed in 1 min 8 sec

ネットワーク アーキテクチャの調整

ネットワークが単一の値の代わりに各サンプルに周波数スペクトルを受け入れるように LSTM アーキテクチャを変更します。FSST のサイズを検査し、周波数の数値を確認します。

size(fsstTrainData{1,1})
ans = 1×2

          40        5000

入力の特徴を 40 として sequenceInputLayer に指定します。残りのネットワーク パラメーターは変更しないで保持します。

layers = [ ...
    sequenceInputLayer(40)
    lstmLayer(200,'OutputMode','sequence')
    fullyConnectedLayer(4)
    softmaxLayer
    classificationLayer];

ECG 信号の FSST を使用したネットワークの学習

変換されたデータセットを使用して更新された LSTM ネットワークに学習をさせます。

if actionFlag == "Train networks"
    fsstNet = trainNetwork(fsstTrainData(:,1),fsstTrainData(:,2),layers,options);
end

時間-周波数の特徴を使用すると学習精度が改善します。現在、90% を超えています。

FSST を使用したテスト データの分類

更新された LSTM ネットワークと抽出された FSST の特徴を使用して、テスト データを分類します。

predFsstTest = classify(fsstNet,fsstTestData(:,1),'MiniBatchSize',50);

混同行列として分類性能を可視化します。

confusionchart([fsstTestData{:,2}],[predFsstTest{:}],'Normalization','row-normalized');

時間-周波数表現を使用すると、生データの結果と比べて、T 波の分類が約 25%、P 波の分類が約 40%、および QRS 群の分類が 30% 向上します。

signalMask オブジェクトを使用して、ネットワーク予測を単一の ECG 信号のグラウンド トゥルース ラベルと比較します。関心領域をプロットするときは、"n/a" ラベルを無視します。

testData = gather(tall(testDs));
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 2.1 sec
Evaluation completed in 2.2 sec
Mtest = signalMask(testData{1,2}(3000:4000));
Mtest.SpecifySelectedCategories = true;
Mtest.SelectedCategories = find(Mtest.Categories ~= "n/a");

figure
subplot(2,1,1)
plotsigroi(Mtest,testData{1,1}(3000:4000))
title('Ground Truth')

Mpred = signalMask(predFsstTest{1}(3000:4000));
Mpred.SpecifySelectedCategories = true;
Mpred.SelectedCategories = find(Mpred.Categories ~= "n/a");

subplot(2,1,2)
plotsigroi(Mpred,testData{1,1}(3000:4000))
title('Predicted')

まとめ

この例は、信号の前処理と時間-周波数解析が LSTM 波形セグメンテーション性能を向上させることができる方法を説明しています。バンドパス フィルターとフーリエ ベースのシンクロスクイージングによって、すべての出力クラス間の平均が 55% から約 85% まで改善されます。

参考文献

[1] McSharry, Patrick E., et al. "A dynamical model for generating synthetic electrocardiogram signals." IEEE® Transactions on Biomedical Engineering.Vol. 50, No. 3, 2003, pp. 289–294.

[2] Laguna, Pablo, Raimon Jané, and Pere Caminal."Automatic detection of wave boundaries in multilead ECG signals: Validation with the CSE database." Computers and Biomedical Research.Vol. 27, No. 1, 1994, pp. 45–60.

[3] Goldberger, Ary L., Luis A. N. Amaral, Leon Glass, Jeffery M. Hausdorff, Plamen Ch. Ivanov, Roger G. Mark, Joseph E. Mietus, George B. Moody, Chung-Kang Peng, and H. Eugene Stanley. "PhysioBank, PhysioToolkit, and PhysioNet: Components of a New Research Resource for Complex Physiologic Signals." Circulation. Vol. 101, No. 23, 2000, pp. e215–e220. [Circulation Electronic Pages; http://circ.ahajournals.org/content/101/23/e215.full].

[4] Laguna, Pablo, Roger G. Mark, Ary L. Goldberger, and George B. Moody."A Database for Evaluation of Algorithms for Measurement of QT and Other Waveform Intervals in the ECG." Computers in Cardiology.Vol.24, 1997, pp. 673–676.

[5] Sörnmo, Leif, and Pablo Laguna."Electrocardiogram (ECG) signal processing."Wiley Encyclopedia of Biomedical Engineering, 2006.

[6] Kohler, B-U., Carsten Hennig, and Reinhold Orglmeister."The principles of software QRS detection."IEEE Engineering in Medicine and Biology Magazine. Vol. 21, No. 1, 2002, pp. 42–57.

[7] Salamon, Justin, and Juan Pablo Bello."Deep convolutional neural networks and data augmentation for environmental sound classification."IEEE Signal Processing Letters.Vol. 24, No. 3, 2017, pp. 279–283.

参考

関数

関連するトピック