├── workflow.jpg ├── Library ├── Library.pk ├── tgt_vacob.pk └── added_compounds.msp ├── LICENSE ├── AMDIS ├── read_amdis_elu.py ├── read_amdis_elu.ipynb └── plant essential oil.ELU ├── README.md ├── GCMSFormer ├── NetCDF.py ├── Alignment.py ├── Resolution.py ├── da.py └── GCMSformer.py ├── environment.yml └── test.ipynb /workflow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zxguocsu/GCMSFormer/HEAD/workflow.jpg -------------------------------------------------------------------------------- /Library/Library.pk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zxguocsu/GCMSFormer/HEAD/Library/Library.pk -------------------------------------------------------------------------------- /Library/tgt_vacob.pk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zxguocsu/GCMSFormer/HEAD/Library/tgt_vacob.pk -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024-2025 Central South University 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /AMDIS/read_amdis_elu.py: -------------------------------------------------------------------------------- 1 | import re 2 | import numpy as np 3 | 4 | def read_amdis_elu(elu_file_path): 5 | 6 | f = open(elu_file_path).read() 7 | 8 | a = f.split('\n') 9 | m = [] 10 | n = [] 11 | for i, l in enumerate(a): 12 | if l.startswith('NAME'): 13 | m.append(i) 14 | if l.startswith('NUM PEAKS'): 15 | n.append(i) 16 | 17 | name_lst = [] 18 | for name_number in m: 19 | name_lst.append(a[name_number]) 20 | peak_area = [] 21 | R2 = [] 22 | RT = [] 23 | for name_str in name_lst: 24 | nm0 = name_str.split('|') 25 | for nm1 in nm0: 26 | if nm1.startswith('XN'): 27 | peak_area.append(nm1) 28 | elif nm1.startswith('FG'): 29 | R2.append(nm1) 30 | elif nm1.startswith('RT'): 31 | RT.append(nm1) 32 | 33 | mss_dense = np.zeros((0, 1000), dtype=np.float32) 34 | for t in range(len(m)-1): 35 | ms = [] 36 | for j in range(n[t] + 1, m[t + 1] - 1): 37 | result = re.findall(r'\((.*?)\)', a[j]) 38 | for k in result: 39 | ms.append(k) 40 | mzs = [] 41 | ins = [] 42 | for p in ms: 43 | mz_in = p.split(',') 44 | mzs.append(int(float(mz_in[0]))) 45 | mz_in0 = mz_in[1].split(' ') 46 | ins.append(np.float32((mz_in0[0]))) 47 | 48 | ms_dense = np.zeros((1, 1000), dtype=np.float32) 49 | for i, mz in enumerate(mzs): 50 | ms_dense[0, mz - 1] = ins[i] 51 | mss_dense = np.vstack((mss_dense, ms_dense)) 52 | ms = [] 53 | for j in range(n[-1] + 1, len(a)): 54 | result = re.findall(r'\((.*?)\)', a[j]) 55 | for k in result: 56 | ms.append(k) 57 | mzs = [] 58 | ins = [] 59 | for p in ms: 60 | mz_in = p.split(',') 61 | mzs.append(int(float(mz_in[0]))) 62 | mz_in0 = mz_in[1].split(' ') 63 | ins.append(np.float32((mz_in0[0]))) 64 | 65 | ms_dense = np.zeros((1, 1000), dtype=np.float32) 66 | for i, mz in enumerate(mzs): 67 | ms_dense[0, mz - 1] = ins[i] 68 | mss_dense = np.vstack((mss_dense, ms_dense)) 69 | return RT, peak_area, R2, mss_dense 70 | 71 | if __name__ == '__main__': 72 | 73 | 74 | file_path = r'plant essential oil.ELU' 75 | RT, peak_area, R2, mss_dense = read_amdis_elu(file_path) 76 | 77 | com_num = input('Please input the number of compounds:') 78 | RT_num = re.sub(r'[A-Za-z]', '', RT[int(com_num)-1]) 79 | area_num = re.sub(r'[A-Za-z]', '', peak_area[int(com_num)-1]) 80 | R2_num = re.sub(r'[A-Za-z]', '', R2[int(com_num)-1]) 81 | print(f'The RT is:{RT_num}, the peak area is {area_num}, the R2 is {R2_num}') 82 | 83 | import matplotlib.pyplot as plt 84 | ms = mss_dense[int(com_num)-1] 85 | plt.vlines(np.arange(0,500), np.zeros((len(np.arange(0,500)),)), ms[0:500], linestyles='solid', linewidth=2) 86 | plt.ylim([0,1000]) 87 | plt.show() 88 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## GCMSFormer 2 | 3 | This is the code repo for GCMSFormer mehtod. We proposed the GCMSFormer for resolving the overlapped peaks in complex GC-MS data based on a Transformer model. The GCMSFormer model was trained, validated, and tested with 100,000 augmented simulated overlapped peaks in a ratio of 8:1:1, and its bilingual evaluation understudy (BLEU) on the test set was 0.9988. With the aid of the orthogonal projection resolution method (OPR), GCMSFormer can predict the pure mass spectra of all components in overlapped peaks (mass spectral matrix S), and then use the least squares method to find the concentration distribution matrix C. The automatic resolution of the overlapped peaks can be easily achieved. 4 | 5 | ![](https://github.com/zxguocsu/GCMSFormer/blob/master/workflow.jpg) 6 | 7 | ### Package required: 8 | We recommend to use [conda](https://conda.io/docs/user-guide/install/download.html). 9 | - [python3](https://www.python.org/) 10 | - [pytorch](https://pytorch.org/) 11 | 12 | By using the [`environment.yml`](https://github.com/zxguocsu/GCMSFormer/blob/master/environment.yml) file, it will install all the required packages. 13 | 14 | git clone https://github.com/zxguocsu/GCMSFormer.git 15 | cd GCMSFormer 16 | conda env create -f environment.yml 17 | conda activate GCMSFormer 18 | 19 | ## Data augmentation 20 | 21 | The overlapped peak dataset for training, validating and testing the GCMSFormer model is obtained using the [gen_datasets](https://github.com/zxguocsu/GCMSFormer/blob/master/GCMSFormer/da.py#L240) functions. 22 | 23 | TRAIN, VALID, TEST, tgt_vacob = gen_datasets(para) 24 | 25 | *Optionnal args* 26 | - para : Data augmentation parameters 27 | 28 | ## Model training 29 | Train the model based on your own training dataset with [train_model](https://github.com/zxguocsu/GCMSFormer/blob/master/GCMSFormer/GCMSformer.py#L410) function. 30 | 31 | model, Loss = train_model(para, TRAIN, VALID, tgt_vacob) 32 | 33 | *Optionnal args* 34 | - para : Hyperparameters for model training 35 | - TRAIN : Training set 36 | - VALID : Validation set 37 | - tgt_vacob : Library 38 | 39 | ## Resolution 40 | 41 | Automatic Resolution of GC-MS data files by using the [Resolution](https://github.com/zxguocsu/GCMSFormer/blob/master/GCMSFormer/Resolution.py#L51) function. 42 | 43 | Resolution(path, filename, model, tgt_vacob, device) 44 | 45 | *Optionnal args* 46 | - path : GC-MS data path 47 | - filename : GC-MS data filename 48 | - model : GCMSFormer model 49 | - tgt_vacob : Library 50 | - device : Data distribution devices (cuda/cpu) 51 | 52 | ## Clone the repository and run it directly 53 | [git clone](https://github.com/zxguocsu/GCMSFormer) 54 | 55 | An example has been provided in [test.ipynb](https://github.com/zxguocsu/GCMSFormer/blob/master/test.ipynb) 56 | script for the convenience of users. The GC-MS file used in it is available in the file [Essential Oil Data](https://github.com/zxguocsu/GCMSFormer/releases/tag/v1.0.0). 57 | 58 | ## Contact 59 | - zmzhang@csu.edu.cn 60 | - 222311020@csu.edu.cn 61 | -------------------------------------------------------------------------------- /Library/added_compounds.msp: -------------------------------------------------------------------------------- 1 | Name: Newly added compound 1 2 | DB#: 0 3 | RT: 0 4 | Num Peaks: 50 5 | 29.100000381469727 3025.0 6 | 37.099998474121094 1068.0 7 | 38.099998474121094 3642.0 8 | 39.04999923706055 22094.0 9 | 40.099998474121094 1820.0 10 | 41.099998474121094 5097.0 11 | 42.04999923706055 3738.0 12 | 43.04999923706055 116796.0 13 | 44.04999923706055 3927.0 14 | 45.54999923706055 4184.0 15 | 50.04999923706055 14214.0 16 | 51.04999923706055 39631.0 17 | 52.04999923706055 10191.0 18 | 53.04999923706055 3924.0 19 | 61.04999923706055 1577.0 20 | 62.04999923706055 6038.0 21 | 63.04999923706055 19688.0 22 | 64.0999984741211 6326.0 23 | 65.05000305175781 54995.0 24 | 66.05000305175781 3402.0 25 | 67.05000305175781 1043.0 26 | 74.0 3415.0 27 | 75.0 2462.0 28 | 76.05000305175781 3558.0 29 | 77.0 64050.0 30 | 78.05000305175781 19972.0 31 | 79.05000305175781 135200.0 32 | 80.05000305175781 14398.0 33 | 86.0 1255.0 34 | 88.1500015258789 1525.0 35 | 89.05000305175781 80041.0 36 | 90.05000305175781 195640.0 37 | 91.05000305175781 260100.0 38 | 92.05000305175781 20462.0 39 | 105.05000305175781 14855.0 40 | 106.1500015258789 2856.0 41 | 107.0999984741211 81564.0 42 | 108.0999984741211 454574.0 43 | 109.0999984741211 36334.0 44 | 110.05000305175781 2310.0 45 | 149.14999389648438 1883.0 46 | 150.0500030517578 177603.0 47 | 151.10000610351562 17921.0 48 | 152.0500030517578 1576.0 49 | 50 | Name: Newly added compound 2 51 | DB#: 0 52 | RT: 0 53 | Num Peaks: 70 54 | 29.100000381469727 22442.0 55 | 38.150001525878906 1599.0 56 | 39.04999923706055 33274.0 57 | 40.150001525878906 8151.0 58 | 41.099998474121094 98767.0 59 | 42.099998474121094 24684.0 60 | 43.04999923706055 58899.0 61 | 44.099998474121094 2319.0 62 | 50.04999923706055 1069.0 63 | 51.04999923706055 3736.0 64 | 52.099998474121094 2105.0 65 | 53.04999923706055 17033.0 66 | 54.150001525878906 7113.0 67 | 55.099998474121094 132463.0 68 | 56.099998474121094 75332.0 69 | 57.099998474121094 18855.0 70 | 58.099998474121094 6132.0 71 | 59.04999923706055 2084.0 72 | 65.05000305175781 4127.0 73 | 66.05000305175781 1673.0 74 | 67.05000305175781 20086.0 75 | 68.05000305175781 14066.0 76 | 69.05000305175781 193205.0 77 | 70.05000305175781 86358.0 78 | 71.05000305175781 13863.0 79 | 72.05000305175781 2116.0 80 | 77.0 5039.0 81 | 78.05000305175781 1088.0 82 | 79.05000305175781 11693.0 83 | 80.0999984741211 2566.0 84 | 81.05000305175781 18083.0 85 | 82.1500015258789 6351.0 86 | 83.05000305175781 81899.0 87 | 84.05000305175781 78369.0 88 | 85.05000305175781 8661.0 89 | 86.05000305175781 1685.0 90 | 91.05000305175781 3809.0 91 | 92.1500015258789 1031.0 92 | 93.05000305175781 17380.0 93 | 94.0999984741211 11257.0 94 | 95.0999984741211 71111.0 95 | 96.1500015258789 9062.0 96 | 97.05000305175781 108863.0 97 | 98.0999984741211 32738.0 98 | 99.0999984741211 3618.0 99 | 105.05000305175781 1450.0 100 | 107.0999984741211 4354.0 101 | 108.0999984741211 1154.0 102 | 109.0999984741211 6134.0 103 | 110.0999984741211 16530.0 104 | 111.0999984741211 81929.0 105 | 112.0999984741211 291754.0 106 | 113.0999984741211 24586.0 107 | 114.0999984741211 1614.0 108 | 121.0999984741211 19434.0 109 | 122.0999984741211 2103.0 110 | 123.0999984741211 2148.0 111 | 125.05000305175781 21172.0 112 | 126.0999984741211 2462.0 113 | 136.10000610351562 1801.0 114 | 138.14999389648438 1446.0 115 | 139.10000610351562 161118.0 116 | 140.10000610351562 17289.0 117 | 141.0500030517578 1226.0 118 | 153.14999389648438 1471.0 119 | 154.10000610351562 101982.0 120 | 155.10000610351562 14172.0 121 | 156.10000610351562 1124.0 122 | -------------------------------------------------------------------------------- /GCMSFormer/NetCDF.py: -------------------------------------------------------------------------------- 1 | 2 | from scipy.io import netcdf_file 3 | from scipy.sparse import coo_matrix 4 | from numpy import zeros, hstack, linspace 5 | import numpy as np 6 | from matplotlib.ticker import FormatStrFormatter 7 | from pylab import figure, show, plot 8 | import matplotlib.pyplot as plt 9 | from matplotlib.pyplot import MultipleLocator 10 | 11 | 12 | class netcdf_reader: 13 | def __init__(self, filename, bmmap=True): 14 | 15 | self.filename = filename 16 | self.f = netcdf_file(filename, 'r', mmap=bmmap) 17 | self.mass_values = self.f.variables['mass_values'] 18 | self.intensity_values = self.f.variables['intensity_values'] 19 | self.scan_index = self.f.variables['scan_index'] 20 | self.total_intensity = self.f.variables['total_intensity'] 21 | self.scan_acquisition_time = self.f.variables['scan_acquisition_time'] 22 | self.mass_max = np.max(self.f.variables['mass_range_max'].data) 23 | self.mass_min = np.max(self.f.variables['mass_range_min'].data) 24 | 25 | def mz(self, n): 26 | 27 | 28 | scan_index_end = hstack((self.scan_index.data, np.array([len(self.intensity_values.data)], dtype=int))) 29 | ms = {} 30 | inds = range(scan_index_end[n], scan_index_end[n + 1]) 31 | ms['mz'] = self.mass_values[inds] 32 | ms['intensity'] = self.intensity_values[inds] 33 | return ms 34 | 35 | def mz_rt(self, t): 36 | 37 | scan_index_end = hstack((self.scan_index.data, np.array([len(self.intensity_values.data)], dtype=int))) 38 | ms = {} 39 | tic = self.tic() 40 | rt = tic['rt'] 41 | n = np.searchsorted(rt, t) 42 | inds = range(scan_index_end[n], scan_index_end[n + 1]) 43 | ms['mz'] = self.mass_values[inds] 44 | ms['intensity'] = self.intensity_values[inds] 45 | return ms 46 | 47 | def rt(self, rt_start, rt_end): 48 | indmin, indmax = np.searchsorted(self.tic()['rt'], (rt_start, rt_end)) 49 | rt = self.tic()['rt'][indmin:indmax + 1] 50 | return rt 51 | 52 | def tic(self): 53 | nsize = len(self.total_intensity.data) 54 | tic = {} 55 | tic['rt'] = self.scan_acquisition_time.data / 60.0 56 | tic['intensity'] = self.total_intensity.data 57 | return tic 58 | 59 | def mat_rt(self, rt_start, rt_end): 60 | indmin, indmax = np.searchsorted(self.tic()['rt'], (rt_start, rt_end)) 61 | rt = self.tic()['rt'][indmin:indmax + 1] 62 | mass_max = np.max(self.f.variables['mass_range_max'].data) 63 | mass_min = np.max(self.f.variables['mass_range_min'].data) 64 | mz = np.linspace(mass_min, mass_max, num=int(mass_max - mass_min + 1)) 65 | return self.mat(indmin, indmax) 66 | 67 | def mat(self, imin, imax): 68 | f = netcdf_file(self.filename, 'r', mmap=False) 69 | mass_values = f.variables['mass_values'] 70 | intensity_values = f.variables['intensity_values'] 71 | scan_index = f.variables['scan_index'] 72 | scan_index_end = np.hstack((scan_index.data, np.array([len(intensity_values.data)], dtype=int))) 73 | mass_max = np.max(f.variables['mass_range_max'].data) 74 | mass_min = np.max(f.variables['mass_range_min'].data) 75 | rg = np.linspace(mass_min - 0.5, mass_max + 0.5, num=int(mass_max - mass_min + 2)) 76 | c = int(imax - imin + 1) 77 | r = int(mass_max - mass_min + 1) 78 | z = int(np.ceil(1 / np.min(abs(np.diff(mass_values.data))))) 79 | mo = np.zeros((r, c, z)) 80 | for j in range(imin, imax + 1): 81 | mz = mass_values[scan_index_end[j]:scan_index_end[j + 1]] 82 | ms = intensity_values[scan_index_end[j]:scan_index_end[j + 1]] 83 | inds = np.searchsorted(mz, rg) 84 | for i in range(0, r): 85 | mo[i, j - imin, 0:(inds[i + 1] - inds[i])] = ms[inds[i]:inds[i + 1]] 86 | return np.sum(mo, 2) 87 | 88 | 89 | def plot_ms(ms): 90 | fig = figure() 91 | ax = fig.add_subplot(111) 92 | ax.vlines(ms['mz'], zeros((len(ms['mz']),)), ms['intensity'], color='k', linestyles='solid') 93 | ax.xaxis.set_major_formatter(FormatStrFormatter('%3.0f')) 94 | show() 95 | 96 | 97 | def plot_tic(tic): 98 | fig = plt.figure(figsize=(10, 6)) 99 | ax = fig.add_subplot(111) 100 | ax.plot(tic['rt'], tic['intensity']) 101 | ax.get_yaxis().get_major_formatter().set_scientific(False) 102 | y_major_locator = MultipleLocator(300000) 103 | ax.yaxis.set_major_locator(y_major_locator) 104 | ax.set_xlabel('Retention Time', fontsize=12) 105 | ax.set_ylabel('Intensity', fontsize=12) 106 | ax.set_title('TIC', fontsize=12) 107 | plt.show() 108 | -------------------------------------------------------------------------------- /GCMSFormer/Alignment.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import seaborn 3 | seaborn.set_context(context="talk") 4 | from sklearn.metrics.pairwise import cosine_similarity 5 | import pandas as pd 6 | from .Resolution import Resolution, output_msp 7 | import warnings 8 | warnings.filterwarnings("ignore") 9 | 10 | def Alignment(path, files, model, tgt_vocab, device): 11 | 12 | global a 13 | T = [] 14 | S = [] 15 | A = [] 16 | R = [] 17 | N = [] 18 | 19 | for filename in files: 20 | 21 | sta_S, area, rt, R2 = Resolution(path, filename, model, tgt_vocab, device) 22 | 23 | msp = filename.split('.CDF')[0] + '.MSP' 24 | output_msp(path + '/' + msp, sta_S, rt) 25 | 26 | T.append(rt) 27 | S.append(sta_S) 28 | A.append(area) 29 | R.append(R2) 30 | N.append((np.vstack((np.array(rt),np.array(area),np.array(R2)))).T) 31 | T_list = np.array(T[0]) 32 | S_list = np.array(S[0]) 33 | A_list = np.array(A[0]) 34 | R_list = np.array(R[0]) 35 | 36 | for i in range(1, len(S)): 37 | S_list = np.vstack((S_list, np.array(S[i]))) 38 | T_list = np.hstack((T_list, np.array(T[i]))) 39 | A_list = np.hstack((A_list, np.array(A[i]))) 40 | R_list = np.hstack((R_list, np.array(R[i]))) 41 | 42 | index_list = np.argsort(T_list) 43 | index_rt = np.sort(T_list) 44 | 45 | l = [index_list[0]] 46 | ls_ind = [] 47 | for i in range(1, len(index_rt)): 48 | 49 | 50 | if index_rt[i]-index_rt[i-1] <= 0.1: 51 | l.append(index_list[i]) 52 | else: 53 | ls_ind.append(l) 54 | l = [index_list[i]] 55 | if i == len(index_rt)-1: 56 | ls_ind.append(l) 57 | 58 | l = [index_rt[0]] 59 | ls_rt = [] 60 | for i in range(1, len(index_rt)): 61 | if index_rt[i]-index_rt[i-1] <= 0.1: 62 | l.append(index_rt[i]) 63 | else: 64 | ls_rt.append(l) 65 | l = [index_rt[i]] 66 | if i == len(index_rt)-1: 67 | ls_rt.append(l) 68 | 69 | lst_ind = [] 70 | lst_rt = [] 71 | 72 | tr0 = [] 73 | tr1 = [] 74 | tr2 = [] 75 | tr3 = [] 76 | 77 | for i in range(len(ls_ind)): 78 | while len(ls_ind[i]) > 0: 79 | if len(ls_ind[i]) == 1: 80 | tr0.append(ls_ind[i]) 81 | tr1.append(ls_rt[i]) 82 | tr2.append(ls_ind[i]) 83 | tr3.append(ls_rt[i][0]) 84 | ls_ind[i] = [] 85 | ls_rt[i] = [] 86 | if len(ls_ind[i]) > 1: 87 | 88 | a = ls_ind[i][ls_rt[i].index(min(ls_rt[i]))] 89 | 90 | for j in range(len(ls_ind[i])): 91 | cs = cosine_similarity(S_list[a].reshape((1, 1000)), S_list[ls_ind[i][j]].reshape((1, 1000))) 92 | 93 | if cs >= 0.95: 94 | lst_ind.append(ls_ind[i][j]) 95 | lst_rt.append(ls_rt[i][j]) 96 | 97 | for m in lst_ind: 98 | if m in ls_ind[i]: 99 | ls_ind[i].remove(m) 100 | for m in lst_rt: 101 | if m in ls_rt[i]: 102 | ls_rt[i].remove(m) 103 | if len(lst_ind)<=len(files): 104 | tr0.append(lst_ind) 105 | tr1.append(lst_rt) 106 | tr2.append(sorted(lst_ind, reverse=True)) 107 | tr3.append(round(sum(lst_rt)/len(lst_rt),2).astype(np.float32)) 108 | 109 | else: 110 | while len(lst_ind) > 0: 111 | if len(lst_ind) == 1: 112 | tr0.append(lst_ind) 113 | tr1.append(lst_rt) 114 | tr2.append(lst_ind) 115 | tr3.append(lst_rt[0]) 116 | lst_ind = [] 117 | lst_rt = [] 118 | if len(lst_ind) > 1: 119 | lst1=[] 120 | lst2=[] 121 | b = lst_ind[lst_rt.index(min(lst_rt))] 122 | for j in range(len(lst_ind)): 123 | cs = cosine_similarity(S_list[b].reshape((1, 1000)), S_list[lst_ind[j]].reshape((1, 1000))) 124 | if cs >= 0.98: 125 | lst1.append(lst_ind[j]) 126 | lst2.append(lst_rt[j]) 127 | tr0.append(lst1) 128 | tr1.append(lst2) 129 | tr2.append(sorted(lst1, reverse=True)) 130 | tr3.append(round(sum(lst2)/len(lst2),2).astype(np.float32)) 131 | for m in lst1: 132 | if m in lst_ind: 133 | lst_ind.remove(m) 134 | for m in lst2: 135 | if m in lst_rt: 136 | lst_rt.remove(m) 137 | 138 | lst_ind = [] 139 | lst_rt = [] 140 | 141 | area = [] 142 | areas = [] 143 | for i in range(len(tr0)): 144 | for j in range(len(tr0[i])): 145 | area.append(A_list[tr0[i][j]]) 146 | areas.append(area) 147 | area = [] 148 | 149 | rr = [] 150 | rrs = [] 151 | for i in range(len(tr0)): 152 | for j in range(len(tr0[i])): 153 | rr.append(R_list[tr0[i][j]]) 154 | rrs.append(rr) 155 | rr=[] 156 | areas0 = [] 157 | trs0 = [] 158 | trs1 = [] 159 | rrs0 = [] 160 | 161 | for i in range(len(areas)): 162 | if len(areas[i]) >= 5: 163 | areas0.append(areas[i]) 164 | rrs0.append(rrs[i]) 165 | trs0.append(tr3[i]) 166 | trs1.append(tr0[i]) 167 | 168 | X=np.zeros((len(trs1),len(T)), dtype=int) 169 | Y=np.zeros((len(trs1),len(T)), dtype=float) 170 | for i in range(len(trs1)): 171 | for j in range(len(trs1[i])): 172 | for t in range(len(T)): 173 | b = len(T[t]) 174 | if t == 0: 175 | a = 0 176 | if a <= trs1[i][j] < a+b: 177 | X[i,t] = areas0[i][j] 178 | Y[i,t] = rrs0[i][j] 179 | a = a+b 180 | V=np.hstack((X,Y)) 181 | 182 | files0=[] 183 | files1=[] 184 | for i in range(len(files)): 185 | files0.append(files[i]+'-'+'area') 186 | files1.append(files[i]+'-'+'R2') 187 | files=files0+files1 188 | max_m = [] 189 | for i in range(len(trs1)): 190 | max_m.append(np.argmax(S_list[trs1[i][0]])+1) 191 | 192 | df = pd.DataFrame({'rt': trs0, 'max.m/z': max_m}) 193 | for i in range(V.shape[-1]): 194 | df.insert(loc=len(df.columns), column=files[i], value=V[:,i]) 195 | return df, N 196 | -------------------------------------------------------------------------------- /environment.yml: -------------------------------------------------------------------------------- 1 | name: GCMSFormer 2 | channels: 3 | - pytorch 4 | - defaults 5 | dependencies: 6 | - attrs=22.1.0=py39haa95532_0 7 | - babel=2.11.0=py39haa95532_0 8 | - backcall=0.2.0=pyhd3eb1b0_0 9 | - blas=1.0=mkl 10 | - bottleneck=1.3.5=py39h080aedc_0 11 | - brotli=1.0.9=h2bbff1b_7 12 | - brotli-bin=1.0.9=h2bbff1b_7 13 | - brotlipy=0.7.0=py39h2bbff1b_1003 14 | - ca-certificates=2023.01.10=haa95532_0 15 | - certifi=2022.12.7=py39haa95532_0 16 | - cffi=1.15.1=py39h2bbff1b_0 17 | - charset-normalizer=2.0.4=pyhd3eb1b0_0 18 | - colorama=0.4.6=py39haa95532_0 19 | - comm=0.1.2=py39haa95532_0 20 | - contourpy=1.0.5=py39h59b6b97_0 21 | - cryptography=37.0.1=py39h21b164f_0 22 | - cudatoolkit=11.3.1=h59b6b97_2 23 | - cycler=0.11.0=pyhd3eb1b0_0 24 | - decorator=5.1.1=pyhd3eb1b0_0 25 | - defusedxml=0.7.1=pyhd3eb1b0_0 26 | - entrypoints=0.4=py39haa95532_0 27 | - fonttools=4.25.0=pyhd3eb1b0_0 28 | - freetype=2.10.4=hd328e21_0 29 | - glib=2.69.1=h5dc1a3c_1 30 | - gst-plugins-base=1.18.5=h9e645db_0 31 | - gstreamer=1.18.5=hd78058f_0 32 | - icu=58.2=ha925a31_3 33 | - importlib_metadata=6.0.0=hd3eb1b0_0 34 | - importlib_resources=5.2.0=pyhd3eb1b0_1 35 | - intel-openmp=2021.4.0=haa95532_3556 36 | - ipython_genutils=0.2.0=pyhd3eb1b0_1 37 | - jedi=0.18.1=py39haa95532_1 38 | - jinja2=3.1.2=py39haa95532_0 39 | - jpeg=9e=h2bbff1b_0 40 | - json5=0.9.6=pyhd3eb1b0_0 41 | - jupyter=1.0.0=py39haa95532_8 42 | - jupyter_client=8.1.0=py39haa95532_0 43 | - jupyter_console=6.6.3=py39haa95532_0 44 | - jupyter_core=5.3.0=py39haa95532_0 45 | - jupyter_server=1.23.4=py39haa95532_0 46 | - jupyterlab=3.5.3=py39haa95532_0 47 | - jupyterlab_pygments=0.1.2=py_0 48 | - jupyterlab_server=2.22.0=py39haa95532_0 49 | - jupyterlab_widgets=3.0.5=py39haa95532_0 50 | - kiwisolver=1.4.2=py39hd77b12b_0 51 | - lerc=3.0=hd77b12b_0 52 | - libbrotlicommon=1.0.9=h2bbff1b_7 53 | - libbrotlidec=1.0.9=h2bbff1b_7 54 | - libbrotlienc=1.0.9=h2bbff1b_7 55 | - libdeflate=1.8=h2bbff1b_5 56 | - libffi=3.4.2=hd77b12b_4 57 | - libiconv=1.16=h2bbff1b_2 58 | - libogg=1.3.5=h2bbff1b_1 59 | - libpng=1.6.37=h2a8f88b_0 60 | - libsodium=1.0.18=h62dcd97_0 61 | - libtiff=4.4.0=h8a3f274_0 62 | - libuv=1.40.0=he774522_0 63 | - libvorbis=1.3.7=he774522_0 64 | - libwebp=1.2.2=h2bbff1b_0 65 | - libxml2=2.9.14=h0ad7f3c_0 66 | - libxslt=1.1.35=h2bbff1b_0 67 | - lxml=4.9.1=py39h1985fb9_0 68 | - lz4-c=1.9.3=h2bbff1b_1 69 | - markupsafe=2.1.1=py39h2bbff1b_0 70 | - matplotlib-base=3.7.1=py39hf11a4ad_1 71 | - matplotlib-inline=0.1.6=py39haa95532_0 72 | - mkl=2021.4.0=haa95532_640 73 | - mkl-service=2.4.0=py39h2bbff1b_0 74 | - mkl_fft=1.3.1=py39h277e83a_0 75 | - mkl_random=1.2.2=py39hf11a4ad_0 76 | - munkres=1.1.4=py_0 77 | - nbformat=5.7.0=py39haa95532_0 78 | - nest-asyncio=1.5.6=py39haa95532_0 79 | - notebook-shim=0.2.2=py39haa95532_0 80 | - numexpr=2.8.3=py39hb80d3ca_0 81 | - numpy=1.23.5=py39h3b20f71_0 82 | - numpy-base=1.23.5=py39h4da318b_0 83 | - openssl=1.1.1t=h2bbff1b_0 84 | - packaging=21.3=pyhd3eb1b0_0 85 | - pandocfilters=1.5.0=pyhd3eb1b0_0 86 | - parso=0.8.3=pyhd3eb1b0_0 87 | - pcre=8.45=hd77b12b_0 88 | - pickleshare=0.7.5=pyhd3eb1b0_1003 89 | - pillow=9.2.0=py39hdc2b20a_1 90 | - pip=22.1.2=py39haa95532_0 91 | - ply=3.11=py39haa95532_0 92 | - prometheus_client=0.14.1=py39haa95532_0 93 | - prompt_toolkit=3.0.36=hd3eb1b0_0 94 | - pure_eval=0.2.2=pyhd3eb1b0_0 95 | - pycparser=2.21=pyhd3eb1b0_0 96 | - pyopenssl=22.0.0=pyhd3eb1b0_0 97 | - pyparsing=3.0.9=py39haa95532_0 98 | - pyqt=5.15.7=py39hd77b12b_0 99 | - pyqt5-sip=12.11.0=py39hd77b12b_0 100 | - pysocks=1.7.1=py39haa95532_0 101 | - python=3.9.13=h6244533_1 102 | - python-dateutil=2.8.2=pyhd3eb1b0_0 103 | - python-fastjsonschema=2.16.2=py39haa95532_0 104 | - pytorch=1.12.1=py3.9_cuda11.3_cudnn8_0 105 | - pytorch-mutex=1.0=cuda 106 | - pytz=2022.1=py39haa95532_0 107 | - qt-main=5.15.2=he8e5bd7_7 108 | - qt-webengine=5.15.9=hb9a9bb5_4 109 | - qtwebkit=5.212=h3ad3cdb_4 110 | - send2trash=1.8.0=pyhd3eb1b0_1 111 | - setuptools=63.4.1=py39haa95532_0 112 | - sip=6.6.2=py39hd77b12b_0 113 | - six=1.16.0=pyhd3eb1b0_1 114 | - sqlite=3.39.2=h2bbff1b_0 115 | - stack_data=0.2.0=pyhd3eb1b0_0 116 | - tinycss2=1.2.1=py39haa95532_0 117 | - tk=8.6.12=h2bbff1b_0 118 | - toml=0.10.2=pyhd3eb1b0_0 119 | - tomli=2.0.1=py39haa95532_0 120 | - torchaudio=0.12.1=py39_cu113 121 | - torchvision=0.13.1=py39_cu113 122 | - tornado=6.2=py39h2bbff1b_0 123 | - typing_extensions=4.3.0=py39haa95532_0 124 | - tzdata=2022a=hda174b7_0 125 | - urllib3=1.26.11=py39haa95532_0 126 | - vc=14.2=h21ff451_1 127 | - vs2015_runtime=14.27.29016=h5e58377_2 128 | - wheel=0.37.1=pyhd3eb1b0_0 129 | - win_inet_pton=1.1.0=py39haa95532_0 130 | - wincertstore=0.2=py39haa95532_2 131 | - winpty=0.4.3=4 132 | - xz=5.2.5=h8cc25b3_1 133 | - zeromq=4.3.4=hd77b12b_0 134 | - zlib=1.2.12=h8cc25b3_2 135 | - zstd=1.5.2=h19a0ad4_0 136 | - pip: 137 | - absl-py==1.4.0 138 | - alembic==1.11.1 139 | - anyio==3.6.2 140 | - appdirs==1.4.4 141 | - argon2-cffi==21.3.0 142 | - argon2-cffi-bindings==21.2.0 143 | - asttokens==2.1.0 144 | - audioread==3.0.0 145 | - bayesian-optimization==1.4.3 146 | - beautifulsoup4==4.11.1 147 | - bleach==5.0.1 148 | - bottle==0.12.25 149 | - cachetools==5.3.0 150 | - chardet==4.0.0 151 | - click==8.1.4 152 | - clr-loader==0.2.5 153 | - cmaes==0.9.1 154 | - colorlog==6.7.0 155 | - comtypes==1.2.0 156 | - d2l==0.17.5 157 | - debugpy==1.6.3 158 | - deprecated==1.2.14 159 | - docker-pycreds==0.4.0 160 | - executing==1.2.0 161 | - flatbuffers==23.3.3 162 | - gitdb==4.0.10 163 | - gitpython==3.1.31 164 | - google-auth==2.16.2 165 | - google-auth-oauthlib==0.4.6 166 | - greenlet==2.0.2 167 | - grpcio==1.51.3 168 | - idna==2.10 169 | - importlib-metadata==5.0.0 170 | - ipykernel==6.17.1 171 | - ipython==8.6.0 172 | - ipywidgets==8.0.2 173 | - joblib==1.2.0 174 | - jsonschema==4.17.0 175 | - jupyter-client==7.4.5 176 | - jupyter-console==6.4.4 177 | - jupyter-core==5.0.0 178 | - jupyter-server==1.23.1 179 | - jupyterlab-pygments==0.2.2 180 | - jupyterlab-widgets==3.0.3 181 | - lazy-loader==0.2 182 | - libclang==16.0.0 183 | - librosa==0.10.0.post2 184 | - llvmlite==0.40.0 185 | - mako==1.2.4 186 | - markdown==3.4.1 187 | - matchms==0.21.1 188 | - matplotlib==3.5.1 189 | - mistune==2.0.4 190 | - msgpack==1.0.5 191 | - nbclassic==0.4.8 192 | - nbclient==0.7.0 193 | - nbconvert==7.2.4 194 | - networkx==3.1 195 | - notebook==6.5.2 196 | - numba==0.57.0 197 | - oauthlib==3.2.2 198 | - optuna==3.2.0 199 | - optuna-dashboard==0.10.3 200 | - pandas==1.2.4 201 | - pathtools==0.1.2 202 | - pickydict==0.4.0 203 | - pip-autoremove==0.10.0 204 | - platformdirs==2.5.3 205 | - plotly==5.15.0 206 | - pooch==1.6.0 207 | - prometheus-client==0.15.0 208 | - prompt-toolkit==3.0.32 209 | - protobuf==4.22.1 210 | - psutil==5.9.4 211 | - pyaml==23.5.9 212 | - pyasn1==0.4.8 213 | - pyasn1-modules==0.2.8 214 | - pygments==2.13.0 215 | - pymsfilereader==1.0.1 216 | - pymzml==2.5.2 217 | - pyrsistent==0.19.2 218 | - pyteomics==4.6 219 | - pythonnet==3.0.1 220 | - pywin32==305 221 | - pywinpty==2.0.9 222 | - pyzmq==24.0.1 223 | - qtconsole==5.4.0 224 | - qtpy==2.3.0 225 | - rawquant==0.2.3 226 | - rdkit==2023.3.2 227 | - regex==2023.6.3 228 | - requests==2.25.1 229 | - requests-oauthlib==1.3.1 230 | - rsa==4.9 231 | - scikit-learn==1.2.2 232 | - scikit-optimize==0.9.0 233 | - scipy==1.10.1 234 | - seaborn==0.12.2 235 | - sentry-sdk==1.27.1 236 | - setproctitle==1.3.2 237 | - smmap==5.0.0 238 | - sniffio==1.3.0 239 | - soundfile==0.12.1 240 | - soupsieve==2.3.2.post1 241 | - soxr==0.3.5 242 | - sparsestack==0.4.1 243 | - sqlalchemy==2.0.17 244 | - stack-data==0.6.0 245 | - tenacity==8.2.2 246 | - tensorboard==2.12.0 247 | - tensorboard-data-server==0.7.0 248 | - tensorboard-plugin-wit==1.8.1 249 | - tensorflow-estimator==2.12.0 250 | - tensorflow-io-gcs-filesystem==0.31.0 251 | - termcolor==2.2.0 252 | - terminado==0.17.0 253 | - threadpoolctl==3.1.0 254 | - tqdm==4.65.0 255 | - traitlets==5.5.0 256 | - wandb==0.15.5 257 | - wcwidth==0.2.6 258 | - webencodings==0.5.1 259 | - websocket-client==1.4.2 260 | - werkzeug==2.2.3 261 | - widgetsnbextension==4.0.3 262 | - wrapt==1.14.1 263 | - zipp==3.10.0 264 | prefix: D:\Anaconda3\envs\GCMSFormer 265 | -------------------------------------------------------------------------------- /GCMSFormer/Resolution.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import torch 3 | import seaborn 4 | seaborn.set_context(context="talk") 5 | 6 | from tqdm import tqdm 7 | from sklearn.metrics import explained_variance_score 8 | from .NetCDF import netcdf_reader 9 | from .GCMSformer import predict 10 | 11 | import warnings 12 | warnings.filterwarnings("ignore") 13 | 14 | def back_remove(xx, point, range_point): 15 | 16 | xn = list(np.sum(xx, 1)) 17 | n1 = xn.index(min(xn[0: range_point - point])) 18 | n3 = xn.index(min(xn[xx.shape[0] - range_point + point: xx.shape[0]])) 19 | 20 | if n1 < range_point - point / 2: 21 | n2 = n1 + 3 22 | else: 23 | n2 = n1 - 3 24 | if n3 < xx.shape[0] - range_point - point / 2: 25 | n4 = n3 + 3 26 | else: 27 | n4 = n3 - 3 28 | 29 | Ns = [[min(n1, n2), max(n1, n2)], [min(n3, n4), max(n3, n4)]] 30 | bak = np.zeros(xx.shape) 31 | for i in range(0, xx.shape[1]): 32 | tiab = [] 33 | reg = [] 34 | 35 | for j in range(0, len(Ns)): 36 | 37 | tt = range(Ns[j][0], Ns[j][1]) 38 | tiab.extend(xx[tt, i]) 39 | reg.extend(np.arange(Ns[j][0], Ns[j][1])) 40 | 41 | tm = tiab - np.mean(tiab) 42 | rm = reg - np.mean(reg) 43 | b = np.dot(np.dot(float(1) / np.dot(rm.T, rm), rm.T), tm) 44 | s = np.mean(tiab) - np.dot(np.mean(reg), b) 45 | b_est = s + b * np.arange(xx.shape[0]) 46 | bak[:, i] = xx[:, i] - b_est 47 | 48 | bias = xx - bak 49 | return bak, bias 50 | 51 | def Resolution(path, filename, model, tgt_vocab, device): 52 | ncr = netcdf_reader(path + '/' + filename, True) 53 | m = np.array(ncr.mat(0, len(ncr.tic()['rt']) - 1).T, dtype='float32') 54 | ms = np.array(ncr.mz_rt(10)['mz'], dtype='int') 55 | mz_range = (1, 1000) 56 | mz_min, mz_max = mz_range 57 | mz_dense = np.linspace(int(mz_min), int(mz_max), int(mz_max - mz_min) + 1, dtype=np.float32) 58 | 59 | X = np.zeros((m.shape[0], mz_max), dtype=np.float32) 60 | for i in range(m.shape[0]): 61 | itensity_dense = np.zeros_like(mz_dense) 62 | itensity_dense[ms - mz_min] = m[i] 63 | 64 | X[i] = itensity_dense 65 | X[i][X[i] < 0] = 0 66 | 67 | num = len(X) // 500 68 | io = np.empty(0, dtype='int32') 69 | 70 | for i in range(num): 71 | X0 = X[500 * i:500 * (i + 1)] 72 | ind = np.arange(500 * i, 500 * (i + 1), 1, dtype='int32') 73 | xX, bias = back_remove(X0, 4, 10) 74 | xX[xX < 0] = 0 75 | noise = np.mean(np.sort(np.sum(xX, 1))[0:300]) 76 | ind_0 = np.argwhere(np.sum(xX, 1) >= 3.0 * noise)[:, 0] 77 | io = np.hstack((io, ind[ind_0])) 78 | 79 | l = [] 80 | ls = [] 81 | for x in io: 82 | l.append(x) 83 | if x + 1 not in io: 84 | if len(l) >= 7: 85 | ls.append(l) 86 | l = [] 87 | ls[0] = list(range(ls[0][0] - 5, ls[0][-1] + 1)) 88 | ls[-1] = list(range(ls[-1][0], ls[-1][-1] + 6)) 89 | for i in range(len(ls) - 1): 90 | if ls[i + 1][0] - ls[i][-1] >= 8: 91 | ls[i] = list(range(ls[i][0], ls[i][-1] + 6)) 92 | ls[i + 1] = list(range(ls[i + 1][0] - 5, ls[i + 1][-1] + 1)) 93 | 94 | sta_S0 = np.empty((0, 1000), dtype='float32') 95 | sta_C_list = [] 96 | re_X_list = [] 97 | sta_S_list = [] 98 | R2s = [] 99 | rts = [] 100 | area = [] 101 | RT_ind = [] 102 | r_2_1 = [] 103 | pred_tgt_ind_list = [] 104 | for j in tqdm(range(len(ls)), desc=filename): 105 | m = np.array(ncr.mat(ls[j][0], ls[j][-1]).T, dtype='float32') 106 | if len(ls[j]) < 20 and np.sum(m, 1)[0] >= 1.02 * np.sum(m, 1)[-1]: 107 | m0 = np.array(ncr.mat(ls[j][0] - 4, ls[j][-1] + 1).T, dtype='float32') 108 | t0 = np.arange(ls[j][0] - 4, ls[j][-1] + 2) 109 | else: 110 | m0 = np.array(ncr.mat(ls[j][0] + 1, ls[j][-1]).T, dtype='float32') 111 | t0 = np.arange(ls[j][0] + 1 , ls[j][-1] + 1) 112 | def converts(m): 113 | X = np.zeros((m.shape[0], mz_max), dtype=np.float32) 114 | for i in range(m.shape[0]): 115 | itensity_dense = np.zeros_like(mz_dense) 116 | itensity_dense[ms - mz_min] = m[i] 117 | X[i] = itensity_dense 118 | X[i][X[i] < 0] = 0 119 | xX, bias = back_remove(X, 4, 10) 120 | xX[xX < 0] = 0 121 | X = xX / np.max(xX) 122 | return X, xX 123 | X0, xX0 = converts(m0) 124 | new_num = [] 125 | u, s0, v = np.linalg.svd(X0) 126 | for i in range(len(s0) - 1): 127 | if s0[i] > 0.5: 128 | new_num.append(s0[i]) 129 | else: 130 | if s0[i] - s0[i + 1] > 0.15: 131 | new_num.append(s0[i]) 132 | else: 133 | if s0[i] - s0[i + 1] > 0.08 and s0[i] > 0.15: 134 | new_num.append(s0[i]) 135 | 136 | rt = ncr.tic()['rt'] 137 | X0 = torch.from_numpy(X0).float() 138 | pred_tgt_ind = predict(model, X0, tgt_vocab, device, d_model=1000, max_len=7) 139 | pred_tgt_ind = sorted(set(pred_tgt_ind.tolist()), key=pred_tgt_ind.tolist().index) 140 | 141 | if len(pred_tgt_ind) > len(new_num): 142 | m0 = np.array(ncr.mat(ls[j][0] + 4, ls[j][-1]).T, dtype='float32') 143 | t0 = np.arange(ls[j][0] + 4, ls[j][-1] + 1) 144 | X0, xX0 = converts(m0) 145 | X0 = torch.from_numpy(X0).float() 146 | pred_tgt_ind = predict(model, X0, tgt_vocab, device, d_model=1000, max_len=7) 147 | pred_tgt_ind = sorted(set(pred_tgt_ind.tolist()), key=pred_tgt_ind.tolist().index) 148 | 149 | if len(pred_tgt_ind) == len(new_num): 150 | m0 = np.array(ncr.mat(ls[j][0] - 2, ls[j][-1] + 1).T, dtype='float32') 151 | t0 = np.arange(ls[j][0] - 2, ls[j][-1] + 2) 152 | X0, xX0 = converts(m0) 153 | X0 = torch.from_numpy(X0).float() 154 | 155 | elif len(pred_tgt_ind) < len(new_num) and new_num[-1] > 0.2: 156 | m1 = m0[2:-2] 157 | t1 = t0[2:-2] 158 | X1, xX1 = converts(m1) 159 | new_num1 = [] 160 | u, s0, v = np.linalg.svd(X1) 161 | 162 | for i in range(len(s0) - 1): 163 | if s0[i] > 0.5: 164 | new_num1.append(s0[i]) 165 | else: 166 | if s0[i] - s0[i + 1] > 0.15: 167 | new_num1.append(s0[i]) 168 | else: 169 | if s0[i] - s0[i + 1] > 0.08 and s0[i] > 0.15: 170 | new_num1.append(s0[i]) 171 | 172 | if len(pred_tgt_ind) < len(new_num1) and new_num1[-1] > 0.2: 173 | pred_tgt_ind1 = pred_tgt_ind 174 | X_0 = X0.numpy() 175 | k = pred_tgt_ind1 176 | for t in range(len(new_num1) - len(pred_tgt_ind)): 177 | X_opr = np.zeros_like(X_0) 178 | P = np.zeros((1000, len(k)), dtype=np.float32) 179 | for i, n in enumerate(k): 180 | P[:, i] = tgt_vocab[n].numpy() 181 | u, s0, v = np.linalg.svd(P.T) 182 | I = np.identity(1000, dtype=np.float32) 183 | Mk = I - np.dot(v[0:len(k)].T, (v[0:len(k)])) 184 | 185 | for i in range(len(X_0)): 186 | c = np.dot(X_0[i].reshape(1, 1000), Mk) 187 | X_opr[i] = c 188 | 189 | X_opr[X_opr < 0] = 0 190 | X_1 = X_opr / np.max(X_opr) 191 | X_opr0 = torch.from_numpy(X_1).float() 192 | pred_tgt_ind0 = predict(model, X_opr0, tgt_vocab, device, d_model=1000, max_len=7) 193 | pred_tgt_ind0 = sorted(set(pred_tgt_ind0.tolist()), key=pred_tgt_ind0.tolist().index) 194 | if pred_tgt_ind0 == pred_tgt_ind1: 195 | ind_x = list(np.where(np.sum(X_1, 1) / max(np.sum(X_1, 1)) < 0.08)[0]) 196 | X_opr0[ind_x] = 0 197 | pred_tgt_ind0 = predict(model, X_opr0, tgt_vocab, device, d_model=1000, max_len=7) 198 | pred_tgt_ind0 = sorted(set(pred_tgt_ind0.tolist()), key=pred_tgt_ind0.tolist().index) 199 | 200 | pred_tgt_ind1 = pred_tgt_ind1 + pred_tgt_ind0 201 | pred_tgt_ind1 = sorted(set(pred_tgt_ind1), key=pred_tgt_ind1.index) 202 | 203 | if len(pred_tgt_ind1) >= len(new_num1): 204 | break 205 | 206 | k = pred_tgt_ind1 207 | 208 | if len(pred_tgt_ind1) <= len(new_num1): 209 | pred_tgt_ind = pred_tgt_ind1 210 | if len(pred_tgt_ind1) > len(new_num1): 211 | pred_tgt_ind = k 212 | 213 | S = np.zeros((len(pred_tgt_ind), 1000), dtype=np.float32) 214 | pred_tgt_ind_list.append(pred_tgt_ind) 215 | 216 | for i in range(len(pred_tgt_ind)): 217 | S[i] = (tgt_vocab[pred_tgt_ind[i]].cpu()).numpy() 218 | 219 | for i in range(0, 200): 220 | S[S < 0] = 0 221 | C = np.dot(np.dot(X0.numpy(), S.T), np.linalg.pinv(np.dot(S, S.T))) 222 | C[C < 0] = 0 223 | S = np.dot(np.dot(np.linalg.pinv(np.dot(C.T, C)), C.T), X0.numpy()) 224 | S[S < 0] = 0 225 | 226 | sta_S = np.zeros_like(S) 227 | for i in range(len(sta_S)): 228 | sta_S[i] = S[i] / np.max(S[i]) * 999 229 | sta_C = np.dot(np.dot(xX0, sta_S.T), np.linalg.pinv(np.dot(sta_S, sta_S.T))) 230 | sta_C[sta_C < 0] = 0 231 | re_X = np.dot(sta_C, sta_S) 232 | R2_0 = explained_variance_score(xX0, re_X, multioutput='variance_weighted') 233 | R2s.append(R2_0) 234 | RT_ind.append(round(rt[ls[j][np.argmax(np.sum(m, 1))]], 3)) 235 | 236 | 237 | sta_S0 = np.vstack((sta_S0, sta_S)) 238 | sta_C_list.append(sta_C) 239 | re_X_list.append(re_X) 240 | sta_S_list.append(sta_S) 241 | 242 | 243 | for i in range(len(sta_S)): 244 | r_2_1.append(R2_0) 245 | 246 | for i in range(len(sta_S)): 247 | maxindex = np.argmax(sta_C[:, i]) 248 | tic = ncr.tic() 249 | rt0 = round(tic['rt'][t0[maxindex]].astype(np.float32), 2) 250 | rts.append(rt0) 251 | compound = np.trapz(np.sum(np.dot(np.array(sta_C[:, i], ndmin=2).T, np.array(sta_S[i], ndmin=2)), 1, dtype='float32')) 252 | area.append(compound) 253 | 254 | return sta_S0, area, rts, r_2_1 255 | 256 | def output_msp(filename_path, sta_S, RT): 257 | sta_S[sta_S < 3] = 0 258 | f = open(filename_path, "x") 259 | for i in range(len(sta_S)): 260 | f.write("Name: ") 261 | f.write(str(RT[i])) 262 | f.write('\n') 263 | f.write("RT: ") 264 | f.write(str(RT[i])) 265 | f.write('\n') 266 | f.write("Num Peaks: ") 267 | f.write(str(sta_S.shape[1])) 268 | f.write('\n') 269 | for n in range(sta_S.shape[1]): 270 | f.write(str(n + 1)) 271 | f.write(' ') 272 | f.write(str(sta_S[i, n])) 273 | f.write('\n') 274 | f.write('\n') 275 | f.close() -------------------------------------------------------------------------------- /GCMSFormer/da.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import random 3 | from tqdm import tqdm 4 | from scipy import stats 5 | import torch 6 | import pickle 7 | 8 | 9 | def data_pre(mss, max_mz, maxn, noise): 10 | "A sample data: R" 11 | global x0, means, sigmas, nums, ratios, a, b 12 | if maxn == 5: 13 | L0 = [random.uniform(0.115, 0.125), 14 | random.uniform(0.125, 0.15), 15 | random.uniform(0.15, 0.175), 16 | random.uniform(0.175, 0.2)] 17 | L = [random.uniform(0.115, 0.125)] 18 | for i in range(3): 19 | L.append(random.choice(L0)) 20 | random.shuffle(L) 21 | m1 = random.randint(100, 300) * 0.001 22 | m2 = m1 + L[0] 23 | m3 = m2 + L[1] 24 | m4 = m3 + L[2] 25 | m5 = m4 + L[3] 26 | means1 = [m1, m2, m3, m4, m5] 27 | sigmas = random.randint(8, 14) * 0.01 28 | ratios = [random.uniform(0.3, 2), random.uniform(0.5, 2), random.uniform(0.5, 2), random.uniform(0.5, 2), 29 | random.uniform(0.3, 2)] 30 | nums = random.randint(40, 100) 31 | if sigmas <= 0.1: 32 | means = means1 33 | a, b = -0.4, 1.5 34 | x0 = np.linspace(a, b, nums) 35 | else: 36 | means = means1 37 | a, b = -0.4, 1.5 38 | x0 = np.linspace(a, b, nums) 39 | if maxn == 4: 40 | L0 = [random.uniform(0.115, 0.145), 41 | random.uniform(0.145, 0.175), 42 | random.uniform(0.175, 0.2)] 43 | L = [random.uniform(0.115, 0.125)] 44 | for i in range(2): 45 | L.append(random.choice(L0)) 46 | random.shuffle(L) 47 | m1 = random.randint(200, 280) * 0.001 48 | m2 = m1 + L[0] 49 | m3 = m2 + L[1] 50 | m4 = m3 + L[2] 51 | means1 = [m1, m2, m3, m4] 52 | sigmas = random.randint(8, 14) * 0.01 53 | ratios = [random.uniform(0.3, 2), random.uniform(0.5, 2), random.uniform(0.5, 2), random.uniform(0.3, 2)] 54 | nums = random.randint(30, 90) 55 | if sigmas <= 0.1: 56 | means = means1 57 | a, b = -0.2, 1.5 58 | x0 = np.linspace(a, b, nums) 59 | else: 60 | means = means1 61 | a, b = -0.3, 1.5 62 | x0 = np.linspace(a, b, nums) 63 | if maxn == 3: 64 | L0 = [random.uniform(0.115, 0.125), 65 | random.uniform(0.125, 0.15)] 66 | L = [random.uniform(0.115, 0.125)] 67 | for i in range(1): 68 | L.append(random.choice(L0)) 69 | random.shuffle(L) 70 | m1 = random.randint(200, 280) * 0.001 71 | m2 = m1 + L[0] 72 | m3 = m2 + L[1] 73 | means1 = [m1, m2, m3] 74 | sigmas = random.randint(8, 14) * 0.01 75 | ratios = [random.uniform(0.5, 2), random.uniform(0.5, 2), random.uniform(0.5, 2)] 76 | nums = random.randint(20, 80) 77 | if sigmas <= 0.1: 78 | means = means1 79 | a, b = -0.2, 1.4 80 | x0 = np.linspace(a, b, nums) 81 | else: 82 | means = means1 83 | a, b = -0.5, 1.6 84 | x0 = np.linspace(a, b, nums) 85 | if maxn == 2: 86 | L = [random.uniform(0.115, 0.125)] 87 | m1 = random.randint(200, 280) * 0.001 88 | m2 = m1 + L[0] 89 | means1 = [m1, m2] 90 | sigmas = random.randint(8, 14) * 0.01 91 | maxn = 2 92 | ratios = [random.uniform(0.3, 2), random.uniform(0.3, 2)] 93 | nums = random.randint(20, 70) 94 | if sigmas <= 0.1: 95 | means = means1 96 | a, b = -0.2, 1.2 97 | x0 = np.linspace(a, b, nums) 98 | else: 99 | means = means1 100 | a, b = -0.3, 1.55 101 | x0 = np.linspace(a, b, nums) 102 | if maxn == 1: 103 | m1 = random.randint(200, 280) * 0.001 104 | means1 = [m1] 105 | sigmas = random.randint(8, 14) * 0.01 106 | maxn = 1 107 | ratios = [random.uniform(0.3, 2)] 108 | nums = random.randint(20, 70) 109 | if sigmas <= 0.1: 110 | means = means1 111 | a, b = -0.2, 1.2 112 | x0 = np.linspace(a, b, nums) 113 | else: 114 | means = means1 115 | a, b = -0.3, 1.55 116 | x0 = np.linspace(a, b, nums) 117 | 118 | ids4p = random.sample(range(0, len(mss)), maxn) 119 | 120 | S = np.zeros((max_mz, maxn), dtype=np.float32) 121 | C = np.zeros((nums, maxn), dtype=np.float32) 122 | for i in range(maxn): 123 | C[:, i] = stats.norm.pdf(x0, means[i], sigmas) * ratios[i] 124 | S[:, i] = mss[ids4p[i]] / np.sum(mss[ids4p[i]]) 125 | X_0 = np.dot(C, S.T) 126 | 127 | para = np.random.randn(nums, max_mz) 128 | E0 = para - np.min(para) 129 | E = E0 * (np.max(np.sum(X_0, 1)) * noise / (E0.sum() / nums)) 130 | X = np.float32((np.dot(C, S.T) + E) / np.max(np.dot(C, S.T) + E)) 131 | total = ratios + means + [sigmas, a, b, nums, maxn] 132 | return X, X_0, S, ids4p, total 133 | 134 | 135 | def update_lib(lib_path_pk, added_path_msp, new_lib_path_pk=None): 136 | 137 | with open(lib_path_pk, 'rb') as file: 138 | lib_dic = pickle.load(file) 139 | 140 | with open(added_path_msp, 'r') as file1: 141 | f1 = file1.read() 142 | 143 | file.close() 144 | file1.close() 145 | 146 | a = f1.split('\n') 147 | m = [] 148 | n = [] 149 | for i, l in enumerate(a): 150 | if l.startswith('Name'): 151 | m.append(i) 152 | if l.startswith('Num Peaks'): 153 | n.append(i) 154 | for t in range(len(m) - 1): 155 | mzs = [] 156 | ins = [] 157 | for j in range(n[t] + 1, m[t + 1] - 1): 158 | ps = a[j].split('\n ') 159 | ps = [p for p in ps if len(p) > 0] # 160 | for p in ps: 161 | mz_in = p.split(' ') 162 | mzs.append(int(float(mz_in[0]))) 163 | ins.append(np.float32((mz_in[1]))) 164 | ms_added_dic = {'m/z': mzs, 'intensity': ins} 165 | ms_dic = {'ms': ms_added_dic} 166 | name = a[m[t]].split(':')[1].strip() 167 | lib_dic.update({f'{name}': ms_dic}) 168 | 169 | mzs = [] 170 | ins = [] 171 | for j in range(n[-1] + 1, len(a)): 172 | ps = a[j].split('\n ') 173 | ps = [p for p in ps if len(p) > 0] # 174 | for p in ps: 175 | mz_in = p.split(' ') 176 | mzs.append(int(float(mz_in[0]))) 177 | ins.append(np.float32((mz_in[1]))) 178 | ms_added_dic = {'m/z': mzs, 'intensity': ins} 179 | ms_dic = {'ms': ms_added_dic} 180 | name = a[m[-1]].split(':')[1].strip() 181 | lib_dic.update({f'{name}': ms_dic}) 182 | if new_lib_path_pk: 183 | with open(new_lib_path_pk, "wb") as file2: 184 | pickle.dump(lib_dic, file2, protocol=pickle.HIGHEST_PROTOCOL) 185 | print('The new library has been successfully saved as a Pickle file') 186 | file2.close() 187 | 188 | 189 | def add_msp_MZmine(lib_path_msp, added_path_msp): 190 | with open(added_path_msp, 'r') as file1: 191 | content = file1.read() 192 | 193 | with open(lib_path_msp, 'a') as file2: 194 | file2.write(content) 195 | 196 | file1.close() 197 | file2.close() 198 | 199 | 200 | def read_msp_MZmine(msp_file_path, d_models): 201 | f = open(msp_file_path).read() 202 | a = f.split('\n') 203 | m = [] 204 | n = [] 205 | for i, l in enumerate(a): 206 | if l.startswith('Name'): 207 | m.append(i) 208 | if l.startswith('Num Peaks'): 209 | n.append(i) 210 | mss = np.zeros((0, 1000), dtype=np.float32) 211 | for t in range(len(m) - 1): 212 | mzs = [] 213 | ins = [] 214 | for j in range(n[t] + 1, m[t + 1] - 1): 215 | ps = a[j].split('\n ') 216 | ps = [p for p in ps if len(p) > 0] 217 | for p in ps: 218 | mz_in = p.split(' ') 219 | mzs.append(int(float(mz_in[0]))) 220 | ins.append(np.float32((mz_in[1]))) 221 | 222 | ms = np.zeros((1, 1000), dtype=np.float32) 223 | for i, mz in enumerate(mzs): 224 | ms[0, mz - 1] = ins[i] 225 | mss = np.vstack((mss, ms / np.max(ms))) 226 | 227 | mzs = [] 228 | ins = [] 229 | for j in range(n[-1] + 1, len(a)): 230 | ps = a[j].split('\n ') 231 | ps = [p for p in ps if len(p) > 0] 232 | for p in ps: 233 | mz_in = p.split(' ') 234 | mzs.append(int(float(mz_in[0]))) 235 | ins.append(float(mz_in[1])) 236 | ms = np.zeros((1, 1000), dtype=np.float32) 237 | for i, mz in enumerate(mzs): 238 | ms[0, mz - 1] = ins[i] 239 | mss = np.vstack((mss, ms / np.max(ms))) 240 | 241 | RT = [] 242 | for t in range(len(m)): 243 | ps = a[m[t] + 2].split('\n ') 244 | ps = [p for p in ps if len(p) > 0] 245 | for p in ps: 246 | mz_rt = p.split(' ') 247 | RT.append(np.float32((mz_rt[1]))) 248 | return RT, mss 249 | 250 | def data_augmentation(msp_file_path, d_models, n, noise_level=0.001): 251 | 252 | "Obtain datasets by data augmentation." 253 | RT, mss = read_msp_MZmine(msp_file_path, d_models) 254 | DATA = [] 255 | TARGET = [] 256 | TOTAL = [] 257 | for i in tqdm(range(n), desc='Generating Dataset'): 258 | noise = random.randint(1, 50) * noise_level 259 | maxn = random.randint(1, 5) 260 | data, data_0, target, ids4p, totals = data_pre(mss, d_models, maxn, noise) 261 | DATA.append(torch.tensor(data)) 262 | TARGET.append(torch.tensor(target.T)) 263 | TOTAL.append(torch.tensor(totals)) 264 | ms = np.zeros_like(mss) 265 | for i in range(len(mss)): 266 | ms[i] = mss[i] / np.sum(mss[i]) 267 | tgt_vocab = torch.tensor(ms, dtype=torch.float) 268 | bos = torch.cat((torch.ones([1, int(d_models / 2)], dtype=torch.float), 269 | torch.zeros([1, int(d_models / 2)], dtype=torch.float)), dim=1) 270 | eos = torch.cat((torch.zeros([1, int(d_models / 2)], dtype=torch.float), 271 | torch.ones([1, int(d_models / 2)], dtype=torch.float)), dim=1) 272 | pad = torch.zeros([1, d_models], dtype=torch.float) 273 | tgt_vocab = torch.cat((pad, bos, eos, tgt_vocab), dim=0) 274 | TARGET_ind = [] 275 | for t in TARGET: 276 | ind = [] 277 | for i in range(len(t)): 278 | for j in range(len(tgt_vocab)): 279 | if t[i].equal(tgt_vocab[j]): 280 | ind.append(j) 281 | TARGET_ind.append(torch.tensor(ind)) 282 | 283 | return DATA, TARGET, tgt_vocab, TARGET_ind, TOTAL 284 | 285 | def data_split(aug_num, d_models, msp_file_path, validation_split): 286 | 287 | DATA, TARGET, tgt_vocab, TARGET_ind, TOTAL = data_augmentation(msp_file_path, d_models, aug_num, noise_level=0.001) 288 | train_src = DATA[0:round((1 - validation_split) * aug_num)] 289 | train_tgt = TARGET[0:round((1 - validation_split) * aug_num)] 290 | train_tgt_ind = TARGET_ind[0:round((1 - validation_split) * aug_num)] 291 | train_total = TOTAL[0:round((1 - validation_split) * aug_num)] 292 | TRAIN = tuple((train_src, train_tgt, train_tgt_ind, train_total)) 293 | 294 | valid_src = DATA[round((1 - validation_split) * aug_num):round(0.9 * aug_num)] 295 | valid_tgt = TARGET[round((1 - validation_split) * aug_num):round(0.9 * aug_num)] 296 | valid_tgt_ind = TARGET_ind[round((1 - validation_split) * aug_num):round(0.9 * aug_num)] 297 | valid_total = TOTAL[round((1 - validation_split) * aug_num):round(0.9 * aug_num)] 298 | VALID = tuple((valid_src, valid_tgt, valid_tgt_ind, valid_total)) 299 | 300 | test_src = DATA[round(0.9 * aug_num):aug_num] 301 | test_tgt = TARGET[round(0.9 * aug_num):aug_num] 302 | test_tgt_ind = TARGET_ind[round(0.9 * aug_num):aug_num] 303 | test_total = TOTAL[round(0.9 * aug_num):aug_num] 304 | TEST = tuple((test_src, test_tgt, test_tgt_ind, test_total)) 305 | 306 | return TRAIN, VALID, TEST, tgt_vocab 307 | 308 | def gen_datasets(para): 309 | aug_nums = para['aug_num'] 310 | validation_split = 0.2 311 | msp_file_path = para['name'] 312 | d_models = int(max(para['mz_range'])) 313 | TRAIN, VALID, TEST, tgt_vocab = data_split(aug_nums, d_models, msp_file_path, validation_split) 314 | return TRAIN, VALID, TEST, tgt_vocab 315 | -------------------------------------------------------------------------------- /AMDIS/read_amdis_elu.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "outputs": [], 7 | "source": [ 8 | "import re\n", 9 | "import numpy as np" 10 | ], 11 | "metadata": { 12 | "collapsed": false, 13 | "ExecuteTime": { 14 | "end_time": "2024-02-22T11:03:42.592941500Z", 15 | "start_time": "2024-02-22T11:03:42.509956600Z" 16 | } 17 | } 18 | }, 19 | { 20 | "cell_type": "code", 21 | "execution_count": 2, 22 | "metadata": { 23 | "collapsed": true, 24 | "ExecuteTime": { 25 | "end_time": "2024-02-22T11:03:46.097245Z", 26 | "start_time": "2024-02-22T11:03:46.075305100Z" 27 | } 28 | }, 29 | "outputs": [], 30 | "source": [ 31 | "def read_amdis_elu(elu_file_path):\n", 32 | "\n", 33 | " f = open(elu_file_path).read()\n", 34 | "\n", 35 | " a = f.split('\\n')\n", 36 | " m = []\n", 37 | " n = []\n", 38 | " for i, l in enumerate(a):\n", 39 | " if l.startswith('NAME'):\n", 40 | " m.append(i)\n", 41 | " if l.startswith('NUM PEAKS'):\n", 42 | " n.append(i)\n", 43 | "\n", 44 | " name_lst = []\n", 45 | " for name_number in m:\n", 46 | " name_lst.append(a[name_number])\n", 47 | " peak_area = []\n", 48 | " R2 = []\n", 49 | " RT = []\n", 50 | " for name_str in name_lst:\n", 51 | " nm0 = name_str.split('|')\n", 52 | " for nm1 in nm0:\n", 53 | " if nm1.startswith('XN'):\n", 54 | " peak_area.append(nm1)\n", 55 | " elif nm1.startswith('FG'):\n", 56 | " R2.append(nm1)\n", 57 | " elif nm1.startswith('RT'):\n", 58 | " RT.append(nm1)\n", 59 | "\n", 60 | " mss_dense = np.zeros((0, 1000), dtype=np.float32)\n", 61 | " for t in range(len(m)-1):\n", 62 | " ms = []\n", 63 | " for j in range(n[t] + 1, m[t + 1] - 1):\n", 64 | " result = re.findall(r'\\((.*?)\\)', a[j])\n", 65 | " for k in result:\n", 66 | " ms.append(k)\n", 67 | " mzs = []\n", 68 | " ins = []\n", 69 | " for p in ms:\n", 70 | " mz_in = p.split(',')\n", 71 | " mzs.append(int(float(mz_in[0])))\n", 72 | " mz_in0 = mz_in[1].split(' ')\n", 73 | " ins.append(np.float32((mz_in0[0])))\n", 74 | "\n", 75 | " ms_dense = np.zeros((1, 1000), dtype=np.float32)\n", 76 | " for i, mz in enumerate(mzs):\n", 77 | " ms_dense[0, mz - 1] = ins[i]\n", 78 | " mss_dense = np.vstack((mss_dense, ms_dense))\n", 79 | " ms = []\n", 80 | " for j in range(n[-1] + 1, len(a)):\n", 81 | " result = re.findall(r'\\((.*?)\\)', a[j])\n", 82 | " for k in result:\n", 83 | " ms.append(k)\n", 84 | " mzs = []\n", 85 | " ins = []\n", 86 | " for p in ms:\n", 87 | " mz_in = p.split(',')\n", 88 | " mzs.append(int(float(mz_in[0])))\n", 89 | " mz_in0 = mz_in[1].split(' ')\n", 90 | " ins.append(np.float32((mz_in0[0])))\n", 91 | "\n", 92 | " ms_dense = np.zeros((1, 1000), dtype=np.float32)\n", 93 | " for i, mz in enumerate(mzs):\n", 94 | " ms_dense[0, mz - 1] = ins[i]\n", 95 | " mss_dense = np.vstack((mss_dense, ms_dense))\n", 96 | " return RT, peak_area, R2, mss_dense" 97 | ] 98 | }, 99 | { 100 | "cell_type": "code", 101 | "execution_count": 4, 102 | "outputs": [ 103 | { 104 | "name": "stdout", 105 | "output_type": "stream", 106 | "text": [ 107 | "The RT is:5.5587min, the peak area is 6311036, the R2 is 1.000\n" 108 | ] 109 | }, 110 | { 111 | "data": { 112 | "text/plain": "
", 113 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjEAAAGiCAYAAAAWdZeEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAiNUlEQVR4nO3de3BU5eH/8c+SyxLSZCWJ7LIlaGxTb0GqwSLRCjZcakHqMFNUKENHtFAusgWKRtqCTk2EVqBKxaIMIJTGPySWmXoheIlkIhUjqSRatEMKQVmjP+NugmED4fn94ZfTLgEE2ZB9wvs1c0b3nGc3zz5Q8+7ZPbsuY4wRAACAZXp09QQAAAC+DiIGAABYiYgBAABWImIAAICViBgAAGAlIgYAAFiJiAEAAFYiYgAAgJWIGAAAYCUiBgAAWOmMI+b111/XLbfcIr/fL5fLpeeeey7quDFGixYtkt/vV0pKioYNG6a6urqoMZFIRLNmzVJWVpZSU1M1duxY7d+/P2pMU1OTJk2aJI/HI4/Ho0mTJunzzz8/4ycIAAC6pzOOmIMHD2rgwIFasWLFCY8vWbJES5cu1YoVK7Rjxw75fD6NGDFCzc3NzphAIKCysjKVlpaqsrJSLS0tGjNmjNrb250xEyZMUE1NjV588UW9+OKLqqmp0aRJk77GUwQAAN2R62y+ANLlcqmsrEy33nqrpC/Pwvj9fgUCAd17772Svjzr4vV6tXjxYk2dOlWhUEgXXnih1q9fr9tuu02S9NFHHyk7O1vPP/+8Ro0apffee09XXHGFtm/frsGDB0uStm/friFDhuhf//qXLr300rN82gAAwHaJsXyw+vp6BYNBjRw50tnndrs1dOhQVVVVaerUqaqurtbhw4ejxvj9fuXl5amqqkqjRo3SG2+8IY/H4wSMJF133XXyeDyqqqo6YcREIhFFIhHn9tGjR/XZZ58pMzNTLpcrlk8TAAB0EmOMmpub5ff71aPHqV8wimnEBINBSZLX643a7/V6tXfvXmdMcnKyevfu3WHMsfsHg0H16dOnw+P36dPHGXO8kpISPfDAA2f9HAAAQNdraGhQv379TjkmphFzzPFnPowxX3k25PgxJxp/qscpKirSnDlznNuhUEj9+/dXQ0OD0tPTz2T6OA0/+MNramyOqE+aW6/MG9bV0wEAdBPhcFjZ2dlKS0v7yrExjRifzyfpyzMpffv2dfY3NjY6Z2d8Pp/a2trU1NQUdTamsbFRBQUFzpiPP/64w+N/8sknHc7yHON2u+V2uzvsT09PJ2I6QWLPVPVoS1Biz56sLwAg5k7nrSAx/ZyYnJwc+Xw+lZeXO/va2tpUUVHhBEp+fr6SkpKixhw4cEC1tbXOmCFDhigUCunNN990xvzjH/9QKBRyxgAAgPPbGZ+JaWlp0b///W/ndn19vWpqapSRkaH+/fsrEAiouLhYubm5ys3NVXFxsXr16qUJEyZIkjwej6ZMmaK5c+cqMzNTGRkZmjdvngYMGKDhw4dLki6//HL98Ic/1N13360///nPkqSf//znGjNmDFcmAQAASV8jYt566y3ddNNNzu1j70OZPHmy1q5dq/nz56u1tVXTp09XU1OTBg8erC1btkS9trVs2TIlJiZq/Pjxam1tVWFhodauXauEhARnzF/+8hfdc889zlVMY8eOPeln0wAAgPPPWX1OTDwLh8PyeDwKhUK8Z6MTXFf8soLhQ/Kl99T2+wu7ejoAgG7iTH5/891JAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsFPOIOXLkiH79618rJydHKSkpuuSSS/Tggw/q6NGjzhhjjBYtWiS/36+UlBQNGzZMdXV1UY8TiUQ0a9YsZWVlKTU1VWPHjtX+/ftjPV0AAGCpmEfM4sWL9cQTT2jFihV67733tGTJEv3+97/XY4895oxZsmSJli5dqhUrVmjHjh3y+XwaMWKEmpubnTGBQEBlZWUqLS1VZWWlWlpaNGbMGLW3t8d6ygAAwEKJsX7AN954Qz/+8Y81evRoSdLFF1+sv/71r3rrrbckfXkWZvny5VqwYIHGjRsnSVq3bp28Xq82btyoqVOnKhQKafXq1Vq/fr2GDx8uSdqwYYOys7O1detWjRo1KtbTBgAAlon5mZgbbrhBL7/8st5//31J0j//+U9VVlbqRz/6kSSpvr5ewWBQI0eOdO7jdrs1dOhQVVVVSZKqq6t1+PDhqDF+v195eXnOmONFIhGFw+GoDQAAdF8xPxNz7733KhQK6bLLLlNCQoLa29v10EMP6Y477pAkBYNBSZLX6426n9fr1d69e50xycnJ6t27d4cxx+5/vJKSEj3wwAOxfjoAACBOxfxMzDPPPKMNGzZo48aNevvtt7Vu3Tr94Q9/0Lp166LGuVyuqNvGmA77jneqMUVFRQqFQs7W0NBwdk8EAADEtZififnVr36l++67T7fffrskacCAAdq7d69KSko0efJk+Xw+SV+ebenbt69zv8bGRufsjM/nU1tbm5qamqLOxjQ2NqqgoOCEP9ftdsvtdsf66QAAgDgV8zMxX3zxhXr0iH7YhIQE5xLrnJwc+Xw+lZeXO8fb2tpUUVHhBEp+fr6SkpKixhw4cEC1tbUnjRgAAHB+ifmZmFtuuUUPPfSQ+vfvryuvvFI7d+7U0qVLdeedd0r68mWkQCCg4uJi5ebmKjc3V8XFxerVq5cmTJggSfJ4PJoyZYrmzp2rzMxMZWRkaN68eRowYIBztRIAADi/xTxiHnvsMf3mN7/R9OnT1djYKL/fr6lTp+q3v/2tM2b+/PlqbW3V9OnT1dTUpMGDB2vLli1KS0tzxixbtkyJiYkaP368WltbVVhYqLVr1yohISHWUwYAABZyGWNMV0+iM4TDYXk8HoVCIaWnp3f1dLqd64pfVjB8SL70ntp+f2FXTwcA0E2cye9vvjsJAABYiYgBAABWImIAAICViBgAAGAlIgYAAFiJiAEAAFYiYgAAgJWIGAAAYCUiBgAAWImIAQAAViJiAACAlYgYAABgJSIGAABYiYgBAABWImIAAICViBgAAGAlIgYAAFiJiAEAAFYiYgAAgJWIGAAAYCUiBgAAWImIAQAAViJiAACAlYgYAABgJSIGAABYiYgBAABWImIAAICViBgAAGAlIgYAAFiJiAEAAFYiYgAAgJWIGAAAYCUiBgAAWImIAQAAViJiAACAlYgYAABgJSIGAABYiYgBAABWImIAAICViBgAAGAlIgYAAFiJiAEAAFYiYgAAgJWIGAAAYCUiBgAAWImIAQAAViJiAACAlYgYAABgJSIGAABYiYgBAABWImIAAICViBgAAGAlIgYAAFiJiAEAAFYiYgAAgJWIGAAAYCUiBgAAWImIAQAAViJiAACAlYgYAABgJSIGAABYiYgBAABWImIAAICVOiViPvzwQ/30pz9VZmamevXqpe9+97uqrq52jhtjtGjRIvn9fqWkpGjYsGGqq6uLeoxIJKJZs2YpKytLqampGjt2rPbv398Z0wUAABaKecQ0NTXp+uuvV1JSkl544QW9++67euSRR3TBBRc4Y5YsWaKlS5dqxYoV2rFjh3w+n0aMGKHm5mZnTCAQUFlZmUpLS1VZWamWlhaNGTNG7e3tsZ4yAACwUGKsH3Dx4sXKzs7WmjVrnH0XX3yx8+/GGC1fvlwLFizQuHHjJEnr1q2T1+vVxo0bNXXqVIVCIa1evVrr16/X8OHDJUkbNmxQdna2tm7dqlGjRsV62gAAwDIxPxOzefNmDRo0SD/5yU/Up08fXX311XryySed4/X19QoGgxo5cqSzz+12a+jQoaqqqpIkVVdX6/Dhw1Fj/H6/8vLynDHHi0QiCofDURsAAOi+Yh4xe/bs0cqVK5Wbm6uXXnpJ06ZN0z333KOnn35akhQMBiVJXq836n5er9c5FgwGlZycrN69e590zPFKSkrk8XicLTs7O9ZPDQAAxJGYR8zRo0d1zTXXqLi4WFdffbWmTp2qu+++WytXrowa53K5om4bYzrsO96pxhQVFSkUCjlbQ0PD2T0RAAAQ12IeMX379tUVV1wRte/yyy/Xvn37JEk+n0+SOpxRaWxsdM7O+Hw+tbW1qamp6aRjjud2u5Wenh61AQCA7ivmEXP99ddr9+7dUfvef/99XXTRRZKknJwc+Xw+lZeXO8fb2tpUUVGhgoICSVJ+fr6SkpKixhw4cEC1tbXOGAAAcH6L+dVJv/zlL1VQUKDi4mKNHz9eb775platWqVVq1ZJ+vJlpEAgoOLiYuXm5io3N1fFxcXq1auXJkyYIEnyeDyaMmWK5s6dq8zMTGVkZGjevHkaMGCAc7USAAA4v8U8Yq699lqVlZWpqKhIDz74oHJycrR8+XJNnDjRGTN//ny1trZq+vTpampq0uDBg7VlyxalpaU5Y5YtW6bExESNHz9era2tKiws1Nq1a5WQkBDrKQMAAAu5jDGmqyfRGcLhsDwej0KhEO+P6QTXFb+sYPiQfOk9tf3+wq6eDgCgmziT3998dxIAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACt1esSUlJTI5XIpEAg4+4wxWrRokfx+v1JSUjRs2DDV1dVF3S8SiWjWrFnKyspSamqqxo4dq/3793f2dAEAgCU6NWJ27NihVatW6aqrrorav2TJEi1dulQrVqzQjh075PP5NGLECDU3NztjAoGAysrKVFpaqsrKSrW0tGjMmDFqb2/vzCkDAABLdFrEtLS0aOLEiXryySfVu3dvZ78xRsuXL9eCBQs0btw45eXlad26dfriiy+0ceNGSVIoFNLq1av1yCOPaPjw4br66qu1YcMG7dq1S1u3bj3hz4tEIgqHw1EbAADovjotYmbMmKHRo0dr+PDhUfvr6+sVDAY1cuRIZ5/b7dbQoUNVVVUlSaqurtbhw4ejxvj9fuXl5TljjldSUiKPx+Ns2dnZnfCsAABAvOiUiCktLVV1dbVKSko6HAsGg5Ikr9cbtd/r9TrHgsGgkpOTo87gHD/meEVFRQqFQs7W0NAQi6cCAADiVGKsH7ChoUGzZ8/Wli1b1LNnz5OOc7lcUbeNMR32He9UY9xut9xu95lPGAAAWCnmZ2Kqq6vV2Nio/Px8JSYmKjExURUVFXr00UeVmJjonIE5/oxKY2Ojc8zn86mtrU1NTU0nHQMAAM5vMY+YwsJC7dq1SzU1Nc42aNAgTZw4UTU1Nbrkkkvk8/lUXl7u3KetrU0VFRUqKCiQJOXn5yspKSlqzIEDB1RbW+uMAQAA57eYv5yUlpamvLy8qH2pqanKzMx09gcCARUXFys3N1e5ubkqLi5Wr169NGHCBEmSx+PRlClTNHfuXGVmZiojI0Pz5s3TgAEDOrxRGAAAnJ9iHjGnY/78+WptbdX06dPV1NSkwYMHa8uWLUpLS3PGLFu2TImJiRo/frxaW1tVWFiotWvXKiEhoSumDAAA4ozLGGO6ehKdIRwOy+PxKBQKKT09vaun0+1cV/yyguFD8qX31Pb7C7t6OgCAbuJMfn/z3UkAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKwU84gpKSnRtddeq7S0NPXp00e33nqrdu/eHTXGGKNFixbJ7/crJSVFw4YNU11dXdSYSCSiWbNmKSsrS6mpqRo7dqz2798f6+kCAABLxTxiKioqNGPGDG3fvl3l5eU6cuSIRo4cqYMHDzpjlixZoqVLl2rFihXasWOHfD6fRowYoebmZmdMIBBQWVmZSktLVVlZqZaWFo0ZM0bt7e2xnjIAALCQyxhjOvMHfPLJJ+rTp48qKip04403yhgjv9+vQCCge++9V9KXZ128Xq8WL16sqVOn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tWTJEh04cEB5eXlatmyZbrzxxq6eFgAA6GJxHzEAAAAnErfviQEAADgVIgYAAFiJiAEAAFYiYgAAgJWImDP0+OOPKycnRz179lR+fr62bdvW1VOyyuuvv65bbrlFfr9fLpdLzz33XNRxY4wWLVokv9+vlJQUDRs2THV1dVFjIpGIZs2apaysLKWmpmrs2LHav3//OXwW8a+kpETXXnut0tLS1KdPH916663avXt31BjWOjZWrlypq666yvnE0iFDhuiFF15wjrPOnaOkpEQul0uBQMDZx1qfvUWLFsnlckVtPp/POR53a3x2X9N4fiktLTVJSUnmySefNO+++66ZPXu2SU1NNXv37u3qqVnj+eefNwsWLDDPPvuskWTKysqijj/88MMmLS3NPPvss2bXrl3mtttuM3379jXhcNgZM23aNPPNb37TlJeXm7ffftvcdNNNZuDAgebIkSPn+NnEr1GjRpk1a9aY2tpaU1NTY0aPHm369+9vWlpanDGsdWxs3rzZ/P3vfze7d+82u3fvNvfff79JSkoytbW1xhjWuTO8+eab5uKLLzZXXXWVmT17trOftT57CxcuNFdeeaU5cOCAszU2NjrH422NiZgz8L3vfc9MmzYtat9ll11m7rvvvi6akd2Oj5ijR48an89nHn74YWffoUOHjMfjMU888YQxxpjPP//cJCUlmdLSUmfMhx9+aHr06GFefPHFczZ32zQ2NhpJpqKiwhjDWne23r17m6eeeop17gTNzc0mNzfXlJeXm6FDhzoRw1rHxsKFC83AgQNPeCwe15iXk05TW1ubqqurNXLkyKj9I0eOVFVVVRfNqnupr69XMBiMWmO3262hQ4c6a1xdXa3Dhw9HjfH7/crLy+PP4RRCoZAkKSMjQxJr3Vna29tVWlqqgwcPasiQIaxzJ5gxY4ZGjx6t4cOHR+1nrWPngw8+kN/vV05Ojm6//Xbt2bNHUnyucVx/7UA8+fTTT9Xe3t7hyye9Xm+HL6nE13NsHU+0xnv37nXGJCcnq3fv3h3G8OdwYsYYzZkzRzfccIPy8vIksdaxtmvXLg0ZMkSHDh3SN77xDZWVlemKK65w/qPNOsdGaWmpqqur9dZbb3U4xt/p2Bg8eLCefvppfec739HHH3+s3/3udyooKFBdXV1crjERc4ZcLlfUbWNMh304O19njflzOLmZM2fqnXfeUWVlZYdjrHVsXHrppaqpqdHnn3+uZ599VpMnT1ZFRYVznHU+ew0NDZo9e7a2bNminj17nnQca312br75ZuffBwwYoCFDhuhb3/qW1q1bp+uuu05SfK0xLyedpqysLCUkJHQoycbGxg5Viq/n2DvgT7XGPp9PbW1tampqOukY/NesWbO0efNmvfrqq+rXr5+zn7WOreTkZH3729/WoEGDVFJSooEDB+qPf/wj6xxD1dXVamxsVH5+vhITE5WYmKiKigo9+uijSkxMdNaKtY6t1NRUDRgwQB988EFc/n0mYk5TcnKy8vPzVV5eHrW/vLxcBQUFXTSr7iUnJ0c+ny9qjdva2lRRUeGscX5+vpKSkqLGHDhwQLW1tfw5/A9jjGbOnKlNmzbplVdeUU5OTtRx1rpzGWMUiURY5xgqLCzUrl27VFNT42yDBg3SxIkTVVNTo0suuYS17gSRSETvvfee+vbtG59/n2P+VuFu7Ngl1qtXrzbvvvuuCQQCJjU11fznP//p6qlZo7m52ezcudPs3LnTSDJLly41O3fudC5Tf/jhh43H4zGbNm0yu3btMnfccccJL9/r16+f2bp1q3n77bfND37wAy6RPM4vfvEL4/F4zGuvvRZ1qeQXX3zhjGGtY6OoqMi8/vrrpr6+3rzzzjvm/vvvNz169DBbtmwxxrDOnel/r04yhrWOhblz55rXXnvN7Nmzx2zfvt2MGTPGpKWlOb/n4m2NiZgz9Kc//clcdNFFJjk52VxzzTXOJas4Pa+++qqR1GGbPHmyMebLS/gWLlxofD6fcbvd5sYbbzS7du2KeozW1lYzc+ZMk5GRYVJSUsyYMWPMvn37uuDZxK8TrbEks2bNGmcMax0bd955p/PfhAsvvNAUFhY6AWMM69yZjo8Y1vrsHfvcl6SkJOP3+824ceNMXV2dczze1thljDGxP78DAADQuXhPDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACv9f66m33BlewU0AAAAAElFTkSuQmCC" 114 | }, 115 | "metadata": {}, 116 | "output_type": "display_data" 117 | } 118 | ], 119 | "source": [ 120 | "file_path = r'plant essential oil.ELU'\n", 121 | "RT, peak_area, R2, mss_dense = read_amdis_elu(file_path)\n", 122 | "\n", 123 | "com_num = input('Please input the number of compounds:')\n", 124 | "RT_num = re.sub(r'[A-Za-z]', '', RT[int(com_num)-1])\n", 125 | "area_num = re.sub(r'[A-Za-z]', '', peak_area[int(com_num)-1])\n", 126 | "R2_num = re.sub(r'[A-Za-z]', '', R2[int(com_num)-1])\n", 127 | "print(f'The RT is:{RT_num}min, the peak area is {area_num}, the R2 is {R2_num}')\n", 128 | "\n", 129 | "import matplotlib.pyplot as plt\n", 130 | "ms = mss_dense[int(com_num)-1]\n", 131 | "plt.vlines(np.arange(0,500), np.zeros((len(np.arange(0,500)),)), ms[0:500], linestyles='solid', linewidth=2)\n", 132 | "plt.ylim([0,1000])\n", 133 | "plt.show()" 134 | ], 135 | "metadata": { 136 | "collapsed": false, 137 | "ExecuteTime": { 138 | "end_time": "2024-02-22T11:04:45.415892400Z", 139 | "start_time": "2024-02-22T11:04:43.312882500Z" 140 | } 141 | } 142 | }, 143 | { 144 | "cell_type": "code", 145 | "execution_count": null, 146 | "outputs": [], 147 | "source": [], 148 | "metadata": { 149 | "collapsed": false 150 | } 151 | } 152 | ], 153 | "metadata": { 154 | "kernelspec": { 155 | "display_name": "Python 3", 156 | "language": "python", 157 | "name": "python3" 158 | }, 159 | "language_info": { 160 | "codemirror_mode": { 161 | "name": "ipython", 162 | "version": 2 163 | }, 164 | "file_extension": ".py", 165 | "mimetype": "text/x-python", 166 | "name": "python", 167 | "nbconvert_exporter": "python", 168 | "pygments_lexer": "ipython2", 169 | "version": "2.7.6" 170 | } 171 | }, 172 | "nbformat": 4, 173 | "nbformat_minor": 0 174 | } 175 | -------------------------------------------------------------------------------- /GCMSFormer/GCMSformer.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import torch 3 | import torch.nn as nn 4 | import torch.nn.functional as F 5 | import math, copy, time 6 | from torch.autograd import Variable 7 | import matplotlib.pyplot as plt 8 | import seaborn 9 | import os 10 | 11 | seaborn.set_context(context="talk") 12 | import pickle 13 | import matplotlib.ticker as mtick 14 | import random 15 | 16 | def subsequent_mask(size): 17 | "Mask out subsequent positions." 18 | attn_shape = (1, size, size) 19 | subsequent_mask = np.triu(np.ones(attn_shape), k=1).astype('uint8') 20 | return torch.from_numpy(subsequent_mask) == 0 21 | 22 | class Batch: 23 | "Object for holding a batch of data with mask during training." 24 | 25 | def __init__(self, src, batch_tgt_ind, src_mask, trg=None, pad=0): 26 | self.src = src 27 | self.src_mask = src_mask 28 | device = torch.device("cuda" if torch.cuda.is_available() else "cpu") 29 | if trg is not None: 30 | self.trg = trg[:, :-1, :] 31 | self.trg_y = trg[:, 1:, :] 32 | self.trg_y_ind = batch_tgt_ind[:, 1:] 33 | self.trg_mask = \ 34 | self.make_std_mask(self.trg, pad).to(device) 35 | trg_y_mask = torch.zeros([self.trg_y.shape[0], self.trg_y.shape[1]], dtype=torch.bool).to(device) 36 | for i in range(len(self.trg_y)): 37 | for j in range(len(self.trg_y[i])): 38 | if self.trg_y[i][j].equal(pad): 39 | trg_y_mask[i][j] = False 40 | else: 41 | trg_y_mask[i][j] = True 42 | self.ntokens = (trg_y_mask != False).data.sum() 43 | 44 | @staticmethod 45 | def make_std_mask(tgt, pad): 46 | "Create a mask to hide padding and future words." 47 | tgt_mask = torch.zeros([tgt.shape[0], tgt.shape[1]], dtype=torch.bool) 48 | for i in range(len(tgt)): 49 | for j in range(len(tgt[i])): 50 | if tgt[i][j].equal(pad): 51 | tgt_mask[i][j] = False 52 | else: 53 | tgt_mask[i][j] = True 54 | tgt_mask = tgt_mask.unsqueeze(-2) 55 | tgt_mask = tgt_mask & Variable( 56 | subsequent_mask(tgt.size(1)).type_as(tgt_mask.data)) 57 | return tgt_mask 58 | 59 | def batchify(batch_source, batch_traget, d_models, traget_ind): 60 | "Convert the dataset into a small batch, filled sequence." 61 | global src_mask 62 | device = torch.device("cuda" if torch.cuda.is_available() else "cpu") 63 | max_source = 0 64 | for l in batch_source: 65 | if len(l) > max_source: 66 | max_source = len(l) 67 | for i in range(len(batch_source)): 68 | pad_len = max_source - len(batch_source[i]) 69 | pad_source = torch.zeros([pad_len, d_models], dtype=torch.float) 70 | batch_source[i] = torch.cat((batch_source[i], pad_source), dim=0) 71 | src_mask = torch.ones([len(batch_source), max_source], dtype=torch.bool) 72 | src_mask[i][max_source - pad_len:max_source] = False 73 | src_mask = src_mask.unsqueeze(-2).to(device) 74 | max_traget = 0 75 | for l in batch_traget: 76 | if len(l) > max_traget: 77 | max_traget = len(l) 78 | for i in range(len(batch_traget)): 79 | pad_traget = torch.zeros([max_traget - len(batch_traget[i]), d_models], dtype=torch.float) 80 | pad_ind = torch.zeros([max_traget - len(batch_traget[i])], dtype=torch.int) 81 | bos = torch.cat((torch.ones([1, int(d_models / 2)], dtype=torch.float), 82 | torch.zeros([1, int(d_models / 2)], dtype=torch.float)), dim=1) 83 | eos = torch.cat((torch.zeros([1, int(d_models / 2)], dtype=torch.float), 84 | torch.ones([1, int(d_models / 2)], dtype=torch.float)), dim=1) 85 | batch_traget[i] = torch.cat((bos, batch_traget[i], eos, pad_traget), dim=0) 86 | bos_ind = torch.ones([1], dtype=torch.int) 87 | eos_ind = torch.LongTensor([2]) 88 | traget_ind[i] = torch.cat((bos_ind, traget_ind[i], eos_ind, pad_ind), dim=0) 89 | batch_source = Variable(torch.stack(batch_source, 0), 90 | requires_grad=False).to(device) 91 | batch_traget = Variable(torch.stack(batch_traget, 0), 92 | requires_grad=False).to(device) 93 | traget_ind = Variable(torch.stack(traget_ind, 0), 94 | requires_grad=False).to(device) 95 | return batch_source, batch_traget, traget_ind, src_mask 96 | 97 | def data_gen(src, tgt, batch_size, tgt_inds, d_models, device): 98 | "Generate batch_data for training, evaluation, and testing models." 99 | nbatches = len(src) // batch_size 100 | src = src[0:(nbatches * batch_size)] 101 | tgt = tgt[0:(nbatches * batch_size)] 102 | tgt_inds = tgt_inds[0:(nbatches * batch_size)] 103 | data_zip = list(zip(src, tgt, tgt_inds)) 104 | random.shuffle(data_zip) 105 | src_rnd, tgt_rnd, tgt_inds_rnd = tuple(zip(*data_zip)) 106 | for i in range(nbatches): 107 | src_data = list(src_rnd[batch_size * i: batch_size * (i + 1)]) 108 | tgt_data = list(tgt_rnd[batch_size * i: batch_size * (i + 1)]) 109 | traget_ind = list(tgt_inds_rnd[batch_size * i: batch_size * (i + 1)]) 110 | batch_src, batch_tgt, batch_tgt_ind, src_mask = batchify(src_data, tgt_data, d_models, traget_ind) 111 | pad = torch.zeros([d_models], dtype=torch.float).to(device) 112 | yield Batch(batch_src, batch_tgt_ind, src_mask, batch_tgt, pad) 113 | 114 | class Embeddings(nn.Module): 115 | def __init__(self, d_model): 116 | super(Embeddings, self).__init__() 117 | self.lut = nn.Linear(d_model, d_model) 118 | self.d_model = d_model 119 | 120 | def forward(self, x): 121 | return self.lut(x) * math.sqrt(self.d_model) 122 | 123 | class PositionalEncoding(nn.Module): 124 | "Implement the PE function." 125 | 126 | def __init__(self, d_model, dropout, max_len=5000): 127 | super(PositionalEncoding, self).__init__() 128 | self.dropout = nn.Dropout(p=dropout) 129 | 130 | # Compute the positional encodings once in log space. 131 | pe = torch.zeros(max_len, d_model) 132 | position = torch.arange(0, max_len).unsqueeze(1) 133 | div_term = torch.exp(torch.arange(0, d_model, 2) * 134 | -(math.log(10000.0) / d_model)) 135 | pe[:, 0::2] = torch.sin(position * div_term) 136 | pe[:, 1::2] = torch.cos(position * div_term) 137 | pe = pe.unsqueeze(0) 138 | self.register_buffer('pe', pe) 139 | 140 | def forward(self, x): 141 | x = x + Variable(self.pe[:, :x.size(1)], requires_grad=False) 142 | return self.dropout(x) 143 | 144 | def clones(module, N): 145 | "Produce N identical layers." 146 | return nn.ModuleList([copy.deepcopy(module) for _ in range(N)]) 147 | 148 | class Encoder(nn.Module): 149 | "Core encoder is a stack of N layers" 150 | 151 | def __init__(self, layer, N): 152 | super(Encoder, self).__init__() 153 | self.layers = clones(layer, N) 154 | self.norm = LayerNorm(layer.size) 155 | 156 | def forward(self, x, mask): 157 | "Pass the input (and mask) through each layer in turn." 158 | for layer in self.layers: 159 | x = layer(x, mask) 160 | return self.norm(x) 161 | 162 | class LayerNorm(nn.Module): 163 | "Construct a layernorm module (See citation for details)." 164 | 165 | def __init__(self, features, eps=1e-6): 166 | super(LayerNorm, self).__init__() 167 | self.a_2 = nn.Parameter(torch.ones(features)) 168 | self.b_2 = nn.Parameter(torch.zeros(features)) 169 | self.eps = eps 170 | 171 | def forward(self, x): 172 | mean = x.mean(-1, keepdim=True) 173 | std = x.std(-1, keepdim=True) 174 | return self.a_2 * (x - mean) / (std + self.eps) + self.b_2 175 | 176 | class SublayerConnection(nn.Module): 177 | """ 178 | A residual connection followed by a layer norm. 179 | Note for code simplicity the norm is first as opposed to last. 180 | """ 181 | 182 | def __init__(self, size, dropout): 183 | super(SublayerConnection, self).__init__() 184 | self.norm = LayerNorm(size) 185 | self.dropout = nn.Dropout(dropout) 186 | 187 | def forward(self, x, sublayer): 188 | "Apply residual connection to any sublayer with the same size." 189 | return x + self.dropout(sublayer(self.norm(x))) 190 | 191 | 192 | class EncoderLayer(nn.Module): 193 | "Encoder is made up of self-attn and feed forward (defined below)" 194 | 195 | def __init__(self, size, self_attn, feed_forward, dropout): 196 | super(EncoderLayer, self).__init__() 197 | self.self_attn = self_attn 198 | self.feed_forward = feed_forward 199 | self.sublayer = clones(SublayerConnection(size, dropout), 2) 200 | self.size = size 201 | 202 | def forward(self, x, mask): 203 | "Follow Figure 1 (left) for connections." 204 | x = self.sublayer[0](x, lambda x: self.self_attn(x, x, x, mask)) 205 | return self.sublayer[1](x, self.feed_forward) 206 | 207 | class Decoder(nn.Module): 208 | "Generic N layer decoder with masking." 209 | 210 | def __init__(self, layer, N): 211 | super(Decoder, self).__init__() 212 | self.layers = clones(layer, N) 213 | self.norm = LayerNorm(layer.size) 214 | 215 | def forward(self, x, memory, src_mask, tgt_mask): 216 | for layer in self.layers: 217 | x = layer(x, memory, src_mask, tgt_mask) 218 | return self.norm(x) 219 | 220 | class DecoderLayer(nn.Module): 221 | "Decoder is made of self-attn, src-attn, and feed forward (defined below)" 222 | 223 | def __init__(self, size, self_attn, src_attn, feed_forward, dropout): 224 | super(DecoderLayer, self).__init__() 225 | self.size = size 226 | self.self_attn = self_attn 227 | self.src_attn = src_attn 228 | self.feed_forward = feed_forward 229 | self.sublayer = clones(SublayerConnection(size, dropout), 3) 230 | 231 | def forward(self, x, memory, src_mask, tgt_mask): 232 | "Follow Figure 1 (right) for connections." 233 | m = memory 234 | x = self.sublayer[0](x, lambda x: self.self_attn(x, x, x, tgt_mask)) 235 | x = self.sublayer[1](x, lambda x: self.src_attn(x, m, m, src_mask)) 236 | return self.sublayer[2](x, self.feed_forward) 237 | 238 | def attention(query, key, value, mask=None, dropout=None): 239 | "Compute 'Scaled Dot Product Attention'" 240 | d_k = query.size(-1) 241 | scores = torch.matmul(query, key.transpose(-2, -1)) \ 242 | / math.sqrt(d_k) 243 | if mask is not None: 244 | scores = scores.masked_fill(mask == 0, -1e9) 245 | p_attn = F.softmax(scores, dim=-1) 246 | if dropout is not None: 247 | p_attn = dropout(p_attn) 248 | return torch.matmul(p_attn, value), p_attn 249 | 250 | class MultiHeadedAttention(nn.Module): 251 | def __init__(self, h, d_model, dropout=0.1): 252 | "Take in model size and number of heads." 253 | super(MultiHeadedAttention, self).__init__() 254 | assert d_model % h == 0 255 | # We assume d_v always equals d_k 256 | self.d_k = d_model // h 257 | self.h = h 258 | self.linears = clones(nn.Linear(d_model, d_model), 4) 259 | self.attn = None 260 | self.dropout = nn.Dropout(p=dropout) 261 | 262 | def forward(self, query, key, value, mask=None): 263 | "Implements Figure 2" 264 | if mask is not None: 265 | # Same mask applied to all h heads. 266 | mask = mask.unsqueeze(1) 267 | nbatches = query.size(0) 268 | 269 | # 1) Do all the linear projections in batch from d_model => h x d_k 270 | query, key, value = \ 271 | [l(x).view(nbatches, -1, self.h, self.d_k).transpose(1, 2) 272 | for l, x in zip(self.linears, (query, key, value))] 273 | 274 | # 2) Apply attention on all the projected vectors in batch. 275 | x, self.attn = attention(query, key, value, mask=mask, 276 | dropout=self.dropout) 277 | 278 | # 3) "Concat" using a view and apply a final linear. 279 | x = x.transpose(1, 2).contiguous() \ 280 | .view(nbatches, -1, self.h * self.d_k) 281 | del query 282 | del key 283 | del value 284 | return self.linears[-1](x) 285 | 286 | class PositionwiseFeedForward(nn.Module): 287 | "Implements FFN equation." 288 | 289 | def __init__(self, d_model, d_ff, dropout=0.1): 290 | super(PositionwiseFeedForward, self).__init__() 291 | self.w_1 = nn.Linear(d_model, d_ff) 292 | self.w_2 = nn.Linear(d_ff, d_model) 293 | self.dropout = nn.Dropout(dropout) 294 | 295 | def forward(self, x): 296 | return self.w_2(self.dropout(F.relu(self.w_1(x)))) 297 | 298 | class EncoderDecoder(nn.Module): 299 | """ 300 | A standard Encoder-Decoder architecture. Base for this and many 301 | other models. 302 | """ 303 | 304 | def __init__(self, encoder, decoder, src_embed, tgt_embed, generator): 305 | super(EncoderDecoder, self).__init__() 306 | self.encoder = encoder 307 | self.decoder = decoder 308 | self.src_embed = src_embed 309 | self.tgt_embed = tgt_embed 310 | self.generator = generator 311 | 312 | def encode(self, src, src_mask): 313 | return self.encoder(self.src_embed(src), src_mask) 314 | 315 | def decode(self, memory, src_mask, tgt, tgt_mask): 316 | return self.decoder(self.tgt_embed(tgt), memory, src_mask, tgt_mask) 317 | 318 | def forward(self, src, tgt, src_mask, tgt_mask): 319 | "Take in and process masked src and target sequences." 320 | return self.decode(self.encode(src, src_mask), src_mask,tgt, tgt_mask) 321 | 322 | class Generator(nn.Module): 323 | "Define standard linear + softmax generation step. /nn.CrossEntropyLoss" 324 | 325 | def __init__(self, d_model, vocab): 326 | super(Generator, self).__init__() 327 | self.proj = nn.Linear(d_model, vocab) 328 | 329 | def forward(self, x): 330 | return self.proj(x) 331 | 332 | def make_model(tgt_vocab, N=4, d_model=1000, d_ff=1024, h=8, dropout=0.1): 333 | "Helper: Construct a model from hyperparameters." 334 | 335 | tgt_vocab_lens = len(tgt_vocab) 336 | c = copy.deepcopy 337 | attn = MultiHeadedAttention(h, d_model) 338 | ff = PositionwiseFeedForward(d_model, d_ff, dropout) 339 | position = PositionalEncoding(d_model, dropout) 340 | model = EncoderDecoder( Encoder(EncoderLayer(d_model, c(attn), c(ff), dropout), N), 341 | Decoder(DecoderLayer(d_model, c(attn), c(attn), c(ff), dropout), N), 342 | nn.Sequential(Embeddings(d_model), c(position)), 343 | nn.Sequential(Embeddings(d_model), c(position)), 344 | Generator(d_model, tgt_vocab_lens) 345 | ) 346 | 347 | for p in model.parameters(): 348 | if p.dim() > 1: 349 | nn.init.xavier_uniform(p) 350 | return model 351 | 352 | class SimpleLossCompute: 353 | "A simple loss compute and train function. /nn.CrossEntropyLoss" 354 | 355 | def __init__(self, generator, criterion, opt=None): 356 | self.generator = generator 357 | self.criterion = criterion 358 | self.opt = opt 359 | 360 | def __call__(self, x, y): 361 | x = self.generator(x) 362 | loss = self.criterion(x.contiguous().view(-1, x.size(-1)), 363 | y.contiguous().view(-1)) 364 | if self.opt is not None: 365 | loss.backward() 366 | self.opt.step() 367 | self.opt.zero_grad() 368 | return loss.item() 369 | 370 | def train(data_iter, batch_size, model, loss_compute, epoch, train_src): 371 | 372 | global i 373 | model.train() 374 | total_loss = 0 375 | total_losss = 0 376 | start = time.time() 377 | 378 | for i, batch in enumerate(data_iter): 379 | out = model.forward(batch.src, batch.trg, batch.src_mask, batch.trg_mask) 380 | loss = loss_compute(out, batch.trg_y_ind) 381 | total_loss += loss 382 | total_losss += loss 383 | log_interval = 50 384 | 385 | if i % log_interval == 0 and i > 0: 386 | cur_loss = total_loss / log_interval 387 | elapsed = time.time() - start 388 | 389 | print('| epoch {:3d} | {:5d}/{:5d} batches | s/batch {:5.2f} | loss {:5.2f} | ppl {:8.2f}' 390 | .format(epoch, i, len(train_src) // batch_size, elapsed / log_interval, cur_loss, math.exp(cur_loss))) 391 | 392 | total_loss = 0 393 | start = time.time() 394 | 395 | return total_losss / i 396 | 397 | def evaluate(data_iter, eval_model, loss_compute): 398 | eval_model.eval() 399 | total_loss = 0 400 | with torch.no_grad(): 401 | for i, batch in enumerate(data_iter): 402 | out = eval_model.forward(batch.src, batch.trg, batch.src_mask, batch.trg_mask) 403 | loss = loss_compute(out, batch.trg_y_ind) 404 | total_loss += loss 405 | del loss 406 | return total_loss / i 407 | 408 | def train_model(para, TRAIN, VALID, tgt_vocab): 409 | 410 | # load Datasets 411 | device = torch.device("cuda" if torch.cuda.is_available() else "cpu") 412 | tgt_vocab = tgt_vocab.to(device) 413 | d_models = int(max(para['mz_range'])) 414 | train_src, train_tgt, train_tgt_ind, train_total = TRAIN 415 | valid_src, valid_tgt, valid_tgt_ind, valid_total = VALID 416 | best_val_loss = float("inf") 417 | best_model = None 418 | 419 | # Initialization model 420 | model = make_model(tgt_vocab, N=para['layer_num'], h=para['head']).to(device) 421 | 422 | # loss function 423 | criterion = nn.CrossEntropyLoss() 424 | 425 | # optimizer and lr 426 | model_opt = torch.optim.AdamW(model.parameters(), lr=para['lr']) 427 | scheduler = torch.optim.lr_scheduler.StepLR(model_opt, 1, gamma=0.95) 428 | 429 | t_loss = [] 430 | v_loss = [] 431 | for epoch in range(1, para['epochs'] + 1): 432 | epoch_start_time = time.time() 433 | train_loss = train( 434 | data_gen(train_src, train_tgt, para['batch_size'], train_tgt_ind, d_models, device), 435 | para['batch_size'], 436 | model, 437 | SimpleLossCompute(model.generator, criterion, model_opt), 438 | epoch, 439 | train_src 440 | ) 441 | 442 | valid_loss = evaluate( 443 | data_gen(valid_src, valid_tgt, para['batch_size'], valid_tgt_ind, d_models, device), 444 | model, 445 | SimpleLossCompute(model.generator, criterion, None) 446 | ) 447 | 448 | t_loss.append(train_loss) 449 | v_loss.append(valid_loss) 450 | 451 | print('-' * 89) 452 | print('| end of epoch {:3d} | time: {:5.2f}s | train loss {:5.2f} | valid loss {:5.2f} | valid ppl {:5.2f}' 453 | .format(epoch, (time.time() - epoch_start_time), train_loss, valid_loss, math.exp(valid_loss))) 454 | print('-' * 89) 455 | if valid_loss < best_val_loss: 456 | best_val_loss = valid_loss 457 | best_model = model 458 | scheduler.step() 459 | 460 | # save best model 461 | torch.save(best_model.state_dict(), para['model_path'] + '/' + para['model_name'] + '.pt') 462 | 463 | # save loss 464 | loss = tuple((t_loss, v_loss)) 465 | with open(para['model_path'] + '/' + para['loss_name'] + '.pk', 'wb') as file: 466 | pickle.dump(loss, file) 467 | 468 | return best_model, loss 469 | 470 | def plot_loss(loss): 471 | t_loss, v_loss = loss 472 | fig = plt.figure(figsize=(8, 6)) 473 | ax1 = fig.add_subplot(111) 474 | plot1 = ax1.plot(t_loss, label='Loss_training') 475 | plot2 = ax1.plot(v_loss, label='Loss_validation') 476 | ax1.set_xlabel('Epoch', fontsize=20) 477 | ax1.set_ylabel('Loss', fontsize=20) 478 | lines = plot1 + plot2 479 | ax1.legend(lines, [l.get_label() for l in lines], bbox_to_anchor=(0.98, 0.98), fontsize=16) 480 | ax1.tick_params(axis='x', labelsize=16) 481 | ax1.tick_params(axis='y', labelsize=16) 482 | ax1.tick_params(which='major', length=4, width=1) 483 | ax = plt.gca() 484 | ax.yaxis.set_major_formatter(mtick.FormatStrFormatter('%.2f')) 485 | ax.spines['bottom'].set_linewidth(1) 486 | ax.spines['left'].set_linewidth(1) 487 | ax.spines['right'].set_linewidth(1) 488 | ax.spines['top'].set_linewidth(1) 489 | 490 | plt.show() 491 | 492 | def greedy_decode(model, src, src_mask, tgt_vocab, device, d_model, max_len): 493 | memory = model.encode(src, src_mask) 494 | ys = torch.cat((torch.ones([1, int(d_model / 2)], dtype=torch.float), 495 | torch.zeros([1, int(d_model / 2)], dtype=torch.float)), dim=1).type_as(src.data).unsqueeze(0) 496 | ys_ind = torch.ones([1], dtype=torch.int).to(device) 497 | for i in range(max_len - 1): 498 | out = model.decode(memory, src_mask, Variable(ys), Variable(subsequent_mask(ys.size(1)) .type_as(src.data))) 499 | prob = model.generator(out[:, -1]) 500 | _, next_word = torch.max(prob, dim=1) 501 | ys = torch.cat([ys, tgt_vocab[next_word.item()].contiguous().view(1, 1, d_model).type_as(src.data)], dim=1) 502 | ys_ind = torch.cat([ys_ind, next_word], dim=0) 503 | return ys.squeeze(), ys_ind 504 | 505 | def predict(best_model, src, tgt_vocab, device, d_model, max_len): 506 | best_model.eval() 507 | src = src.unsqueeze(0).to(device) 508 | pad = torch.zeros([d_model], dtype=torch.float).to(device) 509 | src_mask = torch.zeros([src.shape[0], src.shape[1]], dtype=torch.bool).to(device) 510 | for i in range(len(src)): 511 | for j in range(len(src[i])): 512 | if src[i][j].equal(pad): 513 | src_mask[i][j] = False 514 | else: 515 | src_mask[i][j] = True 516 | src_mask = src_mask.unsqueeze(-2) 517 | pred_tgt, pred_tgt_ind = greedy_decode(best_model, src, src_mask, tgt_vocab, device, d_model, max_len) 518 | pred_mask = torch.ones([len(pred_tgt_ind)], dtype=torch.bool).to(device) 519 | 520 | for i in range(len(pred_tgt_ind)): 521 | if pred_tgt_ind[i].item() == 0: 522 | pred_mask[i] = False 523 | if pred_tgt_ind[i].item() == 1: 524 | pred_mask[i] = False 525 | if pred_tgt_ind[i].item() == 2: 526 | pred_mask[i:len(pred_tgt_ind)] = False 527 | pred_tgt_ind = pred_tgt_ind[pred_mask] 528 | return pred_tgt_ind 529 | 530 | def bleu(pred_seq, label_seq, k): 531 | """BLEU""" 532 | len_pred, len_label = len(pred_seq), len(label_seq) 533 | score = math.exp(min(0, 1 - len_label / len_pred)) 534 | 535 | for n in range(1, k + 1): 536 | num_matches = 0 537 | for i in range(len_pred - n + 1): 538 | for j in range(len_label - n + 1): 539 | if pred_seq[i: i + n].equal(label_seq[j: j + n]): 540 | num_matches += 1 541 | score *= math.pow(num_matches / (len_pred - n + 1), math.pow(0.5, n)) 542 | return score 543 | 544 | def bleu_new(pred_seq, label_seq, k): 545 | """BLEU""" 546 | len_pred, len_label = len(pred_seq), len(label_seq) 547 | if len_pred == 0: 548 | score = 0 549 | else: 550 | score = math.exp(min(0, 1 - len_label / len_pred)) 551 | for n in range(1, k + 1): 552 | num_matches = 0 553 | for i in range(len_pred - n + 1): 554 | for j in range(len_label - n + 1): 555 | if pred_seq[i: i + n].equal(label_seq[j: j + n]): 556 | num_matches += 1 557 | score *= math.pow(num_matches / (len_pred - n + 1), math.pow(0.5, n)) 558 | return score 559 | 560 | def evaluate_model(model, TEST, tgt_vocab, d_model): 561 | device = torch.device("cuda" if torch.cuda.is_available() else "cpu") 562 | test_src, test_tgt, test_tgt_ind, test_total = TEST 563 | scores = [] 564 | for src, tgt, tgt_ind in zip(test_src, test_tgt, test_tgt_ind): 565 | pred_tgt_ind = predict(model, src, tgt_vocab, device, d_model, 7) 566 | k = min(2, len(pred_tgt_ind)) 567 | tgt = tgt.to(device) 568 | score = bleu_new(pred_tgt_ind, tgt_ind.to(device), k) 569 | 570 | scores.append(score) 571 | return np.sum(scores) / len(test_src) 572 | 573 | def check_model(model_name, loss_name): 574 | model_path = f'{model_name}.pt' 575 | loss_path = f'{loss_name}.pk' 576 | return os.path.isfile(model_path) and os.path.isfile(loss_path) 577 | -------------------------------------------------------------------------------- /test.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "1dbbef05", 6 | "metadata": {}, 7 | "source": [ 8 | "# Resolving the whole process of plant essential oil dataset\n", 9 | "## Load the required packages " 10 | ] 11 | }, 12 | { 13 | "cell_type": "code", 14 | "execution_count": 1, 15 | "id": "a3d91c50", 16 | "metadata": { 17 | "ExecuteTime": { 18 | "end_time": "2023-12-16T04:59:12.954932900Z", 19 | "start_time": "2023-12-16T04:59:10.063665200Z" 20 | } 21 | }, 22 | "outputs": [], 23 | "source": [ 24 | "import torch\n", 25 | "import seaborn\n", 26 | "seaborn.set_context(context=\"talk\")\n", 27 | "from GCMSFormer.GCMSformer import train_model, evaluate_model, check_model, plot_loss, make_model\n", 28 | "from GCMSFormer.da import gen_datasets\n", 29 | "import pickle\n", 30 | "from GCMSFormer.Resolution import Resolution, output_msp\n", 31 | "from GCMSFormer.Alignment import Alignment\n", 32 | "import time\n", 33 | "import os\n", 34 | "from GCMSFormer.NetCDF import netcdf_reader\n", 35 | "import pandas as pd" 36 | ] 37 | }, 38 | { 39 | "cell_type": "markdown", 40 | "id": "a07caae5", 41 | "metadata": {}, 42 | "source": [ 43 | "## Load the Library" 44 | ] 45 | }, 46 | { 47 | "cell_type": "code", 48 | "execution_count": 2, 49 | "id": "c4d98b05", 50 | "metadata": { 51 | "ExecuteTime": { 52 | "end_time": "2023-12-16T04:59:12.970997300Z", 53 | "start_time": "2023-12-16T04:59:12.955927600Z" 54 | } 55 | }, 56 | "outputs": [], 57 | "source": [ 58 | "with open('./Library/tgt_vacob.pk', 'rb') as file_1:\n", 59 | " tgt_vacob = pickle.load(file_1)" 60 | ] 61 | }, 62 | { 63 | "cell_type": "markdown", 64 | "id": "41cbc985", 65 | "metadata": {}, 66 | "source": [ 67 | "## Load GCMSFormer model " 68 | ] 69 | }, 70 | { 71 | "cell_type": "code", 72 | "execution_count": 4, 73 | "id": "87821494", 74 | "metadata": { 75 | "ExecuteTime": { 76 | "end_time": "2023-12-16T04:59:47.924691400Z", 77 | "start_time": "2023-12-16T04:59:47.159693800Z" 78 | } 79 | }, 80 | "outputs": [ 81 | { 82 | "data": { 83 | "text/plain": "
", 84 | "image/png": "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5dtvF/HOO+8HwunMmf/l5ZdfJDo6mj59TsTpdLBu3Vo+/ngmixYtYNKkD0hKalnnOh999DF0734s69atYdWqX+nT54Sg/T/99D35+Xn0739OIFD/97/v89prE4iKiqJ37+M57rjepKfvY82a1WzcuJ5169by9NMv1LkueXl53HnnGDZt2kBKSipnnHEWe/bs5oUXnubooztXKm+aJo88cj/ffbeY+PgEevY8Drvdwdatm1m58mdWrvyZnJwcrrrqWgAGD76I33//jd27d3Hccb1p3/4o2rc/qtr6lJSUcN99d7Fy5c9ER8dw0kl9AYOVK39m/PgX+PbbRTz//IRKHyA2b97EzTffiMPhoFevPuTm5vL777/xzDPjyMvLY/jwG+r8s2lITTJUS/1oTLWISPjFfvv/iF71LobZdP6umoaF4t4jKez/xBE/d1ZWJuPGPUJpaSkPPfRYUI/k7Nmf8txzT/LEE4/wwQcfkpKSyt69e5kxYxodOnTk7benEBPjX7eipMTFXXfdxurVq1iwYB4XXDAEt9vNm2++RkJCApMnTw8MU/B4PPy///cQixYt4NNPP+amm26uV90vvPBi1q1bw/z5X1cK1fPmfVVWZgjgn4r3zTf/RXx8Am+++S4dOnQMlP3115XcddetLF68gPT0fXXuPX/77Yls2rSBM8/sz7hxz+BwOMt+fp/w7LNPViq/ePECvvtuMT179uKVVyYGTUs8Zcok3nzzNT76aHogVD/22D946qnH2b17F3/602VBPdJV+fe//8XKlT9z7LE9ef75CYEPLdnZ+7n//rtZvnwpb775L+68c2zQ637+eSnnnDOQhx/+f4F1QT788L9MmPAiU6dO5tprr29S0/k1qQsVJTSa/UNEJPyiV01qUoEawDB9RK+a1CDn/uyzWbhcLi64YEilr/j/9KfLuPDCiykqKmTWrA8B2L/fv05EfHwCTueB3nWHw8nYsX/ngQce4dhjewJQWFiAy+XC4XAGDQmx2Wzceuud3Hffg5x++ln1rvv551+A1WplwYL5eL0HvvEtKiri+++/pUWLeM44o3+g3meffQ433XRzUKAGOP74E+ncOQ2APXv21KkObrebL7/8HJvNxoMPPhoI1AB/+tNQ+vevPBtZaWkpZ511NrfeekeldT6GDr2irB6761SPciUlJXzyyUdYLBYef/zpoG8BkpJa8vjjT2OxWJg168PA1MblrFYrf//7Q0GL9l122RXY7XZycrLZvz+rXnVqKArVEUTzVIuIhF9x75swjab136lpWCnufVODnPuXX/yzd5133qAq9w8c6L8+auXKnwHo3LkL8fEJrF69ijFjRvLhh/9lx47tAPTo0ZNLLhlKx45HA/4Q16nT0aSn72PUqOuZOnUymzZtBKBDh44MHXol3bv3qHfdk5KS6NfvDPbvzwrUD+C77xbhcrkYOHBQYExzt249eOKJZ7j66uGBcj6fj507dzB37v/Iy8sDoLTUXac6rF37B8XFxfTo0bPKYSxnn31upW3nn38Bzz77UtmwDD+3282GDeuYO/d/AHi93qAPCnWpT0lJCd269ahyiEj79kfRo0dP3O4S/vjj96B9HTp0DAyVKRcVFRXYVtNq1o2Rhn9EkIrDP9xehWoRkXAo7P8EJWc9hOErxdNEOiwackx1ZmYGAG3atK1yf7t27QD/MBEAp9PJk08+x7hxj7JmzWrWrFldVq49/fufw9ChVwT1BI8b9yyPPHI/W7du4Y03XuWNN14lJSWVM8/sz2WXDaNbt/qHavAPAfnhh2+ZP/9r+vY9FSAQTC+4YEhQWa/Xy8KF85k372u2bt3M3r17KC0tBQgMa6hu6rrqlK/wnJraqsr97dq1r3J7YWEBn332CUuW/MD27dvIzMzA5/MFDa+oa1389am5PQHatm3HH3/8HmjTci1atKiyvNVqrXd9GpJCdQRx2A70pGiZchGRMIqKwQRMq/62Hkp5UKpurGx5joqKOnBR20kn9WXGjE/56acf+P77xSxfvpTdu3cxffpUPvpoOk8++RxnneUf9pCW1oX335/Jzz8v47vvFrFs2RJ27NjOp59+zGefzWLs2PsZNuyqetf/rLPOJi6uBYsWLeDeex+ksLCAZcuW0L79UfTufXygXHFxMXfddStr1qwmOjqa7t2PpW/ffqSlpdGnzwm89NLzgV77ujjUEOPyQFrR5s2b+NvfbiM7ez9JSS3p0eNYBg4cTNeu3TjhhJMYNuziOtej3KHas6wUENymfk1nvHRtKFRHkKALFUv1h19ERI68lJRUtm/fxp49uytNnQewe/dOAFq2DB7aYLfbOfvsczj77HMA2LZtK++99zZffTWH119/JRCqwR8sTz31NE499TQA9u7dy8yZ05g+fSpvvPEql156edAUb3Vht9s599zz+fzzWSxfvpR9+/bi8Xgq9VJPmzaFNWtW07fvqTz11PPExsYF7c/Pz6/X+VNTW5e9p6rHQJf3HFc0fvzzZGfv5/rrb2TMmNuxWA50spUPQ6mvlJRUoOYx2bt37wIqt2lz07QGgUlINKWeiIg0tOOPPxGAhQvnV7l//vy5AJx44smAf1aNa64ZyuTJbweV69TpaMaOfQCA9PR9gH8c9vXXX8nzzz8VVLZNmzbceedY4uJaUFxcVO9AW+7CC/09u999t4gFC+YBlYd+/P77KgCuuOLqSoE6IyOdrVv9KzTXdYhDjx7H0qJFPOvXr2Pv3r2V9v/ww3eVtq1e7a/Ln/88MihQAyxb9lPgccW61HbWjR49euJ0Olm/fi27du2stH/Xrp2sW7eW6OhoevToWatjNlUK1RHEoSn1RESkgV166eVER0czZ85s5syZHbTviy8+46uvviQ6OoaLLvoTAJ06HcOuXTuZOXMa27dvDSr/1VdfAnDssccB0LlzGjt37uB///uS3377JajsDz98R0FBPm3bticpKSmk93D88SfQrl17Fi1awC+/rKB37+MrXaSXlJQIwPfffxsUVvfu3cvDD/89cFGg211Sp3PbbDaGDbsKr9fLk08+RmFhQWDfokUL+N//vqj0msRE//v99tuFQdt/+WUF48cfmCe7Yl3K55QuKCigJk6nk0svvRyfz8cTTzxCTk5OYF92djaPP/4wPp+Piy++tNLMI82Nhn9EEE2pJyIih9Pvv//GpZdeUO3+Sy+9nJtvvpVHHnmCxx//P5566nGmT/+Ajh07sX37NjZuXI/T6eTRR8cFLnzr2rUbV101nJkzp/HnP19Dnz4nkJCQyM6dO9i4cT3R0TGB+Y8TEhK5/fa/8corL3H77bfQq1dvkpNTychIZ/XqVVitVu655/6wvNcLLhjCu+++FXh8sGHDrmH+/LnMnv0pq1b9yjHHpJGTk82qVb8CBN5zVlbdp4278ca/sGrVr6xYsZxrrhnK8cefyP79+1m16ld69erD77//FlT+mmuu49VXx/PUU4/z2WezSE5OYdeuHWzYsJ6EhASSk5PJysoiKysr0Kt+1FEdAJg8+T/8/vuvXHjhxfTvf06V9Rkz5nbWr1/HL7+s4OqrL+OEE07CMGDlyhUUFRVy8smncNttd9b5fTY16qmOII4Kwz80+4eIiISbx+Nh//6sam+FhYUADBhwHm+99R7nn38B2dlZfPvtQvLz8/jTny7j7bffD4ybLnfnnWO5774H6d79WNauXcN33y0KlJ806YOgGT2uvvo6nnjiaU444SS2bNnCt98uZO/ePQwcOJj//Oc9Tj/9zLC81/IhIFFRUVVOD3jccb144423Oe20M8jPz+enn74nKyuTAQPOY+LEdxgz5nbA35NdV3a7nRdffIUxY+4gISGRH3/8gczMTMaMuYNbb72jUvlrrrmexx9/imOPPY4tWzaxfPkSfD4fV155DZMmTePcc8+vVJfLL78y8B5/+ukH1q5dU219HA4n48f/i7vuuoejjurAihXL+OWXFRxzTGf+/veHGT/+X0HzaTdXhtnU5itpZrKzC4/IFEypqS34Y3ceQ17x/8LE2q0svDM8f1jkyEpN9U9BlJER2phAaXhqy8bN5/ORnr4DgFatOlQai1qRrWx2paYypZ7UTO3ZdBzq9zTUv7M2m4WkpNhalVVPdQSpeKGiptQTERERCR+NqY4gFafU8/pMPD4Tm6V5zREpIiJyKL/+upJPP/242v3lE19U/C7/+ONP5LLLhh3mmklTplAdQSqGavBPq2ez65+AiIhEll27dvL113Pq9Bqr1apQLTVSooogFVdUBHB7fMQevLiRiIhIMzdkyCUMGXJJtfs1plrqQ2OqI0jlnmr9sRAREREJB4XqCGK1GEFjqHWxooiIiEh4KFRHmIpDQNRTLSJSvYrLNJum/l6KNEYVfzdru7T64aJQHWEUqkVEascwDGw2/4UnxcVFDVwbEalKcbF/QSGbzd7goVoXKkYYZ1Co9jZgTUREGr+YmDjy8vZTUJCNz+fF6YzBZrMBwf95+3zl9+qsaA7Uno2dicfjweUqoqgoD/D/rjY0heoIY68Qqt0eLaYpIlKT6Og4SkvdFBcXUFSUF/gPvLLykK2/q82D2rMpiY6OIzpaoVqOMIftwAwg6qkWEamZYRjEx7fEbndSUlJESUkJpln5b+eBKdj0d7U5UHs2foZhxeFw4HDE4HTGNPjQD1CojjgVx1Rr9g8RkUMzDIPo6Fiio2MBME0T0wzuwUxNbQFARkb+Ea+fhJ/as3EzDKNRhOiDKVRHGF2oKCISmqr+Q7dYLEH30rSpPaU+9K8lwihUi4iIiISfQnWEcQRdqKhQLSIiIhIOCtURRj3VIiIiIuGnUB1hdKGiiIiISPgpVEcYTaknIiIiEn4K1RFGwz9EREREwk+hOsI4rArVIiIiIuGmUB1hgmb/8CpUi4iIiISDQnWE0fAPERERkfBTqI4wmv1DREREJPwUqiOMI6pCT3WpQrWIiIhIOChURxhNqSciIiISfgrVEabi7B+6UFFEREQkPBSqI4wuVBQREREJP4XqCKNQLSIiIhJ+CtURRqFaREREJPwUqiOMptQTERERCT+F6ghTMVR7fSYen9mAtRERERFpHhSqI0zFUA3gVm+1iIiISMgUqiNMxXmqQXNVi4iIiISDQnWEObinWhcrioiIiIROoTrCWC0GNosReK6LFUVERERCp1AdgTStnoiIiEh4KVRHoIqhWhcqioiIiIROoToCqadaREREJLwUqiOQQrWIiIhIeClUR6CK0+ppSj0RERGR0ClURyAtVS4iIiISXgrVEciu4R8iIiIiYaVQHYGcmv1DREREJKwUqiOQLlQUERERCS+F6gikUC0iIiISXgrVEUgXKoqIiIiEl0J1BLJbK/ZUa0o9ERERkVApVEegivNUu73qqRYREREJlUJ1BHJqTLWIiIhIWClURyBdqCgiIiISXgrVEUihWkRERCS8FKojkGb/EBEREQkvheoIFLRMealCtYiIiEioFKojUNAy5Zr9Q0RERCRkCtURqOKUepqnWkRERCR0CtURSBcqioiIiISXQnUEUqgWERERCS+F6ghkV6gWERERCSuF6giknmoRERGR8FKojkAVZ//w+Ey8PrMBayMiIiLS9ClUR6CKPdWg3moRERGRUClUR6CKU+qBptUTERERCZVCdQSyq6daREREJKwUqiOQzWJgtRiB5y6FahEREZGQKFRHqKClyhWqRUREREKiUB2hNK2eiIiISPgoVEcohWoRERGR8FGojlAK1SIiIiLhY2voCtTH0qVLmThxImvWrMHlctG9e3duvPFGLrroolofY+3atbz++ussXbqUwsJC2rVrx6BBgxg9ejTx8fFVvmbu3Lm88847bNy4EdM06d27N6NHj+b0008P11s7YuzWiqFaU+qJiIiIhKLJ9VR//vnnjBgxgqVLl9KzZ09OOeUUVq9ezd13381rr71Wq2OsXLmSq6++mq+++oq2bdsyYMAAPB4Pb731FkOHDmXfvn2VXvPm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Sj0RERGR+lKojmAVQ7VbPdUiIiIi9aZQHcEqTqnnUqgWERERqTeF6gimMdUiIiIi4aFQHcEcVoVqERERkXBQqI5gjqgDze/xmXh9ZgPWRkRERKTpUqiOYBWHf4B6q0VERETqS6E6gh0cqjUDiIiIiEj9KFRHsIqzfwC4NFe1iIiISL0oVEcwm8XAajECzzX8Q0RERKR+FKojnGYAEREREQmdQnWE01zVIiIiIqFTqI5wQUuVexWqRUREROpDoTrCVQzVWqpcREREpH4UqiOchn+IiIiIhM52JE6yfPly9u3bR8eOHendu/eROKXUUnCo1pR6IiIiIvURtlD95ZdfMnv2bMaNG0dKSgoAmZmZjB49mjVr1gTKHX/88bz88su0bt06XKeWEASF6lL1VIuIiIjUR1hC9f3338/nn38OwLZt2wKh+tFHH+WPP/4IKvvLL79w00038emnn2K328NxeglBxQVgNPxDREREpH5CHlO9aNEiPvvsM0zT5Oijj8bhcACwY8cOFixYgGEY9O/fn1mzZvHUU08RGxvL1q1bmT59esiVl9Bp9g8RERGR0IUcqmfNmgXAOeecw+eff06vXr0AmDt3LgCGYfDkk09y7LHHcsUVV3DnnXdimiZff/11qKeWMNDsHyIiIiKhCzlU//rrrxiGwV//+ldstgOjSRYtWgRAr169gsZPn3POOQBs2rQp1FNLGGj2DxEREZHQhRyqs7KyAOjYsWNgW3FxMStWrMAwDM4888yg8gkJCQDk5eWFemoJA4VqERERkdCFHKqtVv+FboWFhYFtP/30E6WlpQCcccYZQeX37dsHQGxsbKinljDQlHoiIiIioQs5VB9zzDEArFy5MrCtfLx0ixYtOOmkk4LKf/rppwB07tw51FNLGARdqKieahEREZF6CXlKvfPOO48//viDZ599FtM0ycrK4rPPPsMwDAYNGhToyS4oKOCDDz7gvffewzAMzj///JArL6HTlHoiIiIioQs5VI8YMYKPPvqIPXv2cP/99wNgmibR0dHceuutgXIDBw4kLy8vMPXe9ddfH+qpJQw0+4eIiIhI6EIe/hEfH8+UKVMCFySapkmXLl1466236NChQ6Bcx44dMU2TU089lcmTJ+N0OkM9tYSBXRcqioiIiIQsLCsqHnXUUbz99tsUFhZSWlpKYmJipTJ33HEHycnJgXmspXFwKlSLiIiIhCwsobpcTTN6DBgwIJynkjDRlHoiIiIioQtrqK5KcXExX331Fenp6XTs2JGBAwcSFRV1uE8rtaTZP0RERERCF5ZQ7Xa7mTRpEl988QUTJ06kbdu2AGzZsoWRI0cG5qYGaNu2LRMnTqRbt27hOLWESPNUi4iIiIQu5AsVTdNkzJgxjB8/nvXr17Njx47AvkcffZS9e/dimmbgtnv3bv7yl79QUFAQ6qklDOxWzf4hIiIiEqqQQ/UXX3zBjz/+iGma9OvXj+TkZADWr1/P8uXLMQyDyy+/nKVLlzJp0iRSUlLIzMzk/fffD7nyEjqn5qkWERERCVnIoXr27NmB4Dxp0iTS0tIAmDt3LuBfxvyBBx4gPj6e0047jbFjx2KaJt98802op5Yw0IWKIiIiIqELOVSvXr0agBtvvDFo+7fffgvAiSeeGDTF3qmnngrAtm3bQj21hIEj6sA/AY/PxOszG7A2IiIiIk1TyKE6JycHIHBxIkBeXh6rVq3CMIzAojDlyqfdKywsDPXUEgYVe6oB3F71VouIiIjUVcih2uFwAP4gXe7777/H6/XPJHHGGWcEld+5cyfgX4lRGt7BobqkVKFaREREpK5CDtVdu3YF/EG63JdffglAcnIyffr0CSo/bdo0AE2p10g4rMH/BFyaVk9ERESkzkKep3rw4MGsXLmS559/npycHDIzM5k7dy6GYTBkyJBAuU2bNvHee+8xa9YsDMPgoosuCvXUEgY2qwWrAd6yodS6WFFERESk7kIO1ddddx2ffPIJ69at4+WXXw5sT0xMZMyYMUHlyoeIHH/88Vx11VWhnlrCxGGzUlTq76FWqBYRERGpu7CMqZ4yZQpXX301iYmJREdHM2DAAKZOnRqYsxqgc+fOWK1WLr/8cv7zn/9gsYR8agmToKXKdaGiiIiISJ2FZZny+Ph4xo0bx7hx46ot8/DDD9O2bVtSUlLCcUoJI81VLSIiIhKasITq2ujdu/eROpXUkd2mpcpFREREQhHWUO3xeFiwYAFLly5lz549FBUVER0dTbt27TjxxBMZOHBgYAo+aTzUUy0iIiISmrCF6m+//ZbHHnuMvXv3Vrn//fffJzk5maeeeooBAwaE67QSBs6gUK0p9URERETqKixXC86ePZsxY8awd+9eTNPEbrfTpUsX+vTpQ+fOnbHZbJimSWZmJrfeemtgHmtpHIIuVFRPtYiIiEidhdxTvXfvXv7v//4Pn8/HUUcdxYMPPsg555yDzXbg0KWlpXzzzTf885//ZPv27TzyyCOcfPLJtG7dOtTTSxg4bNbAYw3/EBEREam7kHuq3333XUpKSujQoQMzZszg/PPPDwrUAFFRUVxwwQVMnz6djh07UlxczIwZM0I9tYSJxlSLiIiIhCbkUP39999jGAZ33303LVu2rLFsUlISf/vb3zBNk2+++SbUU0uYaPYPERERkdCEHKp37doFQL9+/WpVvrzczp07Qz21hIl6qkVERERC02DLGno8noY6tRzEqVAtIiIiEpKQQ3W7du0AWLp0aa3Kl5crf500PM3+ISIiIhKakEP1GWecgWmavPzyy+Tl5dVYNicnhwkTJmAYBmeccUa9z7l06VJGjRrF6aefzoknnsi1117LnDlz6nSMLVu28NBDD3HOOefQq1cvTj31VP7yl7/w7bffVvuauXPnMnz4cE455RT69u3LyJEj+fHHH+v9PhoLh+apFhEREQlJyKF6xIgROBwOtm/fzlVXXcWCBQvweoODmdfrZf78+VxzzTVs376dqKgobrzxxnqd7/PPP2fEiBEsXbqUnj17csopp7B69WruvvtuXnvttVodY/ny5QwbNoyPP/4Yu93OgAED6NixI9999x0333wzb7/9dqXXvPnmm9xxxx2sWbOGk08+mV69erFkyRJGjhzJxx9/XK/30ljYrRr+ISIiIhIKwzRNM9SDzJw5k8ceeyzw3OFw0LFjR2JiYigqKmL79u2UlJRQfqonn3ySK6+8ss7nycrK4rzzzsNisfDee+/Ru3dvADZt2sSIESPIysrik08+oUePHtUew+PxMHjwYHbt2sXdd9/NrbfeimEYgH8mkzFjxuD1evn000/p1q0bAOvWreOyyy4jJSWFadOm0aFDB8Afzm+55RZM02Tu3LmkpqbW+T1lZxfiOQJBNjW1BQAZGfmV9k1bsYuXFmwC4KzOLRl/ea/DXh+pv5raUpoWtWXzobZsXtSezUeobWmzWUhKiq1V2bBcqHjVVVcxYcIEWrVqhWmauFwu1q9fzy+//ML69etxuVyYpklqaiqvvvpqvQI1wNSpU3G5XFx//fWBQA2QlpbGPffcg2maTJ48ucZjLFmyhF27dtGrVy9uu+22QKAGOPPMM7nmmmvw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IvWjUC0B6qkWERERqR+FagnQlHoiIiIi9aNQLQHqqRYRERGpH4VqCXBYFapFRERE6kOhWgLUUy0iIiJSPwrVEqBQLSIiIlI/CtUSoCn1REREROpHoVoCgkO12YA1EREREWlaFKolwK6eahEREZF6UaiWAKfGVIuIiIjUi0K1BGjxFxEREZH6UaiWAM3+ISIiIlI/CtUSoFAtIiIiUj8K1RIQFKq9CtUiIiIitaVQLQHqqRYRERGpH4VqCdDiLyIiIiL1o1AtAZr9Q0RERKR+FKoloGJPdanXxOvTqooiIiIitaFQLQEVQzVAqS5WFBEREakVhWoJODhUuzQERERERKRWFKol4OBQrXHVIiIiIrWjUC0BNouBxTjwXKFaREREpHYUqiXAMAxNqyciIiJSDwrVEkTT6omIiIjUnUK1BLFbD4z/UKgWERERqR2FagnijFJPtYiIiEhdKVRLkOAx1QrVIiIiIrWhUC1BFKpFRERE6k6hWoJo9g8RERGRulOoliDBodpswJqIiIiINB0K1RLEblVPtYiIiEhdKVRLEI2pFhEREak7hWoJ4tTiLyIiIiJ1plAtQdRTLSIiIlJ3CtUSRKFaREREpO4UqiWIvWKo9ipUi4iIiNSGQrUECeqpLlWoFhEREakNhWoJosVfREREROpOoVqCODWmWkRERKTOFKoliENT6omIiIjUmUK1BKk4/MOtCxVFREREakWhWoJUnP3DpZ5qERERkVpRqJYgmqdaREREpO6aZKheunQpo0aN4vTTT+fEE0/k2muvZc6cOfU+ntvt5uKLL2b48OE1lps7dy7Dhw/nlFNOoW/fvowcOZIff/yx3udtjHShooiIiEjdNblQ/fnnnzNixAiWLl1Kz549OeWUU1i9ejV33303r732Wp2P5/P5ePjhh9m4cWON5d58803uuOMO1qxZw8knn0yvXr1YsmQJI0eO5OOPP67v22l0NKWeiIiISN3ZGroCdZGVlcUjjzxCdHQ07733Hr179wZg06ZNjBgxgtdee43zzz+fHj161Op4BQUFPPjgg8ydO7fGcuvWrWP8+PGkpqYybdo0OnToAMDy5cu55ZZbGDduHP379yc1NTW0N9gIaPYPERERkbprUj3VU6dOxeVycf311wcCNUBaWhr33HMPpmkyefLkQx7HNE2++OILLr30UubOnRsIydV55513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Q55XRERERJqvJhWqr7jiCqKjo5k0aRIrVqwIbN+8eTMTJkzAMAxGjhwZ2J6ens6mTZsCw0LAP+552LBhFBYW8thjjwXGQ5umyQsvvMDOnTsZNGhQYClygOHDh2OxWJgwYQKbN28ObF+xYgWTJk3C6XQGFooRERERkcjTpJYpB5gxYwaPPvooVquVfv36Ybfb+fHHHykpKeHee+9l9OjRgbIPPvggs2bN4vLLL+fZZ58NbM/Pz+faa69l48aNtG/fnl69erFhwwY2b95M+/bt+e9//1tpHuvx48czceJEHA4Hp59+Om63myVLluDz+XjhhRe45JJL6vV+NPuH1JXasvlQWzYfasvmRe3ZfGj2jxpcffXVtGnThrfeeotffvkFq9VKz549GTVqFIMHD67VMVq0aMG0adN4/fXX+frrr1mwYAGtW7fmuuuu469//WuVFzqOHTuWtLQ0pkyZwpIlS3A6nfTr149bb72Vfv36hfttioiIiEgT0uR6qpsb9VRLXaktmw+1ZfOhtmxe1J7Nx5HsqW5SY6pFRERERBojhWoRERERkRApVIuIiIiIhEihWkREREQkRArVIiIiIiIhUqgWEREREQmRQrWIiIiISIgUqkVEREREQqRQLSIiIiISIoVqEREREZEQ2Rq6ApHOaj2yn2tsNn2Oai7Uls2H2rL5UFs2L2rP5qO+bVmXnGaYpmnW6ywiIiIiIgJo+IeIiIiISMgUqkVEREREQqRQLSIiIiISIoVqEREREZEQKVSLiIiIiIRIoVpEREREJEQK1SIiIiIiIVKoFhEREREJkUK1iIiIiEiIFKpFREREREJka+gKyOG3dOlSJk6cyJo1a3C5XHTv3p0bb7yRiy66qKGrJofwySef8MADD/Duu+9yxhlnVNqfmZnJ66+/zrfffsu+fftITU3lwgsv5K9//SuxsbENUGOpyOfzMXPmTD7++GM2bNhAaWkp7dq14/zzz2fMmDHEx8cHlVd7Nl6lpaVMmTKFWbNmsXXrVmJiYujduzc33ngj/fv3r1Rebdk0uN1urrjiCtavX8/XX39Np06dgvarHRu3b775httuu63a/UOGDGH8+PGB54e7PQ3TNM2QjyKN1ueff87f//53bDYb/fr1w2q18uOPP+J2u7nzzju54447GrqKUo3ffvuNkSNHUlBQUGWoTk9P59prr2XXrl1069aNY445hlWrVrF79266d+/OBx98QFxcXAPVXnw+H3fddRdz587F6XTSp08fYmJi+O2339i/fz+dOnXigw8+ICUlBVB7NmamaXLnnXcyd+5c4uPjOemkkygpKWH58uWUlpZy9913B/3HrrZsOp599lneffddgEqhWu3Y+L322mu8+uqrnHLKKbRp06bS/hNPPJHrr78eOELtaUqzlZmZafbp08c84YQTzN9++y2wfePGjeYZZ5xhdu/e3VyzZk0D1lCqM3/+fLNv375mt27dzG7dupnff/99pTJ33nmn2a1bN/PFF18MbCspKTH/9re/md26dTOfeeaZI1llOciMGTPMbt26mYMHDza3b98e2J6fn2+OGTPG7Natm/m3v/0tsF3t2Xh98MEHZrdu3czLLrvM3L9/f2D7mjVrzJNOOsns3r27uXHjxsB2tWXT8OOPP5rdu3cP/J3dunVr0H61Y+N32223md26datVljkS7akx1c3Y1KlTcblcXH/99fTu3TuwPS0tjXvuuQfTNJk8eXID1lAOtm/fPh566CH++te/UlpaGujFPNj27duZO3cubdu25a677gpst9vt/OMf/yA2Npbp06fjcrmOVNXlIB999BEADz74IB06dAhsj4uL4+mnn8YwDObNm4fL5VJ7NnKffvop4G/LpKSkwPYePXpwySWXYJomixcvBvS72VTk5eXx4IMP0qlTJ1JTUyvtVzs2DX/88QcOh4MuXbrUWO5ItadCdTO2cOFCAAYNGlRp38CBAzEMg0WLFh3hWklNxo8fz8cff8xxxx3H9OnT6dy5c5XlFi9ejM/nY8CAAURFRQXta9GiBaeddhpFRUUsWbLkSFRbqpCYmEjnzp054YQTKu1r2bIlCQkJlJaWkp2drfZs5CZPnsynn37KKaecUmlfUVERAFarFdDvZlPxxBNPkJ6ezvPPP4/dbq+0X+3Y+GVnZ7Nnzx66d++OzVbzJYJHqj0VqpuxjRs3AlT5CS4xMZGUlBSysrLIyso60lWTanTu3JnnnnuOmTNn0r1792rLrV+/HoBu3bpVub+8zcvLyZE3ceJE5syZE9SzWW7Hjh3k5OQQFRVFy5Yt1Z6NnMPhoEePHoHgXG7evHn873//Izo6msGDBwP63WwKZs+ezezZsxk9ejTHH398lWXUjo3fH3/8AUDbtm154YUXuPDCC+nT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ERERkRCpp1pEJII9+OCDzJo1iyFDhjB+/HhmzJjBtGnT2LJlC3FxcXTt2pUbbriBgQMH1nichQsXMnPmTH799VdycnKIjY2lW7duDBkyhCuvvLLGISf79+9n5syZfPXVV+zcuZPi4mLatWtH//79+ctf/kLbtm2rfa3b7WbKlCnMnj2brVu3YrVaOeaYYxg6dCjDhw/HYlHfkYgcGYZpmmZDV0JEROqufPaP9u3b880339TrGBVDtcPhYNasWVWWGzZsGE8++SRWqzVoe3FxMffeey/z58+v9hzdunVj4sSJtG/fvtK+pUuXcvfdd5OVlVXla2NjY3njjTfo169fYFv57B9nnnkm+/fvZ82aNVW+9pxzzmHixIkYhlFt3UREwkUf4UVEhIULFzJr1iyOPfZY3n33XX766SdmzpzJOeecA8DHH3/MK6+8Uul199xzTyBQX3jhhUyfPp0lS5bw5ZdfMnr0aGw2G+vXr2fUqFEUFBQEvXbHjh2MHj2arKwskpOTeeKJJ1iwYAGLFy/mueeeIyUlhcLCQu66664qQ/f333/PmjVruPLKK5k1axbff/897777Lt26dQu8p08++SS8PygRkWooVIuINHGmaVJYWFirW3FxcZXHKCoqonv37kydOpUzzjiDpKQk+vTpwxtvvMG5554LwLvvvsvevXsDr1mwYEGgh/zGG2/k5Zdf5oQTTiAxMZG0tDTuvfde/vnPfwKwdetWXn/99aBzPv300xQXFxMXF8e0adO49tpradeuHa1bt2bo0KG8+eabWK1WcnJymDZtWpX1vuuuu3jqqafo2bMnKSkpnHHGGUyaNAmn0wnA119/HdoPV0SkljSmWkSkidu9ezcnnXRSrcrWNFTkkUceqTSLiMVi4f/+7/9YuHAhJSUlfP3114wYMQKAGTNmAJCcnMx9991X5TEvvPBCzjvvPL755htmzJjBvffei9VqJT8/n2+//RaAESNG0KlTp0qv7dWrFxdeeCF79+7F4XBU2h8XF8fo0aMrbU9OTuakk07ihx9+YMeOHTX8NEREwkc91SIiQmpqKqeeemqV+zp06EDXrl0B+OGHHwLbly1bBsC5556L3W6v9tgXXnghAPn5+axduxbwj6UuLS0NvL46L730Eh988AG33HJLpX29evWq9gLIlJQUAAoLC6s9tohIOKmnWkSkiQvlQsVy5eOQq9OpUyfWr1/Pvn37ACgoKCA/Px+AtLS0Gl9bcf+ePXs47rjjAscpP3Z9JCYmVruv/IJKr9dbr2OLiNSVeqpFRIS4uLga95ePUS4P0hV7gGNiYmp8bXR0dOBx+etyc3Or3F8XWhlSRBoThWoREcHtdte4v6ioCICkpCQgOEiX76tOVQG8YpCu7uJJEZGmRKFaRETYvn17jfu3bNkCEJhrOi4ujvj4eAA2bdpU42sr7m/Xrh1A0IIuNZ37hx9+4JVXXuGTTz5ByyqISGOmUC0iImzevLnamTK2bNnC5s2bARgwYAAAhmFw8sknA/6p9Wrq6f7qq68Afy91+djtE088MbAoS/ksIFWZMWMG//rXv/jXv/6lRVxEpFFTqBYREUzT5Pnnn6/UG+zxeHjyyScBSEhICFqu/OqrrwYgKyuLF198scrjzps3jwULFgBw+eWXB8ZBt2rVirPOOguAyZMns2fPnkqvXbt2LfPmzQNgyJAhobw9EZHDTqFaRKSJq8viL+W3qnz99dfcdttt/Pbbb+Tk5LBixQpuvvlmvvvuOwD+/ve/B4Z8gH+58PPOOw/wB+O7776bX3/9ldzcXDZt2sT48eO5++67Af+0fPfcc0/Q+R544AGcTic5OTlce+21fPrpp2RkZLBr1y4++ugjbr75ZkpLS0lNTWXUqFGH4ScnIhI+mlJPRKSJq8viL+WWLVsWFJCTk5Pp3r07CxYsCPQslzMMg3vvvZerrrqq0nFefPFF7rvvPr755hvmzJnDnDlzKpU57rjjePnllyvNMNK1a1def/117rrrLvbu3cv9999f6bWtWrXirbfeIiEhoU7vT0TkSFOoFhERbDYbb731Fu+99x4fffQRO3bsICUlhRNPPJFRo0Zx3HHHVfm62NhY3njjDebPn89HH30U6OVOSkqiS5cuXHbZZQwZMqTaxWHOPPNMvvrqK959910WLVrEzp078fl8dOzYkYEDBzJy5Mga56MWEWksDFOXU4uIRKwHH3yQWbNm0bp1axYvXtzQ1RERabI0plpEREREJEQK1SIiIiIiIVKoFhEREREJkUK1iIiIiEiIFKpFREREREKk2T9EREREREKknmoRERERkRApVIuIiIiIhEihWkREREQkRArVIiIiIiIhUqgWEREREQmRQrWIiIiISIgUqkVEREREQqRQLSIiIiISov8PoQSY/zqHdI4AAAAASUVORK5CYII=" 85 | }, 86 | "metadata": {}, 87 | "output_type": "display_data" 88 | } 89 | ], 90 | "source": [ 91 | "# model and loss can be downloaded in Release \"https://github.com/zxguocsu/GCMSFormer/releases/download/v1.0.0/Model_and_loss.zip\"\n", 92 | "model_path='./Model_and_loss'\n", 93 | "model_name='GCMSFormer'\n", 94 | "loss_name='loss'\n", 95 | "mz_range = (1, 1000)\n", 96 | "if check_model(model_path + '/' + model_name, model_path + '/' + loss_name):\n", 97 | " # load model\n", 98 | " m_state_dict = torch.load(model_path + '/' + model_name + '.pt')\n", 99 | " model = make_model(tgt_vacob, N=3, d_model=1000, d_ff=1024, h=8, dropout=0.1)\n", 100 | " model.load_state_dict(m_state_dict)\n", 101 | " # load loss\n", 102 | " with open(model_path + '/' + loss_name +'.pk', 'rb') as file_1:\n", 103 | " loss = pickle.load(file_1)\n", 104 | " plot_loss(loss)\n", 105 | "else:\n", 106 | " para = {'name': 'Library/spectra.msp', # can be downloaded in Release\n", 107 | " 'mz_range': mz_range,\n", 108 | " 'aug_num': 100000,\n", 109 | " 'layer_num': 3,\n", 110 | " 'batch': 20,\n", 111 | " 'epoch': 50,\n", 112 | " 'lr': 0.0001,\n", 113 | " 'head': 8,\n", 114 | " 'model_path': model_path,\n", 115 | " 'model_name': model_name,\n", 116 | " 'loss_name': loss_name}\n", 117 | " # Generating Dataset\n", 118 | " TRAIN, VALID, TEST, tgt_vacob = gen_datasets(para)\n", 119 | " # Train model\n", 120 | " model, Loss = train_model(para,TRAIN, VALID, tgt_vacob)\n", 121 | " plot_loss(Loss) \n", 122 | " # Test model\n", 123 | " score=evaluate_model(model,TEST,tgt_vacob,int(max(para['mz_range'])))" 124 | ] 125 | }, 126 | { 127 | "cell_type": "markdown", 128 | "id": "a2f09a77", 129 | "metadata": {}, 130 | "source": [ 131 | "## GCMSFormer resolution of plant essential oil datasets" 132 | ] 133 | }, 134 | { 135 | "cell_type": "code", 136 | "execution_count": 5, 137 | "id": "9d3878b7", 138 | "metadata": { 139 | "ExecuteTime": { 140 | "end_time": "2023-12-16T05:01:06.663607700Z", 141 | "start_time": "2023-12-16T04:59:59.416029800Z" 142 | } 143 | }, 144 | "outputs": [ 145 | { 146 | "name": "stderr", 147 | "output_type": "stream", 148 | "text": [ 149 | "1-0.2.CDF: 100%|██████████| 15/15 [00:07<00:00, 1.95it/s]\n", 150 | "1-0.4.CDF: 100%|██████████| 18/18 [00:09<00:00, 1.82it/s]\n", 151 | "1-0.6.CDF: 100%|██████████| 19/19 [00:09<00:00, 1.92it/s]\n", 152 | "1-0.8.CDF: 100%|██████████| 21/21 [00:11<00:00, 1.86it/s]\n", 153 | "1-1.0.CDF: 100%|██████████| 22/22 [00:12<00:00, 1.73it/s]\n" 154 | ] 155 | }, 156 | { 157 | "name": "stdout", 158 | "output_type": "stream", 159 | "text": [ 160 | "Running time: 67.24s\n" 161 | ] 162 | } 163 | ], 164 | "source": [ 165 | "# Test GCMSFormer\n", 166 | "devices = torch.device('cpu')\n", 167 | "model = model.to(devices)\n", 168 | "start = time.time()\n", 169 | "path = './Essential.Oil.Data' # can be downloaded in Release \"https://github.com/zxguocsu/GCMSFormer/releases/download/v1.0.0/Essential.Oil.Data.zip\"\n", 170 | "files = os.listdir(path)\n", 171 | "Alignment_or_not = True\n", 172 | "if Alignment_or_not:\n", 173 | " df0, N0 = Alignment(path,files,model,tgt_vacob.to(devices),devices)\n", 174 | " df0.to_csv(path + '/' + 'plant essential oil.csv', index=False)\n", 175 | "else:\n", 176 | " for filename in files:\n", 177 | " ncr = netcdf_reader(path + '/' + filename, True)\n", 178 | " sta_S, area, rt, R2 = Resolution(path,filename,model,tgt_vacob.to(devices),devices)\n", 179 | " msp = filename.split('.CDF')[0] + '.MSP'\n", 180 | " output_msp(path + '/'+ msp, sta_S, rt)\n", 181 | " csv = filename.split('.CDF')[0] + '.csv'\n", 182 | " df = pd.DataFrame({'rt': rt, 'area': area, 'R2': R2})\n", 183 | " df.to_csv(path + '/' + csv, index = False)\n", 184 | "end = time.time()\n", 185 | "print(\"Running time: %.2fs\"%(end - start))" 186 | ] 187 | }, 188 | { 189 | "cell_type": "code", 190 | "execution_count": null, 191 | "outputs": [], 192 | "source": [], 193 | "metadata": { 194 | "collapsed": false 195 | } 196 | } 197 | ], 198 | "metadata": { 199 | "kernelspec": { 200 | "display_name": "Python 3 (ipykernel)", 201 | "language": "python", 202 | "name": "python3" 203 | }, 204 | "language_info": { 205 | "codemirror_mode": { 206 | "name": "ipython", 207 | "version": 3 208 | }, 209 | "file_extension": ".py", 210 | "mimetype": "text/x-python", 211 | "name": "python", 212 | "nbconvert_exporter": "python", 213 | "pygments_lexer": "ipython3", 214 | "version": "3.7.12" 215 | } 216 | }, 217 | "nbformat": 4, 218 | "nbformat_minor": 5 219 | } 220 | -------------------------------------------------------------------------------- /AMDIS/plant essential oil.ELU: -------------------------------------------------------------------------------- 1 | NAME: |SC38|CN1|MP1-MODN:43(%94.3)|AM290119|PC93|SN677|WD6.6|TA1.1|TR779.1|FR31-44|RT3.1233|MN0.0063|RA5.29|IS8453480|XN9436465|MO20: 43 71 57 41 56 70 100 42 29 55 39 72 85 44 58 101 40 53 69 54|EW2-3|FG1.000|TN4.772|OR1|NT1 2 | RE 3 | 0 119286 338586 645661 968449 4 | 1209007 1306393 1246581 1046824 760338 5 | 467209 236063 91712 17372 6 | NUM PEAKS: 39 7 | (29,168 )(30,4 )(37,1 )(38,4 )(39,102 ) 8 | (40,20 )(41,499 )(42,203 )(43,999 )(44,34 ) 9 | (45,1 )(50,3 )(51,7 )(52,3 )(53,19 ) 10 | (54,7 )(55,138 )(56,387 )(57,614 )(58,27 ) 11 | (62,1 )(63,1 )(65,3 )(66,1 )(67,4 ) 12 | (68,1 )(69,9 )(70,372 )(71,737 )(72,41 ) 13 | (73,1 )(77,1 )(79,1 )(84,4 )(85,37 ) 14 | (86,2 )(100,288 )(101,23 )(102,1 ) 15 | 16 | NAME: |SC115|CN2|MP1-MODN:83(%87.5)|AM1281|PC20|SN41|WD6.4|TA1.0|TR6.1|FR107-121|RT3.3797|MN1.4|RA0.0189|IS28891|XN33829|MO3: 83 55 98|EW4-3|FG0.700|TN4.042|OR1|NT0 17 | RE 18 | 32 265 667 1376 2430 19 | 3475 4197 4531 4172 3276 20 | 2239 1355 673 203 0 21 | NUM PEAKS: 123 22 | (39,163 )(41,253 )(42,188 )(53,76 )(55,842 ) 23 | (56,237 )(67,60 )(68,103 )(69,180 )(70,160 ) 24 | (82,186 )(83,999 )(84,62 )(98,470 )(99,62 ) 25 | (29,71 N0.3)(30,18 N0.3)(31,23 N0.3)(34,16 N0.3)(37,23 N0.3) 26 | (40,27 N0.4)(46,17 N0.4)(47,8 N0.5)(50,13 N0.4)(51,17 N0.4) 27 | (52,20 N0.3)(54,45 N0.2)(59,9 N0.5)(61,10 N0.5)(73,18 N0.3) 28 | (76,13 N0.4)(78,23 N0.3)(79,20 N0.3)(80,24 N0.3)(81,19 N0.3) 29 | (85,25 N0.3)(97,21 N0.3)(104,10 N0.5)(105,22 N0.3)(108,21 N0.3) 30 | (114,13 N0.4)(120,13 N0.4)(125,31 N0.2)(126,11 N0.4)(130,14 N0.4) 31 | (138,13 N0.4)(144,13 N0.4)(151,12 N0.4)(157,17 N0.4)(165,9 N0.4) 32 | (169,7 N0.5)(175,12 N0.4)(179,17 N0.3)(180,12 N0.4)(182,15 N0.4) 33 | (185,14 N0.4)(190,9 N0.4)(194,21 N0.3)(201,20 N0.3)(205,15 N0.4) 34 | (209,11 N0.4)(218,22 N0.3)(225,16 N0.4)(226,26 N0.3)(234,11 N0.4) 35 | (237,13 N0.4)(245,13 N0.4)(255,14 N0.4)(256,15 N0.4)(266,8 N0.5) 36 | (272,12 N0.4)(274,9 N0.5)(281,10 N0.4)(291,27 N0.3)(295,13 N0.4) 37 | (296,12 N0.4)(297,11 N0.4)(299,20 N0.3)(304,13 N0.4)(306,11 N0.4) 38 | (308,14 N0.4)(314,10 N0.4)(315,26 N0.3)(316,13 N0.4)(326,11 N0.5) 39 | (328,15 N0.4)(330,7 N0.5)(331,10 N0.4)(334,15 N0.3)(335,21 N0.3) 40 | (343,10 N0.5)(344,13 N0.4)(348,23 N0.3)(349,9 N0.5)(353,21 N0.3) 41 | (355,12 N0.4)(359,13 N0.3)(361,10 N0.4)(364,16 N0.4)(365,17 N0.3) 42 | (386,20 N0.3)(387,17 N0.4)(388,15 N0.4)(392,22 N0.3)(396,27 N0.3) 43 | (401,13 N0.4)(402,13 N0.4)(403,20 N0.3)(405,8 N0.5)(412,10 N0.4) 44 | (417,9 N0.5)(427,20 N0.3)(430,14 N0.4)(444,8 N0.5)(449,15 N0.4) 45 | (455,10 N0.4)(465,16 N0.3)(482,12 N0.4)(485,13 N0.4)(486,13 N0.4) 46 | (487,9 N0.4)(495,16 N0.4)(497,13 N0.4) 47 | 48 | NAME: |SC769|CN3|MP1-MODN:73(%96.5)|AM320544|PC95|SN481|WD8.5|TA1.1|TR381.3|FR759-777|RT5.5587|MN0.0057|RA3.53|IS5846155|XN6311036|MO20: 73 41 43 103 85 69 55 33 57 74 45 56 53 71 29 31 39 42 59 67|EW2-2|FG1.000|TN2.181|OR1|NT0 49 | RE 50 | 0 32661 90004 173264 280536 51 | 401968 516744 608933 666702 675275 52 | 629363 540362 427126 309596 207183 53 | 130440 79431 47954 28613 54 | NUM PEAKS: 47 55 | (29,37 )(30,2 )(31,36 )(33,48 )(34,1 ) 56 | (37,1 )(38,2 )(39,34 )(40,8 )(41,140 ) 57 | (42,24 )(43,144 )(44,6 )(45,45 )(46,1 ) 58 | (50,1 )(51,3 )(52,1 )(53,42 )(54,3 ) 59 | (55,63 )(56,43 )(57,47 )(58,4 )(59,19 ) 60 | (60,1 )(61,2 )(63,1 )(65,2 )(67,11 ) 61 | (68,8 )(69,82 )(70,9 )(71,36 )(72,10 ) 62 | (73,999 )(74,44 )(75,3 )(83,1 )(84,1 ) 63 | (85,97 )(86,7 )(87,5 )(88,1 )(101,1 ) 64 | (103,99 )(104,5 ) 65 | 66 | NAME: |SC870|CN4|MP1-MODN:93(%95.0)|AM1548|PC32|SN44|WD7.4|TA1.2|TR4.5|FR861-878|RT5.8960|MN1.1|RA0.0251|IS42402|XN44845|MO4: 93 91 92 77|EW1-2|FG0.789|TN3.780|OR1|NT0 67 | RE 68 | 0 290 834 1582 2424 69 | 3402 4528 5386 5557 5199 70 | 4492 3466 2365 1464 816 71 | 395 165 35 72 | NUM PEAKS: 92 73 | (39,115 )(41,128 )(51,69 )(65,84 )(67,71 ) 74 | (77,349 )(78,52 )(79,270 )(80,104 )(91,604 ) 75 | (92,483 )(93,999 )(94,86 )(105,100 )(106,42 ) 76 | (107,49 )(121,104 )(136,68 )(29,18 N0.5)(31,13 N0.4) 77 | (35,11 N0.4)(37,11 N0.4)(42,17 N0.5)(45,14 N0.4)(46,19 N0.3) 78 | (50,30 N0.2)(52,28 N0.2)(53,55 N0.2)(54,13 N0.4)(55,34 N0.3) 79 | (56,22 N0.5)(63,16 N0.3)(64,13 N0.4)(66,20 N0.3)(68,20 N0.3) 80 | (69,16 N0.4)(74,11 N0.4)(81,22 N0.3)(89,16 N0.3)(90,11 N0.4) 81 | (95,10 N0.5)(102,12 N0.4)(103,28 N0.3)(108,13 N0.4)(113,6 N0.4) 82 | (115,14 N0.4)(119,37 N0.2)(137,9 N0.4)(151,9 N0.4)(154,12 N0.3) 83 | (156,7 N0.5)(167,10 N0.4)(180,10 N0.3)(193,10 N0.4)(196,10 N0.4) 84 | (222,14 N0.4)(253,11 N0.4)(264,12 N0.4)(265,12 N0.4)(267,12 N0.4) 85 | (276,10 N0.3)(279,14 N0.3)(287,6 N0.4)(338,7 N0.4)(350,9 N0.4) 86 | (369,8 N0.5)(375,11 N0.4)(392,10 N0.4)(395,10 N0.4)(397,11 N0.4) 87 | (399,15 N0.3)(409,6 N0.5)(411,6 N0.5)(423,17 N0.3)(428,8 N0.4) 88 | (431,8 N0.4)(436,11 N0.4)(437,10 N0.4)(439,5 N0.5)(450,9 N0.4) 89 | (453,11 N0.3)(456,13 N0.4)(463,6 N0.5)(464,11 N0.4)(467,12 N0.4) 90 | (477,9 N0.4)(479,7 N0.4)(481,14 N0.3)(485,16 N0.3)(491,14 N0.3) 91 | (494,9 N0.4)(497,10 N0.4) 92 | 93 | NAME: |SC1080|CN5|MP1-MODN:94(%92.8)|AM4488|PC56|SN77|WD7.4|TA1.3|TR0.4|FR1072-1088|RT6.5963|MN0.40|RA0.0752|IS118927|XN134242|MO1: 94|EW4-3|FG0.872|TN3.952|OR1|NT0 94 | RE 95 | 0 1061 3019 5413 8922 96 | 12622 15451 16457 14716 12105 97 | 10310 8052 5196 2802 1578 98 | 1006 218 99 | NUM PEAKS: 134 100 | (39,127 )(41,312 )(51,46 )(52,23 )(53,77 ) 101 | (55,47 )(63,18 )(65,73 )(66,15 )(67,120 ) 102 | (68,29 )(69,303 )(77,271 )(78,50 )(79,263 ) 103 | (80,144 )(81,18 )(91,393 )(92,130 )(93,999 ) 104 | (94,135 )(95,15 )(105,38 )(106,14 )(107,56 ) 105 | (108,23 )(121,114 )(122,20 )(136,75 )(29,22 N0.2) 106 | (31,5 N0.4)(32,28 N0.4)(35,4 N0.4)(36,3 N0.4)(38,8 N0.3) 107 | (40,14 N0.3)(42,11 N0.3)(43,27 N0.2)(50,13 N0.3)(54,9 N0.3) 108 | (58,7 N0.3)(59,7 N0.3)(70,16 N0.2)(74,7 N0.3)(75,4 N0.4) 109 | (76,5 N0.4)(82,5 N0.3)(84,5 N0.3)(89,5 N0.3)(90,3 N0.4) 110 | (97,4 N0.4)(102,4 N0.4)(103,7 N0.3)(109,5 N0.3)(111,3 N0.4) 111 | (114,4 N0.4)(115,8 N0.3)(119,10 N0.2)(126,4 N0.4)(128,4 N0.4) 112 | (137,10 N0.3)(145,3 N0.4)(152,6 N0.3)(155,3 N0.5)(161,5 N0.3) 113 | (171,3 N0.4)(173,2 N0.5)(179,2 N0.5)(180,6 N0.3)(185,6 N0.4) 114 | (188,4 N0.4)(192,4 N0.4)(195,4 N0.3)(204,4 N0.4)(206,4 N0.4) 115 | (218,4 N0.4)(225,3 N0.4)(254,6 N0.3)(256,4 N0.3)(258,3 N0.4) 116 | (262,4 N0.4)(265,6 N0.3)(267,4 N0.4)(270,5 N0.3)(274,2 N0.5) 117 | (281,4 N0.4)(287,4 N0.3)(299,3 N0.5)(302,2 N0.5)(305,3 N0.4) 118 | (308,4 N0.4)(309,5 N0.4)(313,5 N0.3)(317,5 N0.3)(327,4 N0.4) 119 | (334,7 N0.3)(335,5 N0.3)(336,5 N0.3)(337,7 N0.3)(340,4 N0.4) 120 | (341,3 N0.4)(346,4 N0.4)(350,3 N0.4)(352,6 N0.3)(357,4 N0.3) 121 | (358,6 N0.3)(359,4 N0.4)(360,4 N0.3)(361,5 N0.4)(363,5 N0.3) 122 | (370,6 N0.3)(373,7 N0.3)(378,5 N0.4)(388,4 N0.3)(395,4 N0.4) 123 | (407,4 N0.4)(411,4 N0.4)(413,4 N0.4)(425,5 N0.3)(428,6 N0.3) 124 | (429,5 N0.3)(440,2 N0.4)(445,4 N0.4)(448,4 N0.4)(449,5 N0.3) 125 | (455,3 N0.4)(460,4 N0.3)(462,3 N0.5)(466,3 N0.4)(470,3 N0.4) 126 | (476,5 N0.3)(481,5 N0.3)(488,3 N0.4)(494,3 N0.5) 127 | 128 | NAME: |SC1308|CN6|MP1-MODN:68(%96.4)|AM8462|PC81|SN142|WD8.2|TA1.1|TR62.8|FR1298-1316|RT7.3570|MN0.21|RA0.289|IS494714|XN515874|MO19: 68 67 93 94 79 92 121 107 136 53 77 80 39 41 81 95 65 108 105|EW1-2|FG0.968|TN7.150|OR1|NT0 129 | RE 130 | 0 1670 4919 10564 18402 131 | 28125 38743 48239 55301 58315 132 | 56068 49306 39994 30236 21470 133 | 14588 9545 5849 3381 134 | NUM PEAKS: 134 135 | (29,39 )(39,178 )(40,57 )(41,182 )(42,28 ) 136 | (43,30 )(50,23 )(51,74 )(52,31 )(53,224 ) 137 | (54,17 )(55,72 )(63,28 )(65,99 )(66,36 ) 138 | (67,898 )(68,999 )(69,71 )(77,227 )(78,58 ) 139 | (79,451 )(80,154 )(81,109 )(82,22 )(91,308 ) 140 | (92,330 )(93,849 )(94,444 )(95,104 )(103,18 ) 141 | (104,8 )(105,84 )(106,26 )(107,254 )(108,76 ) 142 | (115,11 )(119,21 )(121,249 )(122,24 )(136,209 ) 143 | (137,21 )(32,12 N0.4)(38,8 N0.2)(44,2 N0.5)(45,3 N0.3) 144 | (58,8 N0.2)(59,2 N0.4)(62,6 N0.2)(64,5 N0.2)(74,3 N0.4) 145 | (75,2 N0.5)(76,2 N0.4)(83,2 N0.4)(89,6 N0.2)(90,2 N0.3) 146 | (96,7 N0.2)(97,2 N0.4)(102,4 N0.3)(109,6 N0.2)(111,3 N0.3) 147 | (116,3 N0.4)(117,5 N0.3)(118,2 N0.4)(120,5 N0.2)(124,2 N0.4) 148 | (130,1 N0.4)(134,2 N0.4)(135,4 N0.3)(140,2 N0.5)(143,3 N0.3) 149 | (145,3 N0.4)(146,2 N0.4)(156,1 N0.4)(159,1 N0.4)(179,2 N0.4) 150 | (181,2 N0.4)(183,1 N0.5)(186,1 N0.4)(195,3 N0.3)(198,2 N0.4) 151 | (201,3 N0.3)(203,2 N0.3)(204,2 N0.4)(210,3 N0.3)(233,2 N0.3) 152 | (240,2 N0.4)(242,1 N0.5)(246,1 N0.5)(252,1 N0.4)(255,2 N0.3) 153 | (256,2 N0.4)(265,1 N0.4)(270,2 N0.4)(274,1 N0.5)(276,3 N0.3) 154 | (278,2 N0.4)(281,2 N0.4)(285,2 N0.4)(289,3 N0.3)(290,2 N0.4) 155 | (294,2 N0.4)(303,1 N0.5)(327,3 N0.3)(329,2 N0.4)(331,1 N0.4) 156 | (341,1 N0.4)(342,1 N0.5)(352,2 N0.4)(354,2 N0.3)(358,2 N0.4) 157 | (376,2 N0.4)(378,3 N0.3)(393,2 N0.4)(395,2 N0.3)(397,2 N0.4) 158 | (399,3 N0.3)(401,2 N0.4)(403,2 N0.4)(405,1 N0.5)(408,2 N0.3) 159 | (411,3 N0.3)(413,2 N0.4)(421,1 N0.4)(431,2 N0.4)(442,2 N0.3) 160 | (451,2 N0.4)(455,3 N0.3)(460,1 N0.5)(473,2 N0.5)(482,2 N0.4) 161 | (486,2 N0.4)(487,2 N0.3)(493,2 N0.5)(497,2 N0.4) 162 | 163 | NAME: |SC1381|CN7|MP1-MODN:73(%88.6)|AM1030|PC10|SN23|WD8.4|TA1.4|TR0.6|FR1372-1391|RT7.6013|MN1.7|RA0.00748|IS12754|XN13345|MO1: 73|EW1-1|FG0.454|TN1.571|OR1|NT0 164 | RE 165 | 0 70 159 252 471 166 | 751 1028 1290 1434 1422 167 | 1323 1155 951 733 549 168 | 376 259 220 194 120 169 | NUM PEAKS: 92 170 | (45,479 )(69,92 )(73,999 )(29,24 N0.5)(33,43 N0.2) 171 | (34,12 N0.5)(39,34 N0.3)(40,35 N0.4)(42,23 N0.4)(46,16 N0.4) 172 | (48,10 N0.5)(49,36 N0.2)(55,34 N0.4)(59,54 N0.2)(61,18 N0.4) 173 | (62,13 N0.4)(63,27 N0.3)(64,18 N0.3)(66,10 N0.5)(74,36 N0.3) 174 | (75,30 N0.3)(76,11 N0.4)(80,42 N0.2)(81,38 N0.3)(85,103 N0.2) 175 | (86,54 N0.3)(87,37 N0.3)(91,17 N0.4)(92,18 N0.4)(97,11 N0.5) 176 | (99,36 N0.3)(106,14 N0.4)(115,26 N0.3)(116,12 N0.5)(122,11 N0.5) 177 | (124,17 N0.3)(141,13 N0.4)(143,17 N0.3)(158,21 N0.3)(165,29 N0.3) 178 | (166,9 N0.4)(181,26 N0.3)(191,18 N0.4)(193,21 N0.3)(200,17 N0.4) 179 | (203,14 N0.4)(206,37 N0.3)(208,16 N0.4)(212,15 N0.4)(216,13 N0.4) 180 | (223,21 N0.3)(224,27 N0.3)(231,18 N0.4)(233,9 N0.5)(235,18 N0.4) 181 | (237,15 N0.5)(239,13 N0.4)(241,14 N0.4)(247,14 N0.4)(250,18 N0.3) 182 | (258,12 N0.4)(265,10 N0.5)(266,13 N0.4)(272,9 N0.5)(273,14 N0.4) 183 | (283,10 N0.5)(287,27 N0.3)(293,15 N0.5)(311,12 N0.4)(319,20 N0.4) 184 | (324,16 N0.4)(334,20 N0.4)(345,30 N0.3)(361,16 N0.4)(372,10 N0.5) 185 | (373,18 N0.4)(374,12 N0.4)(376,11 N0.5)(379,11 N0.4)(391,29 N0.3) 186 | (402,14 N0.4)(405,13 N0.4)(407,23 N0.3)(412,19 N0.4)(439,12 N0.5) 187 | (449,12 N0.4)(457,13 N0.4)(471,18 N0.4)(472,40 N0.2)(479,18 N0.4) 188 | (490,17 N0.4)(495,22 N0.3) 189 | 190 | NAME: |SC1439|CN8|MP1-MODN:93(%94.1)|AM1319|PC31|SN44|WD8.4|TA1.3|TR2.1|FR1430-1448|RT7.7933|MN1.3|RA0.0274|IS46493|XN49002|MO2: 93 91|EW2-1|FG0.701|TN4.397|OR1|NT0 191 | RE 192 | 0 291 833 1712 2679 193 | 3618 4478 5195 5462 5236 194 | 4670 3820 2909 2072 1350 195 | 894 561 413 301 196 | NUM PEAKS: 136 197 | (39,101 )(41,121 )(43,140 )(51,84 )(65,128 ) 198 | (77,433 )(78,73 )(79,276 )(80,73 )(91,704 ) 199 | (92,284 )(93,999 )(94,105 )(105,148 )(107,83 ) 200 | (119,122 )(121,234 )(136,285 )(29,19 N0.4)(37,12 N0.4) 201 | (38,9 N0.5)(46,14 N0.3)(50,11 N0.5)(52,27 N0.3)(53,35 N0.3) 202 | (55,47 N0.2)(58,17 N0.4)(59,18 N0.4)(60,10 N0.4)(63,32 N0.3) 203 | (66,14 N0.4)(67,23 N0.3)(75,33 N0.2)(83,11 N0.4)(84,18 N0.3) 204 | (89,9 N0.5)(103,38 N0.3)(104,11 N0.5)(106,23 N0.3)(111,16 N0.4) 205 | (115,40 N0.2)(116,13 N0.4)(117,36 N0.2)(122,33 N0.2)(124,8 N0.5) 206 | (131,12 N0.4)(134,35 N0.3)(137,42 N0.2)(147,10 N0.4)(149,13 N0.4) 207 | (150,16 N0.3)(157,12 N0.3)(158,15 N0.4)(163,10 N0.4)(170,10 N0.4) 208 | (171,7 N0.5)(172,8 N0.5)(177,14 N0.4)(179,10 N0.4)(182,14 N0.4) 209 | (184,15 N0.4)(186,17 N0.4)(189,14 N0.4)(190,28 N0.3)(194,14 N0.3) 210 | (196,9 N0.4)(197,14 N0.4)(204,9 N0.4)(205,9 N0.4)(206,11 N0.4) 211 | (209,17 N0.4)(211,27 N0.3)(212,11 N0.4)(213,14 N0.4)(215,22 N0.3) 212 | (217,12 N0.4)(218,11 N0.4)(221,9 N0.4)(223,21 N0.3)(225,12 N0.4) 213 | (226,11 N0.4)(228,13 N0.4)(229,11 N0.4)(232,13 N0.4)(233,7 N0.5) 214 | (240,28 N0.3)(247,14 N0.3)(250,21 N0.3)(252,26 N0.3)(257,20 N0.3) 215 | (262,8 N0.5)(267,25 N0.3)(268,12 N0.4)(273,15 N0.4)(277,13 N0.4) 216 | (282,15 N0.3)(283,11 N0.4)(290,12 N0.4)(304,8 N0.5)(306,11 N0.4) 217 | (313,14 N0.4)(315,11 N0.5)(316,9 N0.4)(322,18 N0.3)(332,23 N0.3) 218 | (335,9 N0.4)(336,15 N0.4)(356,12 N0.5)(360,12 N0.4)(371,13 N0.3) 219 | (374,11 N0.4)(375,11 N0.4)(376,18 N0.3)(378,13 N0.4)(379,9 N0.4) 220 | (381,9 N0.5)(386,18 N0.4)(408,12 N0.4)(410,12 N0.4)(414,14 N0.3) 221 | (419,10 N0.4)(420,14 N0.4)(424,15 N0.3)(426,8 N0.5)(440,10 N0.4) 222 | (449,15 N0.3)(453,17 N0.4)(461,10 N0.4)(465,9 N0.4)(467,18 N0.3) 223 | (468,16 N0.3)(476,15 N0.4)(481,15 N0.3)(482,11 N0.4)(485,11 N0.4) 224 | (498,15 N0.4) 225 | 226 | NAME: |SC2386|CN9|MP1-MODN:71(%88.6)|AM1105|PC33|SN42|WD7.6|TA1.1|TR3.3|FR2377-2393|RT10.9493|MN1.6|RA0.0209|IS35928|XN37340|MO4: 71 57 85 43|EW1-1|FG0.766|TN4.773|OR1|NT2 227 | RE 228 | 40 267 667 1375 2184 229 | 3065 3953 4578 4670 4378 230 | 3830 2976 1982 1116 619 231 | 227 0 232 | NUM PEAKS: 99 233 | (39,82 )(41,262 )(43,700 )(55,190 )(56,120 ) 234 | (57,920 )(69,160 )(70,190 )(71,999 )(83,74 ) 235 | (84,135 )(85,633 )(99,164 )(113,88 )(127,50 ) 236 | (29,80 N0.2)(34,17 N0.4)(35,12 N0.4)(42,53 N0.3)(44,24 N0.4) 237 | (47,15 N0.4)(51,17 N0.4)(53,23 N0.3)(58,42 N0.3)(63,17 N0.4) 238 | (67,26 N0.3)(72,37 N0.3)(79,24 N0.4)(86,24 N0.4)(89,25 N0.3) 239 | (92,15 N0.4)(94,17 N0.4)(95,20 N0.4)(98,11 N0.4)(100,20 N0.3) 240 | (107,12 N0.5)(112,13 N0.3)(126,33 N0.2)(128,23 N0.3)(142,14 N0.4) 241 | (150,12 N0.4)(155,27 N0.3)(184,13 N0.4)(189,9 N0.4)(192,16 N0.3) 242 | (215,15 N0.4)(219,17 N0.3)(225,11 N0.4)(227,16 N0.4)(228,14 N0.3) 243 | (235,9 N0.4)(244,13 N0.4)(249,10 N0.4)(251,13 N0.4)(253,18 N0.3) 244 | (254,9 N0.4)(257,16 N0.4)(258,12 N0.4)(260,9 N0.5)(261,11 N0.4) 245 | (276,27 N0.3)(277,16 N0.4)(279,12 N0.4)(281,13 N0.4)(285,14 N0.4) 246 | (286,8 N0.4)(289,12 N0.4)(291,11 N0.4)(294,14 N0.4)(296,11 N0.5) 247 | (309,12 N0.4)(315,17 N0.4)(316,30 N0.3)(320,20 N0.3)(333,23 N0.3) 248 | (337,11 N0.5)(343,14 N0.4)(357,15 N0.4)(358,22 N0.3)(359,20 N0.3) 249 | (360,14 N0.4)(363,13 N0.4)(368,14 N0.4)(375,18 N0.4)(377,9 N0.5) 250 | (382,11 N0.4)(398,15 N0.3)(405,9 N0.4)(409,11 N0.4)(411,12 N0.4) 251 | (418,10 N0.5)(420,21 N0.3)(444,10 N0.5)(455,13 N0.4)(459,12 N0.4) 252 | (462,15 N0.4)(466,15 N0.4)(493,17 N0.4)(498,13 N0.4) 253 | 254 | NAME: |SC2685|CN10|MP1-MODN:121(%94.4)|AM1020|PC34|SN43|WD7.7|TA1.1|TR2.3|FR2676-2693|RT11.9447|MN1.7|RA0.0252|IS41957|XN45059|MO2: 121 93|EW1-1|FG0.670|TN5.544|OR1|NT0 255 | RE 256 | 253 574 1086 1790 2733 257 | 3587 4544 5291 5342 4868 258 | 4024 3062 2113 1383 722 259 | 404 181 0 260 | NUM PEAKS: 145 261 | (39,97 )(41,196 )(43,111 )(65,126 )(77,286 ) 262 | (78,91 )(79,268 )(81,75 )(91,489 )(92,125 ) 263 | (93,941 )(94,136 )(105,312 )(106,60 )(107,156 ) 264 | (115,85 )(119,124 )(121,999 )(136,429 )(137,63 ) 265 | (159,75 )(161,227 )(162,68 )(29,18 N0.5)(33,14 N0.4) 266 | (40,37 N0.4)(42,20 N0.4)(49,26 N0.3)(50,16 N0.4)(51,59 N0.2) 267 | (52,26 N0.3)(53,58 N0.2)(55,83 N0.2)(60,10 N0.5)(61,23 N0.3) 268 | (62,19 N0.4)(63,44 N0.2)(64,23 N0.3)(66,26 N0.3)(67,59 N0.2) 269 | (69,49 N0.2)(73,32 N0.3)(74,33 N0.3)(76,11 N0.5)(80,28 N0.3) 270 | (82,11 N0.4)(85,27 N0.3)(87,13 N0.4)(90,13 N0.4)(95,20 N0.4) 271 | (97,24 N0.3)(103,52 N0.2)(104,14 N0.4)(108,39 N0.3)(111,27 N0.3) 272 | (117,102 B0.1)(118,18 N0.4)(122,61 N0.2)(123,31 N0.2)(125,11 N0.4) 273 | (126,22 N0.3)(127,37 N0.3)(128,44 N0.3)(129,27 N0.3)(131,17 N0.5) 274 | (132,42 N0.3)(133,60 N0.2)(134,31 N0.3)(141,18 N0.4)(142,15 N0.4) 275 | (145,31 N0.3)(147,15 N0.4)(148,13 N0.4)(149,22 N0.3)(154,16 N0.3) 276 | (156,12 N0.4)(160,27 N0.3)(166,15 N0.4)(171,19 N0.3)(172,12 N0.4) 277 | (176,18 N0.4)(179,12 N0.4)(181,21 N0.3)(183,16 N0.4)(184,22 N0.3) 278 | (185,39 N0.3)(186,31 N0.2)(189,33 N0.3)(190,10 N0.4)(193,8 N0.5) 279 | (200,22 N0.3)(215,25 N0.3)(225,11 N0.5)(226,17 N0.3)(230,17 N0.4) 280 | (236,16 N0.4)(238,12 N0.4)(239,10 N0.5)(240,18 N0.4)(253,14 N0.4) 281 | (260,13 N0.4)(262,10 N0.5)(268,18 N0.4)(278,9 N0.5)(291,26 N0.3) 282 | (299,11 N0.5)(300,21 N0.4)(301,12 N0.4)(302,13 N0.4)(312,9 N0.5) 283 | (316,31 N0.3)(318,13 N0.4)(326,10 N0.5)(327,9 N0.4)(341,19 N0.4) 284 | (348,13 N0.5)(354,15 N0.4)(359,11 N0.5)(363,24 N0.3)(375,13 N0.4) 285 | (385,16 N0.3)(389,16 N0.4)(390,12 N0.4)(397,13 N0.4)(402,24 N0.3) 286 | (405,15 N0.4)(409,21 N0.4)(419,18 N0.3)(433,18 N0.4)(441,13 N0.4) 287 | (442,14 N0.4)(443,16 N0.4)(444,10 N0.4)(462,11 N0.4)(464,15 N0.4) 288 | (466,13 N0.4)(469,11 N0.4)(477,5 N0.5)(481,20 N0.3)(482,16 N0.4) 289 | (489,26 N0.3)(490,15 N0.3)(494,14 N0.4)(497,13 N0.5)(498,15 N0.4) 290 | 291 | NAME: |SC2762|CN11|MP1-MODN:164(%86.4)|AM336459|PC82|SN738|WD>17|TA0.6|TR191.4|FR2749-2770|RT12.2017|MN0.0054|RA11.9|IS20048059|XN21259107|MO15: 164 149 137 103 121 132 165 105 107 135 134 148 62 95 118|EW0-2|FG1.000|TN4.886|OR1|NT0 292 | RE 293 | 620503 732268 823374 899757 979975 294 | 1063222 1129239 1187311 1254957 1320548 295 | 1377836 1416564 1421000 1383425 1287150 296 | 1110804 867794 599394 348417 165179 297 | 59342 0 298 | NUM PEAKS: 106 299 | (29,8 )(30,1 )(31,3 )(37,2 )(38,9 ) 300 | (39,61 )(40,12 )(41,32 )(42,3 )(43,21 ) 301 | (44,1 )(45,5 )(46,3 )(49,1 )(50,23 ) 302 | (51,73 )(52,28 )(53,41 )(54,5 )(55,154 ) 303 | (56,5 )(57,3 )(58,1 )(59,4 )(60,4 ) 304 | (61,3 )(62,11 )(63,31 )(64,10 )(65,72 ) 305 | (66,33 )(67,10 )(68,3 )(69,6 )(71,2 ) 306 | (73,1 )(74,8 )(75,8 )(76,9 )(77,214 ) 307 | (78,59 )(79,61 )(80,6 )(81,16 )(82,2 ) 308 | (83,1 )(85,1 )(86,1 )(87,2 )(88,1 ) 309 | (89,16 )(90,6 )(91,175 )(92,21 )(93,49 ) 310 | (94,50 )(95,9 )(96,1 )(98,1 )(101,3 ) 311 | (102,17 )(103,227 )(104,154 )(105,80 )(106,11 ) 312 | (107,36 )(108,6 )(109,10 )(110,2 )(114,1 ) 313 | (115,25 )(116,6 )(117,8 )(118,6 )(119,17 ) 314 | (120,10 )(121,175 )(122,86 )(123,10 )(124,3 ) 315 | (127,1 )(129,1 )(130,4 )(131,306 )(132,142 ) 316 | (133,200 )(134,20 )(135,20 )(136,5 )(137,197 ) 317 | (138,17 )(139,2 )(145,3 )(146,2 )(147,59 ) 318 | (148,10 )(149,389 )(150,38 )(151,3 )(161,1 ) 319 | (162,2 )(163,40 )(164,999 )(165,114 )(166,10 ) 320 | (167,1 ) 321 | 322 | NAME: |SC2869|CN12|MP1-MODN:119(%72.4)|AM976|PC13|SN40|WD8.0|TA0.9|TR0.9|FR2860-2876|RT12.5610|MN1.8|RA0.0159|IS27733|XN28349|MO2: 119 105|EW1-0|FG0.639|TN4.907|OR1|NT0 323 | RE 324 | 53 203 605 1137 1713 325 | 2407 2957 3269 3470 3363 326 | 2959 2381 1615 902 489 327 | 210 0 328 | NUM PEAKS: 102 329 | (69,101 )(79,215 )(81,263 )(91,419 )(92,255 ) 330 | (93,376 )(105,999 )(106,133 )(117,133 )(119,961 ) 331 | (120,228 )(128,76 )(161,639 )(162,105 )(29,41 N0.3) 332 | (31,19 N0.4)(37,20 N0.4)(41,84 N0.3)(45,26 N0.4)(46,22 N0.3) 333 | (54,26 N0.3)(55,102 N0.3)(65,83 N0.3)(67,29 N0.4)(75,31 N0.4) 334 | (77,153 N0.3)(78,48 N0.4)(80,57 N0.3)(84,21 N0.4)(95,39 N0.3) 335 | (97,33 N0.3)(100,8 N0.5)(107,100 N0.2)(108,22 N0.4)(115,80 N0.2) 336 | (118,67 N0.2)(121,72 N0.4)(123,47 N0.3)(127,19 N0.3)(129,54 N0.2) 337 | (130,28 N0.3)(131,142 N0.3)(133,108 N0.3)(136,46 N0.3)(142,25 N0.3) 338 | (143,27 N0.3)(145,54 N0.3)(146,21 N0.4)(147,72 N0.3)(150,28 N0.4) 339 | (154,8 N0.5)(160,28 N0.3)(164,165 N0.3)(166,12 N0.5)(172,10 N0.4) 340 | (204,65 N0.2)(213,13 N0.5)(218,8 N0.5)(220,12 N0.5)(227,11 N0.4) 341 | (230,8 N0.5)(236,14 N0.4)(267,14 N0.5)(271,17 N0.4)(272,12 N0.5) 342 | (274,7 N0.5)(281,21 N0.3)(292,14 N0.3)(301,10 N0.5)(313,21 N0.4) 343 | (319,14 N0.4)(329,20 N0.3)(351,16 N0.4)(357,13 N0.4)(362,9 N0.5) 344 | (365,13 N0.4)(382,15 N0.4)(385,14 N0.4)(395,11 N0.5)(396,22 N0.4) 345 | (397,10 N0.4)(399,18 N0.4)(403,12 N0.5)(406,11 N0.5)(407,11 N0.5) 346 | (409,21 N0.4)(410,14 N0.4)(420,12 N0.4)(427,12 N0.4)(437,17 N0.4) 347 | (458,16 N0.4)(462,13 N0.5)(464,10 N0.4)(466,16 N0.4)(468,18 N0.4) 348 | (472,12 N0.4)(474,11 N0.5)(477,17 N0.3)(484,14 N0.4)(485,11 N0.4) 349 | (492,11 N0.4)(495,13 N0.4) 350 | 351 | NAME: |SC2911|CN13|MP1-MODN:81(%87.8)|AM6266|PC71|SN156|WD8.5|TA1.0|TR68.1|FR2902-2916|RT12.7007|MN0.29|RA0.331|IS524220|XN591861|MO20: 81 93 107 68 67 79 105 147 121 108 91 41 95 94 119 53 133 55 148 69|EW2-1|FG0.969|TN11.677|OR1|NT0 352 | RE 353 | 0 3311 8516 16081 26095 354 | 37586 49228 59174 64269 63316 355 | 57568 48710 38538 29107 22720 356 | NUM PEAKS: 150 357 | (29,72 )(39,153 )(40,51 )(41,341 )(42,32 ) 358 | (43,72 )(51,44 )(52,21 )(53,286 )(54,26 ) 359 | (55,266 )(57,38 )(65,110 )(66,40 )(67,620 ) 360 | (68,555 )(69,170 )(70,15 )(77,259 )(78,54 ) 361 | (79,658 )(80,153 )(81,891 )(82,75 )(83,20 ) 362 | (91,463 )(92,141 )(93,999 )(94,276 )(95,275 ) 363 | (96,28 )(97,21 )(105,480 )(106,164 )(107,696 ) 364 | (108,308 )(109,104 )(117,27 )(118,14 )(119,314 ) 365 | (120,132 )(121,385 )(122,91 )(123,94 )(133,314 ) 366 | (134,133 )(135,128 )(136,26 )(147,386 )(148,160 ) 367 | (149,49 )(161,162 )(162,44 )(163,37 )(175,47 ) 368 | (176,19 )(189,107 )(190,17 )(32,17 N0.4)(38,5 N0.3) 369 | (48,2 N0.4)(49,2 N0.4)(50,11 N0.3)(56,17 N0.2)(58,2 N0.5) 370 | (63,10 N0.3)(64,7 N0.3)(72,4 N0.3)(73,3 N0.5)(74,4 N0.4) 371 | (75,5 N0.3)(76,3 N0.5)(103,15 N0.4)(110,8 N0.2)(111,3 N0.4) 372 | (115,8 N0.4)(124,6 N0.3)(125,3 N0.4)(128,5 N0.4)(129,5 N0.4) 373 | (130,4 N0.4)(131,9 N0.5)(132,11 N0.3)(141,6 N0.3)(145,11 N0.2) 374 | (146,9 N0.2)(150,5 N0.4)(154,1 N0.5)(156,1 N0.5)(159,2 N0.5) 375 | (160,2 N0.4)(164,21 N0.3)(165,5 N0.4)(166,3 N0.4)(168,4 N0.3) 376 | (170,2 N0.5)(183,3 N0.3)(198,2 N0.4)(200,2 N0.4)(201,1 N0.5) 377 | (203,2 N0.4)(221,2 N0.5)(228,4 N0.3)(229,3 N0.4)(245,2 N0.5) 378 | (247,2 N0.3)(256,3 N0.3)(260,1 N0.4)(262,2 N0.3)(264,2 N0.4) 379 | (272,1 N0.5)(273,2 N0.4)(274,2 N0.5)(279,2 N0.4)(287,2 N0.4) 380 | (290,2 N0.4)(292,2 N0.4)(293,2 N0.4)(295,3 N0.3)(300,3 N0.4) 381 | (304,2 N0.4)(310,3 N0.3)(325,2 N0.5)(327,4 N0.3)(337,1 N0.4) 382 | (339,3 N0.4)(347,2 N0.5)(353,1 N0.5)(357,2 N0.4)(362,1 N0.5) 383 | (367,4 N0.3)(388,4 N0.3)(405,3 N0.4)(414,4 N0.3)(417,2 N0.4) 384 | (421,2 N0.4)(443,3 N0.3)(449,5 N0.3)(453,3 N0.3)(458,3 N0.4) 385 | (465,3 N0.3)(466,3 N0.4)(471,3 N0.3)(473,2 N0.4)(475,2 N0.3) 386 | (479,5 N0.3)(486,3 N0.4)(491,1 N0.5)(493,4 N0.3)(498,1 N0.5) 387 | 388 | NAME: |SC2926|CN14|MP1-MODN:161(%92.1)|AM27364|PC87|SN294|WD8.9|TA1.0|TR180.1|FR2917-2935|RT12.7513|MN0.067|RA1.29|IS2167093|XN2315045|MO20: 161 119 105 93 107 133 91 147 79 162 135 77 55 190 120 108 69 117 134 81|EW0-2|FG0.994|TN9.571|OR1|NT0 389 | RE 390 | 17736 28990 49784 78785 113481 391 | 151634 188865 220681 241322 241017 392 | 221004 191859 156047 114787 75751 393 | 44466 22414 8470 0 394 | NUM PEAKS: 160 395 | (29,37 )(39,54 )(40,7 )(41,198 )(42,7 ) 396 | (43,58 )(51,26 )(52,10 )(53,66 )(54,6 ) 397 | (55,150 )(56,7 )(57,14 )(58,5 )(63,12 ) 398 | (64,11 )(65,71 )(66,11 )(67,83 )(69,104 ) 399 | (70,8 )(71,15 )(72,9 )(73,5 )(76,4 ) 400 | (77,167 )(78,42 )(79,219 )(80,21 )(81,97 ) 401 | (82,9 )(83,16 )(87,2 )(89,6 )(91,394 ) 402 | (92,50 )(93,478 )(94,58 )(95,106 )(96,43 ) 403 | (97,6 )(102,6 )(103,36 )(104,14 )(105,668 ) 404 | (106,85 )(107,414 )(108,119 )(109,44 )(110,5 ) 405 | (115,88 )(116,33 )(117,101 )(118,23 )(119,920 ) 406 | (120,118 )(121,75 )(122,34 )(123,13 )(127,14 ) 407 | (128,55 )(129,63 )(130,30 )(131,79 )(132,23 ) 408 | (133,407 )(134,96 )(135,137 )(136,25 )(139,2 ) 409 | (141,13 )(142,9 )(143,16 )(144,10 )(145,73 ) 410 | (146,19 )(147,256 )(148,74 )(149,16 )(150,3 ) 411 | (152,2 )(153,2 )(157,3 )(158,2 )(159,19 ) 412 | (160,16 )(161,999 )(162,161 )(163,20 )(173,5 ) 413 | (175,60 )(176,27 )(177,3 )(187,2 )(188,3 ) 414 | (189,770 )(190,118 )(191,9 )(202,2 )(203,2 ) 415 | (204,358 )(205,60 )(206,5 )(30,1 N0.4)(31,1 N0.4) 416 | (38,1 N0.3)(44,2 N0.3)(50,3 N0.2)(59,2 N0.2)(62,2 N0.3) 417 | (74,1 N0.3)(75,2 N0.3)(84,1 N0.4)(86,1 N0.4)(88,1 N0.3) 418 | (90,2 N0.2)(98,1 N0.4)(101,1 N0.3)(111,1 N0.4)(114,1 N0.3) 419 | (124,1 N0.4)(126,1 N0.5)(151,1 N0.4)(155,2 N0.2)(156,1 N0.2) 420 | (165,1 N0.4)(172,1 N0.4)(174,2 N0.2)(178,2 N0.3)(179,1 N0.4) 421 | (186,1 N0.3)(194,1 N0.3)(197,1 N0.4)(198,1 N0.3)(201,1 N0.3) 422 | (219,1 N0.3)(238,1 N0.3)(248,1 N0.4)(255,1 N0.4)(278,1 N0.3) 423 | (281,1 N0.3)(284,1 N0.4)(295,1 N0.3)(310,1 N0.4)(321,1 N0.4) 424 | (327,1 N0.3)(331,1 N0.3)(349,1 N0.3)(359,1 N0.3)(369,1 N0.3) 425 | (374,1 N0.3)(389,1 N0.3)(394,1 N0.3)(402,1 N0.4)(409,1 N0.3) 426 | (437,1 N0.3)(439,1 N0.3)(456,1 N0.4)(458,1 N0.4)(467,1 N0.4) 427 | 428 | NAME: |SC3061|CN15|MP1-MODN:93(%95.5)|AM58036|PC94|SN524|WD9.5|TA1.0|TR432.8|FR3050-3070|RT13.2000|MN0.031|RA4.46|IS7580536|XN7952566|MO20: 93 69 79 105 41 120 107 119 81 67 106 161 55 77 147 121 92 95 94 109|EW1-1|FG0.999|TN14.279|OR1|NT0 429 | RE 430 | 0 30423 79289 150064 243937 431 | 356110 476564 593253 695374 767584 432 | 791836 766476 700835 599338 472997 433 | 344698 232773 143734 79981 39606 434 | 15663 435 | NUM PEAKS: 121 436 | (29,74 )(30,1 )(38,3 )(39,168 )(40,39 ) 437 | (41,606 )(42,31 )(43,84 )(44,3 )(50,8 ) 438 | (51,46 )(52,36 )(53,192 )(54,25 )(55,326 ) 439 | (56,34 )(57,75 )(58,7 )(59,3 )(62,2 ) 440 | (63,13 )(64,6 )(65,141 )(66,39 )(67,380 ) 441 | (68,74 )(69,796 )(70,51 )(71,39 )(72,3 ) 442 | (76,3 )(77,346 )(78,93 )(79,701 )(80,183 ) 443 | (81,394 )(82,118 )(83,39 )(84,6 )(89,6 ) 444 | (90,3 )(91,876 )(92,259 )(93,999 )(94,212 ) 445 | (95,237 )(96,33 )(97,13 )(102,4 )(103,36 ) 446 | (104,19 )(105,680 )(106,346 )(107,477 )(108,122 ) 447 | (109,199 )(110,31 )(111,33 )(112,5 )(115,36 ) 448 | (116,14 )(117,56 )(118,16 )(119,445 )(120,457 ) 449 | (121,297 )(122,94 )(123,98 )(124,12 )(127,3 ) 450 | (128,11 )(129,12 )(130,5 )(131,37 )(132,11 ) 451 | (133,921 )(134,253 )(135,133 )(136,67 )(137,15 ) 452 | (138,1 )(141,2 )(143,2 )(145,14 )(146,11 ) 453 | (147,289 )(148,251 )(149,70 )(150,11 )(151,1 ) 454 | (159,3 )(160,11 )(161,319 )(162,84 )(163,21 ) 455 | (175,94 )(176,53 )(177,6 )(189,159 )(190,25 ) 456 | (191,1 )(204,58 )(205,9 )(60,1 N0.2)(74,1 N0.2) 457 | (75,1 N0.3)(85,2 N0.2)(87,1 N0.3)(98,1 N0.2)(113,1 N0.2) 458 | (125,1 N0.2)(139,1 N0.3)(142,1 N0.3)(144,1 N0.3)(164,2 N0.3) 459 | (165,1 N0.4)(173,1 N0.3)(174,1 N0.3)(203,1 N0.2)(206,1 N0.3) 460 | (219,1 N0.3) 461 | 462 | NAME: |SC3064|CN16|MP1-MODN:123(%94.0)|AM11259|PC18|SN204|WD10.3|TA0.9|TR6.3|FR3052-3073|RT13.2083|MN0.16|RA0.718|IS1226069|XN1280145|MO1: 123|EW1-1|FG0.193|TN11.126|OR1|NT0 463 | RE 464 | 2259 8210 16190 27022 39486 465 | 54555 71899 89309 105367 114698 466 | 117402 117798 110659 96695 82038 467 | 64892 46014 30022 17888 9694 468 | 3973 0 469 | NUM PEAKS: 182 470 | (29,305 )(38,13 )(39,685 )(40,157 )(42,122 ) 471 | (43,344 )(44,13 )(50,33 )(51,189 )(52,145 ) 472 | (53,792 )(54,100 )(56,133 )(57,317 )(58,32 ) 473 | (59,14 )(63,55 )(64,27 )(65,584 )(66,154 ) 474 | (68,291 )(70,195 )(71,163 )(72,12 )(76,10 ) 475 | (78,373 )(83,158 )(84,24 )(89,23 )(90,15 ) 476 | (95,999 )(96,133 )(97,55 )(102,15 )(103,150 ) 477 | (104,78 )(108,499 )(110,119 )(111,135 )(112,20 ) 478 | (115,151 )(116,57 )(117,226 )(118,66 )(122,398 ) 479 | (123,634 )(124,69 )(125,6 )(127,16 )(128,47 ) 480 | (129,51 )(130,22 )(131,146 )(132,45 )(135,542 ) 481 | (136,269 )(137,59 )(141,10 )(143,8 )(145,58 ) 482 | (146,46 )(150,57 )(151,7 )(160,43 )(163,80 ) 483 | (191,6 )(204,275 )(205,41 )(30,6 N0.2)(33,1 N0.5) 484 | (41,2467 B0.0)(45,2 N0.4)(55,1330 B0.0)(60,4 N0.2)(62,6 N0.2) 485 | (67,1541 B0.0)(69,3167 B0.1)(74,5 N0.3)(75,5 N0.2)(77,1407 B0.0) 486 | (79,2815 B0.0)(80,728 B0.0)(81,1612 B0.0)(82,468 B0.0)(85,7 N0.2) 487 | (87,3 N0.3)(88,2 N0.4)(91,3493 B0.1)(92,1016 B0.0)(93,4003 B0.1) 488 | (94,841 B0.0)(98,5 N0.2)(100,1 N0.4)(101,2 N0.3)(105,2747 B0.0) 489 | (106,1371 B0.0)(107,1937 B0.0)(109,802 B0.0)(113,5 N0.2)(119,1784 B0.0) 490 | (120,1803 B0.1)(121,1207 B0.0)(126,3 N0.3)(133,3594 B0.1)(134,971 B0.1) 491 | (138,6 N0.2)(139,3 N0.3)(142,4 N0.2)(144,3 N0.3)(147,1150 B0.0) 492 | (148,971 B0.1)(149,264 B0.1)(157,1 N0.4)(159,9 B0.1)(161,1261 B0.0) 493 | (162,317 B0.0)(165,2 N0.4)(166,1 N0.4)(171,2 N0.4)(173,2 N0.4) 494 | (174,3 N0.3)(175,361 B0.0)(176,198 B0.0)(177,20 B0.1)(180,2 N0.4) 495 | (183,2 N0.3)(189,643 B0.0)(190,90 B0.0)(198,1 N0.4)(203,3 N0.3) 496 | (206,3 N0.3)(216,2 N0.4)(219,1 N0.4)(224,1 N0.4)(230,1 N0.5) 497 | (250,1 N0.5)(255,1 N0.5)(259,1 N0.4)(261,2 N0.3)(262,2 N0.3) 498 | (266,1 N0.4)(270,1 N0.4)(271,2 N0.3)(279,1 N0.4)(282,1 N0.4) 499 | (286,1 N0.5)(308,1 N0.4)(309,1 N0.4)(315,1 N0.5)(323,1 N0.4) 500 | (327,1 N0.4)(337,2 N0.4)(341,2 N0.4)(347,2 N0.4)(351,1 N0.4) 501 | (353,1 N0.4)(359,1 N0.4)(360,1 N0.4)(367,1 N0.4)(372,1 N0.5) 502 | (374,1 N0.4)(389,1 N0.4)(392,1 N0.4)(393,1 N0.5)(395,2 N0.3) 503 | (397,1 N0.4)(401,1 N0.4)(411,1 N0.4)(415,2 N0.4)(418,1 N0.5) 504 | (432,1 N0.4)(440,1 N0.4)(443,1 N0.4)(447,1 N0.4)(460,1 N0.3) 505 | (462,1 N0.4)(467,2 N0.3)(471,2 N0.3)(481,1 N0.5)(492,1 N0.5) 506 | (495,2 N0.3)(496,1 N0.4) 507 | 508 | NAME: |SC3098|CN17|MP1-MODN:105(%94.3)|AM60545|PC92|SN475|WD8.9|TA1.0|TR438.2|FR3088-3107|RT13.3240|MN0.030|RA3.43|IS5742303|XN6123566|MO20: 105 147 107 93 133 91 79 81 119 95 189 108 121 67 41 77 55 106 94 123|EW2-1|FG0.999|TN11.257|OR1|NT0 509 | RE 510 | 5231 34321 81133 148458 237058 511 | 342687 451877 544818 611237 642765 512 | 626799 568370 479639 370988 261346 513 | 168219 98492 50194 18671 0 514 | NUM PEAKS: 126 515 | (29,52 )(38,1 )(39,84 )(40,17 )(41,227 ) 516 | (42,14 )(43,56 )(50,4 )(51,30 )(52,17 ) 517 | (53,119 )(54,12 )(55,216 )(56,12 )(57,33 ) 518 | (58,5 )(59,2 )(63,12 )(64,9 )(65,99 ) 519 | (66,24 )(67,248 )(68,47 )(69,94 )(70,7 ) 520 | (71,11 )(72,7 )(73,4 )(74,2 )(75,2 ) 521 | (76,4 )(77,235 )(78,54 )(79,447 )(80,63 ) 522 | (81,384 )(82,36 )(83,16 )(84,1 )(87,4 ) 523 | (88,2 )(89,7 )(90,2 )(91,492 )(92,77 ) 524 | (93,622 )(94,156 )(95,309 )(96,38 )(97,9 ) 525 | (101,1 )(102,5 )(103,36 )(104,14 )(105,999 ) 526 | (106,205 )(107,712 )(108,263 )(109,137 )(110,13 ) 527 | (111,2 )(115,53 )(116,19 )(117,72 )(118,15 ) 528 | (119,348 )(120,154 )(121,265 )(122,107 )(123,142 ) 529 | (124,14 )(127,8 )(128,25 )(129,25 )(130,12 ) 530 | (131,78 )(132,16 )(133,520 )(134,103 )(135,66 ) 531 | (136,16 )(141,7 )(142,4 )(143,7 )(144,4 ) 532 | (145,35 )(146,44 )(147,725 )(148,385 )(149,117 ) 533 | (150,12 )(152,1 )(153,1 )(154,1 )(155,1 ) 534 | (157,1 )(159,7 )(160,7 )(161,170 )(162,68 ) 535 | (163,11 )(173,2 )(175,44 )(176,11 )(177,1 ) 536 | (187,2 )(189,263 )(190,41 )(191,3 )(203,3 ) 537 | (204,336 )(205,54 )(206,4 )(37,1 N0.3)(44,1 N0.2) 538 | (62,1 N0.2)(85,1 N0.3)(98,1 N0.2)(137,1 N0.3)(139,1 N0.3) 539 | (151,1 N0.3)(156,1 N0.3)(158,1 N0.3)(174,1 N0.2)(188,1 N0.2) 540 | (301,1 N0.3) 541 | 542 | NAME: |SC3201|CN18|MP1-MODN:107(%95.8)|AM63212|PC94|SN426|WD9.4|TA1.1|TR246.4|FR3190-3210|RT13.6663|MN0.029|RA2.92|IS5020310|XN5208383|MO20: 107 121 91 79 119 204 95 94 41 109 77 81 67 123 92 120 189 53 161 106|EW1-1|FG0.999|TN8.681|OR1|NT0 543 | RE 544 | 0 16443 45474 90461 152407 545 | 228588 312047 392364 461553 509666 546 | 525431 509313 462779 392305 313219 547 | 234829 163587 104393 60074 31280 548 | 14100 549 | NUM PEAKS: 118 550 | (29,46 )(30,1 )(39,69 )(40,14 )(41,186 ) 551 | (42,13 )(43,60 )(44,2 )(50,3 )(51,24 ) 552 | (52,12 )(53,95 )(54,11 )(55,146 )(56,11 ) 553 | (57,13 )(58,3 )(59,2 )(62,1 )(63,7 ) 554 | (64,5 )(65,71 )(66,18 )(67,166 )(68,27 ) 555 | (69,59 )(70,8 )(71,4 )(72,2 )(76,2 ) 556 | (77,188 )(78,40 )(79,287 )(80,257 )(81,166 ) 557 | (82,52 )(83,16 )(84,3 )(89,4 )(90,2 ) 558 | (91,346 )(92,162 )(93,905 )(94,201 )(95,218 ) 559 | (96,23 )(97,7 )(98,4 )(102,3 )(103,30 ) 560 | (104,13 )(105,333 )(106,92 )(107,374 )(108,210 ) 561 | (109,169 )(110,19 )(111,6 )(112,1 )(115,31 ) 562 | (116,11 )(117,40 )(118,10 )(119,253 )(120,133 ) 563 | (121,344 )(122,999 )(123,157 )(124,14 )(127,4 ) 564 | (128,11 )(129,13 )(130,6 )(131,25 )(132,6 ) 565 | (133,151 )(134,96 )(135,91 )(136,44 )(137,5 ) 566 | (141,3 )(142,2 )(143,3 )(144,1 )(145,13 ) 567 | (146,16 )(147,254 )(148,70 )(149,38 )(150,5 ) 568 | (152,1 )(159,3 )(160,3 )(161,90 )(162,24 ) 569 | (163,4 )(174,1 )(175,71 )(176,22 )(177,2 ) 570 | (188,1 )(189,108 )(190,17 )(191,1 )(203,1 ) 571 | (204,221 )(205,37 )(206,3 )(38,1 N0.2)(73,1 N0.3) 572 | (74,1 N0.3)(75,1 N0.2)(87,1 N0.2)(88,1 N0.2)(125,1 N0.2) 573 | (153,1 N0.2)(173,1 N0.2)(187,1 N0.3) 574 | 575 | NAME: |SC3243|CN19|MP1-MODN:107(%94.8)|AM38385|PC80|SN291|WD10.7|TA1.1|TR93.4|FR3233-3249|RT13.8077|MN0.047|RA1.45|IS2359534|XN2599831|MO14: 107 93 108 105 91 204 189 136 134 94 109 117 95 106|EW2-1|FG0.989|TN6.683|OR1|NT0 576 | RE 577 | 0 9287 24469 46652 76813 578 | 115220 157742 196638 227523 243063 579 | 241456 229705 208957 182530 155445 580 | 130652 113380 581 | NUM PEAKS: 131 582 | (29,30 )(39,41 )(40,5 )(41,142 )(42,7 ) 583 | (43,50 )(50,3 )(51,19 )(52,6 )(53,58 ) 584 | (54,4 )(55,138 )(56,8 )(58,4 )(63,7 ) 585 | (64,4 )(65,57 )(66,11 )(67,77 )(68,4 ) 586 | (69,65 )(70,7 )(77,153 )(78,33 )(79,230 ) 587 | (80,19 )(81,92 )(82,6 )(83,4 )(89,5 ) 588 | (91,311 )(92,50 )(93,855 )(94,98 )(95,51 ) 589 | (96,21 )(102,4 )(103,31 )(104,12 )(105,319 ) 590 | (106,51 )(107,999 )(108,503 )(109,56 )(110,3 ) 591 | (115,44 )(116,16 )(117,59 )(118,14 )(119,263 ) 592 | (120,18 )(127,6 )(128,23 )(129,22 )(130,10 ) 593 | (131,31 )(132,22 )(133,88 )(134,110 )(135,570 ) 594 | (136,88 )(137,5 )(139,2 )(141,5 )(142,4 ) 595 | (143,6 )(144,3 )(145,25 )(146,7 )(147,34 ) 596 | (148,34 )(149,4 )(157,2 )(160,7 )(161,146 ) 597 | (162,16 )(173,3 )(189,135 )(190,22 )(204,153 ) 598 | (205,25 )(206,2 )(44,1 N0.4)(57,12 B0.2)(72,1 N0.3) 599 | (73,1 N0.3)(75,1 N0.5)(76,2 N0.3)(88,1 N0.3)(90,2 N0.2) 600 | (97,1 N0.3)(112,1 N0.3)(123,2 N0.3)(138,1 N0.2)(150,1 N0.3) 601 | (152,1 N0.3)(155,1 N0.3)(156,1 N0.2)(158,1 N0.3)(159,9 B0.2) 602 | (163,1 N0.3)(169,1 N0.3)(175,2 N0.3)(176,2 N0.3)(178,1 N0.3) 603 | (186,1 N0.3)(187,3 B0.2)(188,1 N0.3)(191,1 N0.3)(202,3 B0.2) 604 | (203,1 N0.3)(207,1 N0.2)(209,1 N0.2)(211,1 N0.3)(220,1 N0.3) 605 | (262,1 N0.3)(282,1 N0.3)(321,1 N0.3)(349,1 N0.3)(352,1 N0.3) 606 | (375,1 N0.3)(390,1 N0.3)(395,1 N0.3)(407,1 N0.3)(430,1 N0.3) 607 | (435,1 N0.3)(441,1 N0.3)(452,1 N0.3)(454,1 N0.3)(473,1 N0.3) 608 | (481,1 N0.3) 609 | 610 | NAME: |SC3248|CN20|MP1-MODN:71(%78.8)|AM2052|PC3.7|SN53|WD8.7|TA0.8|TR5.3|FR3236-3256|RT13.8213|MN0.89|RA0.0381|IS61377|XN68101|MO3: 71 85 57|EW1-2|FG0.098|TN4.200|OR1|NT0 611 | RE 612 | 639 922 1244 1662 2161 613 | 2769 3456 4261 5261 6187 614 | 6787 6793 5997 4784 3495 615 | 2298 1401 758 352 150 616 | 0 617 | NUM PEAKS: 130 618 | (42,106 )(56,132 )(57,949 )(70,228 )(71,999 ) 619 | (72,55 )(84,151 )(85,749 )(86,55 )(99,300 ) 620 | (113,183 )(126,46 )(127,137 )(155,80 )(169,25 ) 621 | (29,226 B0.5)(30,9 N0.4)(33,4 N0.5)(34,12 N0.3)(39,295 B0.6) 622 | (40,39 N0.3)(41,1155 B0.5)(43,815 B0.0)(44,20 N0.4)(45,14 N0.3) 623 | (50,20 N0.4)(51,120 B0.6)(52,50 N0.2)(53,398 B0.6)(54,50 N0.2) 624 | (55,1149 B0.5)(58,28 N0.3)(61,7 N0.4)(62,10 N0.4)(63,47 N0.3) 625 | (64,22 N0.4)(65,329 B0.8)(66,72 B0.6)(67,594 B0.5)(68,73 B0.1) 626 | (69,934 B0.1)(73,10 N0.4)(74,11 N0.4)(76,25 N0.3)(77,958 B0.7) 627 | (78,204 B0.6)(79,1554 B0.7)(81,613 B0.7)(82,53 N0.3)(83,58 N0.3) 628 | (90,15 N0.3)(93,6679 B0.6)(94,634 B0.7)(96,151 B0.6)(98,10 N0.5) 629 | (100,21 N0.3)(102,25 N0.3)(104,77 N0.2)(107,9264 B0.5)(108,4014 B0.6) 630 | (111,36 N0.2)(112,36 N0.2)(114,21 N0.2)(116,79 N0.2)(124,16 N0.4) 631 | (125,29 N0.2)(134,759 B0.7)(135,5539 B0.5)(136,684 B0.6)(137,42 N0.2) 632 | (139,16 N0.3)(140,13 N0.3)(141,28 N0.3)(142,18 N0.4)(152,15 N0.3) 633 | (153,10 N0.4)(156,9 N0.4)(158,11 N0.4)(168,7 N0.4)(170,8 N0.4) 634 | (191,7 N0.5)(196,6 N0.4)(211,10 N0.3)(217,7 N0.4)(226,6 N0.4) 635 | (233,4 N0.4)(238,8 N0.4)(243,10 N0.3)(248,5 N0.4)(253,4 N0.5) 636 | (255,9 N0.4)(256,9 N0.4)(257,8 N0.4)(259,5 N0.4)(264,5 N0.5) 637 | (272,9 N0.4)(286,9 N0.3)(292,7 N0.4)(294,5 N0.5)(316,7 N0.4) 638 | (326,5 N0.5)(336,8 N0.4)(342,4 N0.5)(343,7 N0.4)(349,7 N0.3) 639 | (351,6 N0.4)(356,6 N0.4)(357,5 N0.4)(364,4 N0.5)(371,9 N0.4) 640 | (373,4 N0.4)(376,9 N0.4)(392,3 N0.5)(394,10 N0.3)(396,5 N0.4) 641 | (412,3 N0.5)(427,5 N0.5)(431,7 N0.4)(439,7 N0.4)(443,7 N0.4) 642 | (444,5 N0.4)(453,7 N0.4)(456,9 N0.3)(459,11 N0.3)(470,4 N0.5) 643 | (475,5 N0.4)(487,10 N0.3)(492,6 N0.4)(494,8 N0.4)(498,6 N0.5) 644 | 645 | NAME: |SC3255|CN21|MP1-MODN:161(%87.0)|AM12349|PC67|SN221|WD>9|TA1.6|TR65.4|FR3249-3265|RT13.8460|MN0.14|RA0.707|IS1214247|XN1260810|MO20: 161 121 105 204 120 119 147 133 91 162 122 189 93 175 148 106 77 79 95 134|EW0-1|FG0.978|TN11.930|OR1|NT0 646 | RE 647 | 91289 97468 107806 118772 126979 648 | 128184 121311 108434 90653 71058 649 | 53491 38926 27087 17827 10495 650 | 4467 0 651 | NUM PEAKS: 185 652 | (29,49 )(39,78 )(41,250 )(42,10 )(43,44 ) 653 | (51,25 )(52,12 )(53,85 )(55,158 )(62,5 ) 654 | (63,13 )(64,12 )(65,109 )(66,12 )(67,118 ) 655 | (77,248 )(78,49 )(79,297 )(80,87 )(81,158 ) 656 | (82,22 )(83,33 )(89,11 )(91,601 )(92,96 ) 657 | (93,599 )(94,119 )(95,156 )(96,24 )(103,55 ) 658 | (104,23 )(105,999 )(106,188 )(108,109 )(109,145 ) 659 | (110,25 )(115,94 )(116,30 )(117,101 )(118,30 ) 660 | (119,707 )(120,496 )(121,768 )(122,267 )(123,77 ) 661 | (124,8 )(128,48 )(129,47 )(130,30 )(131,78 ) 662 | (132,30 )(133,453 )(134,150 )(143,10 )(145,63 ) 663 | (146,19 )(147,552 )(148,206 )(149,60 )(150,8 ) 664 | (153,4 )(159,21 )(160,17 )(161,913 )(162,273 ) 665 | (163,31 )(175,147 )(176,45 )(189,360 )(190,49 ) 666 | (202,5 )(204,602 )(205,89 )(206,7 )(30,3 N0.3) 667 | (31,1 N0.4)(35,1 N0.4)(36,1 N0.5)(40,7 N0.3)(50,5 N0.3) 668 | (54,2 N0.5)(58,5 N0.3)(59,2 N0.4)(68,3 N0.5)(69,52 B0.0) 669 | (75,3 N0.3)(76,2 N0.5)(87,3 N0.3)(90,2 N0.3)(97,8 N0.2) 670 | (102,6 N0.2)(127,3 N0.4)(137,4 N0.3)(138,3 N0.2)(141,7 N0.2) 671 | (142,5 N0.2)(144,2 N0.4)(158,1 N0.4)(165,4 N0.2)(167,1 N0.4) 672 | (171,1 N0.4)(174,2 N0.3)(177,5 N0.2)(180,1 N0.3)(182,1 N0.4) 673 | (185,2 N0.3)(187,3 N0.3)(191,4 N0.2)(192,2 N0.3)(195,1 N0.5) 674 | (199,1 N0.5)(203,4 N0.2)(213,2 N0.3)(216,1 N0.4)(222,2 N0.3) 675 | (229,2 N0.3)(232,1 N0.4)(240,2 N0.3)(246,1 N0.3)(247,1 N0.4) 676 | (250,2 N0.3)(261,2 N0.3)(265,1 N0.4)(266,1 N0.4)(267,1 N0.4) 677 | (270,1 N0.4)(273,1 N0.4)(274,2 N0.3)(275,2 N0.3)(282,1 N0.4) 678 | (289,1 N0.5)(291,1 N0.5)(299,1 N0.4)(304,1 N0.3)(307,1 N0.4) 679 | (308,2 N0.3)(312,1 N0.3)(313,2 N0.3)(314,2 N0.3)(315,2 N0.3) 680 | (317,1 N0.3)(319,1 N0.5)(321,1 N0.5)(324,2 N0.3)(327,2 N0.3) 681 | (329,2 N0.3)(335,1 N0.4)(338,2 N0.3)(339,1 N0.4)(341,3 N0.2) 682 | (348,2 N0.3)(352,2 N0.3)(353,1 N0.3)(354,1 N0.4)(362,1 N0.4) 683 | (366,2 N0.3)(367,1 N0.4)(369,1 N0.5)(372,2 N0.3)(377,2 N0.3) 684 | (379,1 N0.3)(383,3 N0.3)(389,1 N0.4)(402,1 N0.3)(403,3 N0.2) 685 | (409,2 N0.3)(411,1 N0.4)(417,2 N0.3)(420,1 N0.4)(423,1 N0.3) 686 | (430,2 N0.3)(434,2 N0.3)(441,1 N0.3)(450,2 N0.3)(454,1 N0.4) 687 | (455,1 N0.4)(458,2 N0.3)(461,1 N0.4)(462,2 N0.3)(463,2 N0.3) 688 | (479,1 N0.4)(480,2 N0.3)(484,1 N0.5)(488,2 N0.3)(491,1 N0.4) 689 | 690 | NAME: |SC3277|CN22|MP1-MODN:161(%81.9)|AM3278|PC66|SN137|WD9.2|TA1.1|TR31.6|FR3268-3286|RT13.9193|MN0.55|RA0.265|IS430454|XN473743|MO19: 161 94 204 91 105 121 133 119 107 81 93 79 67 120 189 95 108 147 77|EW0-2|FG0.961|TN17.228|OR1|NT0 691 | RE 692 | 7722 10050 14548 20394 27096 693 | 34166 40561 45064 46237 43889 694 | 39098 32592 25046 18104 12296 695 | 7579 4213 1802 0 696 | NUM PEAKS: 151 697 | (29,61 )(39,129 )(41,387 )(42,30 )(43,66 ) 698 | (51,61 )(52,32 )(53,162 )(55,317 )(65,194 ) 699 | (66,36 )(67,501 )(69,225 )(77,393 )(78,132 ) 700 | (79,627 )(80,210 )(81,654 )(82,55 )(83,91 ) 701 | (91,999 )(92,207 )(93,703 )(94,761 )(95,404 ) 702 | (96,44 )(103,71 )(105,985 )(106,217 )(107,702 ) 703 | (108,398 )(109,245 )(110,32 )(115,133 )(116,46 ) 704 | (117,186 )(118,38 )(119,727 )(120,496 )(121,839 ) 705 | (122,287 )(123,126 )(124,26 )(128,52 )(129,63 ) 706 | (131,92 )(133,687 )(134,174 )(135,83 )(136,28 ) 707 | (145,76 )(146,24 )(147,354 )(148,132 )(161,872 ) 708 | (162,138 )(175,93 )(176,43 )(189,407 )(190,61 ) 709 | (204,700 )(205,96 )(30,3 N0.5)(32,28 N0.5)(35,3 N0.4) 710 | (40,21 N0.3)(50,12 N0.3)(54,18 N0.2)(56,9 N0.5)(59,6 N0.4) 711 | (61,4 N0.4)(63,19 N0.3)(64,16 N0.3)(68,23 N0.2)(72,7 N0.4) 712 | (74,6 N0.4)(76,6 N0.4)(89,13 N0.3)(97,23 N0.2)(102,15 N0.2) 713 | (104,27 N0.2)(111,9 N0.4)(114,3 N0.5)(130,18 N0.2)(132,25 N0.2) 714 | (137,7 N0.4)(139,12 N0.3)(141,12 N0.3)(143,11 N0.3)(149,31 N0.2) 715 | (154,3 N0.5)(159,17 N0.3)(160,15 N0.3)(172,3 N0.4)(174,4 N0.5) 716 | (177,7 N0.3)(181,2 N0.5)(184,5 N0.4)(191,12 N0.2)(192,4 N0.5) 717 | (193,4 N0.4)(195,2 N0.4)(202,4 N0.5)(203,7 N0.3)(206,3 N0.5) 718 | (208,6 N0.4)(211,5 N0.3)(217,6 N0.4)(218,4 N0.5)(223,5 N0.4) 719 | (230,6 N0.3)(233,5 N0.4)(237,5 N0.3)(240,3 N0.4)(247,6 N0.4) 720 | (256,3 N0.4)(259,4 N0.4)(260,3 N0.4)(261,6 N0.4)(272,6 N0.3) 721 | (273,6 N0.3)(278,4 N0.4)(285,2 N0.4)(288,2 N0.5)(295,3 N0.4) 722 | (310,3 N0.5)(345,6 N0.3)(348,7 N0.4)(354,6 N0.3)(355,8 N0.3) 723 | (374,6 N0.3)(379,3 N0.4)(382,7 N0.3)(389,3 N0.5)(398,6 N0.4) 724 | (409,3 N0.5)(412,4 N0.4)(434,5 N0.5)(436,6 N0.4)(451,3 N0.5) 725 | (454,4 N0.4)(456,6 N0.4)(457,11 N0.3)(463,7 N0.3)(464,4 N0.5) 726 | (468,5 N0.3)(473,5 N0.4)(474,4 N0.4)(475,4 N0.5)(494,3 N0.4) 727 | (498,5 N0.4) 728 | 729 | NAME: |SC3292|CN23|MP1-MODN:57(%73.8)|AM1275|PC14|SN36|WD8.2|TA0.8|TR0.7|FR3281-3299|RT13.9703|MN1.4|RA0.0152|IS25252|XN27152|MO2: 57 71|EW0-1|FG0.733|TN3.039|OR1|NT0 730 | RE 731 | 326 474 628 711 833 732 | 1097 1467 1871 2324 2727 733 | 2861 2734 2400 1887 1341 734 | 884 502 187 0 735 | NUM PEAKS: 74 736 | (43,488 )(56,139 )(57,999 )(70,106 )(71,726 ) 737 | (85,443 )(99,134 )(29,47 N0.3)(42,49 N0.3)(54,22 N0.4) 738 | (58,18 N0.4)(72,16 N0.4)(83,20 N0.5)(84,47 N0.3)(86,36 N0.3) 739 | (90,10 N0.4)(97,27 N0.4)(98,48 N0.2)(112,42 N0.2)(113,43 N0.3) 740 | (126,29 N0.3)(152,19 N0.3)(154,12 N0.4)(167,13 N0.4)(168,11 N0.5) 741 | (170,15 N0.3)(178,18 N0.3)(183,13 N0.4)(184,10 N0.3)(212,17 N0.3) 742 | (221,21 N0.3)(228,14 N0.4)(230,12 N0.4)(244,10 N0.3)(246,7 N0.4) 743 | (249,10 N0.4)(250,9 N0.5)(252,12 N0.4)(259,6 N0.4)(262,13 N0.4) 744 | (263,10 N0.4)(264,14 N0.4)(266,8 N0.4)(274,7 N0.5)(276,9 N0.4) 745 | (278,9 N0.5)(284,20 N0.3)(295,6 N0.4)(297,15 N0.4)(326,10 N0.4) 746 | (336,11 N0.5)(338,15 N0.4)(355,22 N0.3)(382,12 N0.4)(383,8 N0.4) 747 | (384,17 N0.3)(385,7 N0.5)(389,5 N0.5)(395,12 N0.4)(400,14 N0.3) 748 | (406,17 N0.3)(407,12 N0.3)(428,10 N0.4)(433,11 N0.3)(440,15 N0.3) 749 | (445,11 N0.4)(446,10 N0.4)(450,6 N0.5)(451,19 N0.3)(464,10 N0.4) 750 | (468,8 N0.4)(478,13 N0.3)(487,18 N0.3)(498,14 N0.3) 751 | 752 | NAME: |SC3320|CN24|MP1-MODN:93(%78.3)|AM1374|PC47|SN78|WD8.8|TA1.0|TR2.1|FR3311-3324|RT14.0623|MN1.3|RA0.0728|IS119065|XN129864|MO4: 93 107 79 81|EW1-0|FG0.838|TN13.477|OR1|NT0 753 | RE 754 | 0 1359 3505 6067 8751 755 | 11445 13440 14423 14505 13220 756 | 11086 8935 6829 5500 757 | NUM PEAKS: 198 758 | (29,98 )(39,214 )(41,494 )(43,221 )(53,227 ) 759 | (54,41 )(55,402 )(57,138 )(65,166 )(66,54 ) 760 | (67,498 )(68,92 )(69,317 )(70,64 )(77,394 ) 761 | (78,89 )(79,885 )(80,208 )(81,640 )(82,64 ) 762 | (91,772 )(92,164 )(93,999 )(94,286 )(95,339 ) 763 | (105,617 )(106,201 )(107,921 )(108,355 )(109,223 ) 764 | (119,439 )(120,158 )(121,460 )(122,256 )(123,174 ) 765 | (133,352 )(134,131 )(135,94 )(147,293 )(148,159 ) 766 | (149,86 )(161,286 )(162,108 )(176,58 )(189,229 ) 767 | (34,6 N0.4)(37,17 N0.3)(38,11 N0.4)(42,54 N0.2)(44,20 N0.3) 768 | (51,44 N0.3)(52,37 N0.3)(56,52 N0.2)(59,14 N0.3)(62,11 N0.4) 769 | (63,15 N0.4)(64,25 N0.3)(71,70 N0.2)(73,18 N0.4)(74,22 N0.2) 770 | (75,22 N0.3)(83,33 N0.3)(84,22 N0.4)(85,73 N0.2)(89,21 N0.3) 771 | (96,46 N0.2)(99,58 N0.2)(103,58 N0.3)(104,22 N0.4)(112,10 N0.4) 772 | (113,31 N0.3)(115,63 N0.2)(116,16 N0.4)(117,69 N0.2)(125,25 N0.3) 773 | (128,38 N0.2)(129,35 N0.2)(136,44 N0.2)(139,15 N0.3)(141,18 N0.3) 774 | (142,12 N0.3)(144,8 N0.4)(146,21 N0.3)(150,21 N0.3)(154,18 N0.3) 775 | (163,32 N0.3)(164,44 N0.3)(166,10 N0.4)(167,3 N0.4)(168,20 N0.3) 776 | (169,10 N0.4)(175,22 N0.4)(183,16 N0.3)(188,11 N0.4)(190,31 N0.3) 777 | (192,7 N0.4)(195,6 N0.4)(196,9 N0.4)(199,8 N0.4)(203,17 N0.3) 778 | (205,16 N0.3)(208,14 N0.4)(209,12 N0.4)(212,10 N0.4)(218,13 N0.4) 779 | (221,21 N0.3)(223,20 N0.3)(224,12 N0.4)(231,5 N0.4)(232,4 N0.4) 780 | (241,9 N0.4)(242,4 N0.4)(245,13 N0.3)(246,13 N0.3)(249,11 N0.4) 781 | (250,7 N0.5)(252,22 N0.2)(253,8 N0.5)(258,20 N0.3)(262,4 N0.5) 782 | (263,18 N0.3)(268,10 N0.4)(271,9 N0.4)(275,13 N0.3)(276,14 N0.3) 783 | (279,12 N0.3)(280,8 N0.4)(283,9 N0.5)(284,5 N0.5)(287,13 N0.3) 784 | (289,9 N0.4)(300,13 N0.4)(301,8 N0.4)(306,18 N0.3)(319,10 N0.3) 785 | (321,10 N0.4)(324,10 N0.3)(325,14 N0.3)(327,17 N0.3)(335,9 N0.3) 786 | (339,11 N0.4)(340,12 N0.4)(346,15 N0.3)(347,13 N0.3)(354,15 N0.3) 787 | (360,5 N0.5)(364,13 N0.3)(366,17 N0.3)(367,9 N0.4)(370,7 N0.5) 788 | (378,11 N0.5)(379,14 N0.3)(380,12 N0.4)(383,17 N0.3)(386,11 N0.4) 789 | (387,14 N0.3)(388,11 N0.4)(390,6 N0.5)(391,9 N0.3)(395,6 N0.5) 790 | (398,12 N0.4)(399,8 N0.4)(408,17 N0.3)(409,11 N0.3)(410,17 N0.3) 791 | (413,11 N0.4)(415,8 N0.4)(417,15 N0.3)(419,10 N0.4)(425,11 N0.4) 792 | (427,24 N0.2)(430,27 N0.3)(437,25 N0.3)(442,7 N0.5)(444,9 N0.3) 793 | (450,9 N0.4)(453,7 N0.4)(454,16 N0.3)(456,7 N0.5)(457,12 N0.3) 794 | (459,13 N0.3)(460,13 N0.3)(461,8 N0.5)(462,12 N0.3)(463,15 N0.4) 795 | (464,16 N0.3)(470,9 N0.4)(471,9 N0.3)(475,7 N0.4)(481,11 N0.4) 796 | (482,10 N0.4)(484,11 N0.5)(485,9 N0.4)(487,7 N0.4)(488,13 N0.4) 797 | (493,11 N0.3)(494,4 N0.4)(496,8 N0.5) 798 | 799 | NAME: |SC3337|CN25|MP1-MODN:95(%87.5)|AM11077|PC79|SN223|WD8.6|TA1.1|TR105.3|FR3327-3344|RT14.1187|MN0.16|RA0.701|IS1142168|XN1250595|MO20: 95 105 79 93 147 133 119 67 94 161 77 81 41 55 108 106 121 134 149 65|EW2-1|FG0.980|TN13.516|OR1|NT0 800 | RE 801 | 0 6873 17662 32908 52727 802 | 75490 98515 117929 129398 131052 803 | 122916 107096 86449 64030 43799 804 | 27965 16986 10372 805 | NUM PEAKS: 170 806 | (29,69 )(39,110 )(40,23 )(41,288 )(42,17 ) 807 | (43,62 )(50,11 )(51,41 )(52,22 )(53,149 ) 808 | (54,16 )(55,275 )(56,16 )(57,34 )(63,11 ) 809 | (65,128 )(66,32 )(67,436 )(68,46 )(69,132 ) 810 | (70,12 )(77,367 )(78,82 )(79,752 )(80,93 ) 811 | (81,333 )(82,33 )(83,16 )(89,9 )(91,654 ) 812 | (92,114 )(93,672 )(94,341 )(95,999 )(96,95 ) 813 | (97,10 )(103,45 )(104,14 )(105,837 )(106,223 ) 814 | (107,469 )(108,257 )(109,187 )(110,26 )(115,60 ) 815 | (116,22 )(117,61 )(119,499 )(120,257 )(121,223 ) 816 | (122,144 )(123,50 )(127,10 )(128,26 )(129,24 ) 817 | (131,38 )(133,528 )(134,184 )(135,74 )(136,18 ) 818 | (147,606 )(148,199 )(149,123 )(150,15 )(161,356 ) 819 | (162,103 )(163,20 )(175,194 )(176,67 )(177,8 ) 820 | (189,537 )(190,85 )(204,343 )(205,56 )(206,14 ) 821 | (30,2 N0.4)(32,10 N0.4)(33,1 N0.4)(34,2 N0.4)(35,2 N0.3) 822 | (38,4 N0.2)(44,2 N0.4)(45,1 N0.4)(47,1 N0.5)(58,4 N0.3) 823 | (59,5 N0.2)(60,2 N0.4)(64,8 N0.2)(71,7 N0.3)(72,5 N0.2) 824 | (74,3 N0.4)(76,4 N0.3)(84,2 N0.4)(86,2 N0.3)(88,1 N0.5) 825 | (102,4 N0.3)(111,4 N0.3)(112,1 N0.5)(118,8 N0.2)(124,6 N0.2) 826 | (125,1 N0.5)(130,8 N0.2)(132,11 N0.2)(137,2 N0.4)(140,1 N0.5) 827 | (141,5 N0.2)(142,4 N0.3)(146,8 N0.3)(151,1 N0.5)(156,1 N0.4) 828 | (165,1 N0.5)(179,2 N0.4)(191,48 B0.1)(192,6 B0.1)(193,2 N0.4) 829 | (203,4 N0.3)(207,4 N0.3)(208,3 N0.3)(215,1 N0.5)(221,1 N0.4) 830 | (223,1 N0.4)(226,1 N0.5)(232,1 N0.3)(236,1 N0.3)(237,1 N0.4) 831 | (245,2 N0.3)(247,2 N0.3)(249,1 N0.4)(257,1 N0.5)(260,1 N0.5) 832 | (266,1 N0.5)(272,1 N0.4)(274,3 N0.2)(291,1 N0.3)(292,2 N0.3) 833 | (293,1 N0.4)(295,1 N0.4)(298,1 N0.4)(300,3 N0.2)(304,1 N0.4) 834 | (309,1 N0.4)(314,1 N0.4)(323,1 N0.4)(346,2 N0.3)(349,2 N0.3) 835 | (350,2 N0.3)(354,1 N0.5)(369,1 N0.4)(372,2 N0.3)(380,1 N0.5) 836 | (388,1 N0.4)(391,1 N0.4)(394,2 N0.4)(400,1 N0.3)(405,2 N0.3) 837 | (409,1 N0.5)(411,2 N0.3)(417,1 N0.4)(418,1 N0.4)(426,1 N0.5) 838 | (431,2 N0.3)(438,2 N0.3)(441,1 N0.4)(462,2 N0.3)(464,1 N0.5) 839 | (466,1 N0.4)(469,1 N0.4)(481,1 N0.4)(492,1 N0.4)(498,1 N0.5) 840 | 841 | NAME: |SC3361|CN26|MP1-MODN:107(%93.3)|AM68882|PC91|SN514|WD9.1|TA0.9|TR422.5|FR3350-3370|RT14.2007|MN0.026|RA4.10|IS6925076|XN7314430|MO20: 107 93 105 79 91 95 81 148 119 133 135 67 121 109 41 106 55 94 53 120|EW2-1|FG0.999|TN11.589|OR1|NT0 842 | RE 843 | 4293 28413 66834 124768 202828 844 | 298479 410818 530688 636070 709340 845 | 745129 736210 677105 575320 447513 846 | 318115 207385 121776 61278 22715 847 | 0 848 | NUM PEAKS: 119 849 | (29,55 )(30,1 )(38,2 )(39,90 )(40,19 ) 850 | (41,241 )(42,17 )(43,64 )(44,2 )(50,3 ) 851 | (51,28 )(52,16 )(53,128 )(54,14 )(55,233 ) 852 | (56,12 )(57,24 )(58,4 )(59,2 )(62,1 ) 853 | (63,9 )(64,6 )(65,95 )(66,28 )(67,268 ) 854 | (68,50 )(69,108 )(70,7 )(71,5 )(72,3 ) 855 | (73,4 )(74,2 )(75,1 )(76,3 )(77,247 ) 856 | (78,54 )(79,517 )(80,74 )(81,391 )(82,38 ) 857 | (83,15 )(87,3 )(88,4 )(89,6 )(90,2 ) 858 | (91,497 )(92,88 )(93,958 )(94,189 )(95,378 ) 859 | (96,46 )(97,13 )(102,4 )(103,31 )(104,11 ) 860 | (105,657 )(106,236 )(107,999 )(108,861 )(109,242 ) 861 | (110,22 )(111,4 )(115,38 )(116,14 )(117,52 ) 862 | (118,12 )(119,360 )(120,111 )(121,257 )(122,68 ) 863 | (123,60 )(124,6 )(127,5 )(128,17 )(129,17 ) 864 | (130,8 )(131,32 )(132,8 )(133,354 )(134,117 ) 865 | (135,301 )(136,60 )(137,3 )(139,1 )(141,4 ) 866 | (142,2 )(143,3 )(144,2 )(145,15 )(146,8 ) 867 | (147,303 )(148,335 )(149,57 )(150,5 )(153,1 ) 868 | (160,4 )(161,140 )(162,39 )(163,6 )(175,24 ) 869 | (176,7 )(189,337 )(190,51 )(191,3 )(203,2 ) 870 | (204,166 )(205,27 )(206,2 )(84,1 N0.2)(98,1 N0.2) 871 | (101,1 N0.3)(126,1 N0.3)(152,1 N0.2)(154,1 N0.3)(157,1 N0.3) 872 | (159,1 N0.4)(173,1 N0.3)(174,1 N0.3)(177,1 N0.2) 873 | 874 | NAME: |SC3368|CN27|MP1-MODN:164(%83.2)|AM1580|PC0.92|SN25|WD9.3|TA1.6|TR0.9|FR3359-3378|RT14.2233|MN1.1|RA0.00863|IS15251|XN15402|MO1: 164|EW0-1|FG0.618|TN1.197|OR1|NT0 875 | RE 876 | 0 104 239 468 742 877 | 968 1231 1487 1575 1511 878 | 1366 1202 1027 861 695 879 | 522 411 347 285 211 880 | NUM PEAKS: 60 881 | (164,999 )(165,105 )(202,92 )(31,10 N0.4)(32,151 N0.2) 882 | (34,11 N0.3)(35,12 N0.4)(140,16 N0.3)(170,9 N0.4)(178,17 N0.3) 883 | (179,7 N0.5)(183,10 N0.4)(193,14 N0.3)(194,6 N0.5)(198,16 N0.4) 884 | (208,9 N0.3)(221,9 N0.4)(233,16 N0.3)(236,8 N0.4)(238,7 N0.4) 885 | (239,6 N0.4)(250,17 N0.3)(258,9 N0.4)(260,8 N0.4)(265,11 N0.4) 886 | (268,16 N0.3)(276,6 N0.5)(317,7 N0.4)(322,8 N0.5)(324,5 N0.4) 887 | (328,8 N0.5)(330,10 N0.4)(338,11 N0.4)(346,9 N0.4)(374,4 N0.5) 888 | (375,16 N0.3)(376,17 N0.3)(379,15 N0.3)(384,8 N0.4)(389,12 N0.4) 889 | (390,10 N0.4)(397,8 N0.4)(403,17 N0.3)(432,6 N0.4)(433,7 N0.5) 890 | (439,8 N0.4)(442,10 N0.4)(445,12 N0.4)(451,12 N0.3)(453,20 N0.3) 891 | (459,7 N0.5)(464,4 N0.4)(470,8 N0.5)(474,11 N0.4)(476,12 N0.4) 892 | (479,10 N0.3)(482,8 N0.4)(485,13 N0.4)(488,9 N0.4)(490,15 N0.3) 893 | 894 | NAME: |SC3397|CN28|MP1-MODN:94(%82.4)|AM1132|PC33|SN72|WD8.3|TA1.0|TR0.3|FR3387-3405|RT14.3210|MN1.6|RA0.0639|IS112318|XN114015|MO1: 94|EW0-1|FG0.844|TN13.879|OR1|NT0 895 | RE 896 | 0 829 2080 3024 4020 897 | 5525 7669 9966 11854 12939 898 | 12722 11433 9596 7554 5423 899 | 3688 2450 1263 281 900 | NUM PEAKS: 129 901 | (39,145 )(41,524 )(53,190 )(55,317 )(65,177 ) 902 | (67,524 )(69,238 )(77,425 )(78,149 )(79,665 ) 903 | (80,158 )(81,631 )(91,999 )(92,155 )(93,702 ) 904 | (94,895 )(95,445 )(105,686 )(106,160 )(107,777 ) 905 | (108,351 )(109,189 )(120,501 )(121,945 )(122,315 ) 906 | (123,157 )(133,558 )(147,359 )(148,127 )(161,592 ) 907 | (189,364 )(190,63 )(204,383 )(29,82 N0.2)(34,11 N0.5) 908 | (37,25 N0.3)(40,27 N0.4)(42,20 N0.5)(43,133 N0.2)(44,21 N0.4) 909 | (51,57 N0.3)(52,46 N0.3)(54,25 N0.3)(57,38 N0.5)(58,14 N0.5) 910 | (63,21 N0.5)(64,24 N0.4)(66,36 N0.3)(72,13 N0.5)(76,11 N0.5) 911 | (82,78 N0.2)(83,73 N0.2)(84,33 N0.3)(85,63 N0.3)(87,22 N0.3) 912 | (89,14 N0.5)(90,13 N0.4)(96,62 N0.2)(97,24 N0.4)(103,51 N0.4) 913 | (104,46 N0.3)(110,18 N0.4)(115,37 N0.4)(117,107 N0.2)(119,228 B0.5) 914 | (126,13 N0.5)(131,39 N0.5)(135,54 N0.3)(136,14 N0.4)(137,27 N0.4) 915 | (138,16 N0.3)(140,7 N0.5)(141,20 N0.4)(149,36 N0.4)(166,12 N0.4) 916 | (171,23 N0.3)(175,55 N0.2)(182,5 N0.5)(188,13 N0.4)(199,14 N0.4) 917 | (202,32 N0.3)(205,59 N0.2)(206,13 N0.4)(212,9 N0.5)(217,8 N0.5) 918 | (221,26 N0.3)(228,26 N0.3)(236,10 N0.5)(238,9 N0.4)(252,11 N0.5) 919 | (253,16 N0.3)(259,21 N0.3)(269,13 N0.4)(278,23 N0.3)(285,11 N0.4) 920 | (286,24 N0.3)(300,8 N0.5)(310,13 N0.4)(311,8 N0.5)(315,7 N0.5) 921 | (323,20 N0.3)(324,14 N0.4)(334,12 N0.4)(337,10 N0.4)(338,11 N0.4) 922 | (340,8 N0.4)(347,15 N0.4)(355,12 N0.3)(356,12 N0.4)(358,17 N0.4) 923 | (360,10 N0.4)(361,26 N0.3)(363,11 N0.4)(364,9 N0.5)(374,11 N0.4) 924 | (375,10 N0.4)(380,9 N0.4)(382,14 N0.4)(384,11 N0.4)(386,19 N0.3) 925 | (394,12 N0.4)(398,13 N0.4)(408,21 N0.3)(412,22 N0.3)(414,15 N0.4) 926 | (425,18 N0.3)(473,10 N0.5)(474,9 N0.5)(494,12 N0.4) 927 | 928 | NAME: |SC3410|CN29|MP1-MODN:119(%86.1)|AM2652|PC38|SN77|WD8.4|TA1.1|TR9.6|FR3403-3419|RT14.3637|MN0.69|RA0.0794|IS130688|XN141626|MO5: 119 161 134 105 204|EW1-1|FG0.848|TN6.698|OR1|NT0 929 | RE 930 | 4821 5721 7372 9625 12067 931 | 14177 15287 15017 13483 11155 932 | 8530 5962 3752 2112 1108 933 | 498 0 934 | NUM PEAKS: 145 935 | (41,135 )(65,58 )(77,149 )(79,78 )(81,339 ) 936 | (91,389 )(92,113 )(93,97 )(104,45 )(105,816 ) 937 | (106,81 )(115,124 )(116,38 )(117,149 )(118,56 ) 938 | (119,999 )(120,100 )(127,37 )(128,66 )(129,94 ) 939 | (133,249 )(134,620 )(135,44 )(145,55 )(147,80 ) 940 | (160,32 )(161,816 )(162,237 )(176,29 )(189,133 ) 941 | (204,357 )(205,65 )(478,13 )(29,14 N0.4)(39,38 N0.2) 942 | (40,13 N0.4)(44,8 N0.5)(50,8 N0.4)(51,36 N0.2)(52,8 N0.5) 943 | (53,38 N0.2)(55,59 N0.2)(63,20 N0.3)(69,57 N0.2)(70,13 N0.4) 944 | (72,12 N0.4)(75,11 N0.3)(76,21 N0.2)(78,29 N0.3)(82,8 N0.5) 945 | (89,18 N0.3)(99,18 N0.4)(102,10 N0.4)(103,48 N0.2)(112,10 N0.4) 946 | (114,6 N0.4)(126,7 N0.4)(130,14 N0.4)(131,53 N0.2)(141,16 N0.3) 947 | (142,21 N0.2)(143,8 N0.4)(144,11 N0.3)(148,12 N0.4)(150,15 N0.3) 948 | (155,10 N0.3)(159,26 N0.3)(163,18 N0.3)(172,3 N0.5)(175,6 N0.5) 949 | (177,4 N0.5)(178,5 N0.4)(180,9 N0.3)(185,11 N0.3)(186,5 N0.3) 950 | (190,22 N0.2)(191,11 N0.3)(195,5 N0.4)(206,12 N0.3)(207,8 N0.3) 951 | (208,4 N0.5)(209,4 N0.5)(216,8 N0.3)(217,5 N0.4)(218,5 N0.5) 952 | (221,7 N0.3)(223,6 N0.4)(227,11 N0.3)(228,5 N0.4)(230,7 N0.4) 953 | (232,6 N0.3)(239,7 N0.3)(244,6 N0.4)(246,7 N0.3)(247,4 N0.4) 954 | (252,4 N0.4)(254,5 N0.5)(256,6 N0.3)(261,3 N0.5)(262,4 N0.3) 955 | (264,5 N0.4)(266,4 N0.4)(268,9 N0.3)(271,7 N0.3)(273,3 N0.5) 956 | (277,6 N0.3)(279,6 N0.3)(281,7 N0.4)(291,7 N0.3)(299,7 N0.3) 957 | (300,10 N0.3)(314,5 N0.4)(316,5 N0.4)(317,7 N0.3)(320,7 N0.3) 958 | (324,4 N0.4)(326,8 N0.3)(328,5 N0.4)(329,4 N0.5)(334,6 N0.3) 959 | (337,3 N0.4)(339,6 N0.3)(346,11 N0.3)(348,2 N0.4)(351,7 N0.3) 960 | (353,3 N0.5)(355,8 N0.3)(361,5 N0.4)(367,3 N0.4)(374,4 N0.5) 961 | (383,8 N0.3)(389,8 N0.4)(393,4 N0.3)(394,4 N0.5)(403,4 N0.4) 962 | (404,9 N0.3)(415,6 N0.4)(419,6 N0.3)(425,5 N0.3)(445,5 N0.3) 963 | (459,10 N0.3)(463,6 N0.4)(482,7 N0.3)(485,3 N0.5)(488,3 N0.5) 964 | 965 | NAME: |SC3417|CN30|MP1-MODN:71(%81.3)|AM1073|PC18|SN43|WD11.8|TA0.5|TR0.3|FR3405-3423|RT14.3850|MN1.7|RA0.0280|IS46581|XN50021|MO1: 71|EW0-1|FG0.646|TN5.300|OR1|NT0 966 | RE 967 | 1569 1794 2087 2268 2290 968 | 2371 2660 3070 3544 4083 969 | 4579 4627 3958 3083 2277 970 | 1449 673 198 0 971 | NUM PEAKS: 143 972 | (38,52 )(41,241 )(43,686 )(55,219 )(57,874 ) 973 | (58,61 )(69,221 )(70,168 )(71,999 )(84,177 ) 974 | (85,707 )(99,250 )(110,81 )(111,83 )(113,213 ) 975 | (127,97 )(154,46 )(169,46 )(400,35 )(493,38 ) 976 | (29,65 N0.3)(30,20 N0.3)(31,17 N0.3)(33,27 N0.3)(34,32 N0.3) 977 | (37,24 N0.3)(39,59 N0.3)(42,30 N0.4)(46,12 N0.4)(47,9 N0.4) 978 | (48,10 N0.5)(52,22 N0.4)(54,27 N0.3)(56,72 N0.3)(63,18 N0.5) 979 | (67,49 N0.4)(68,23 N0.4)(72,48 N0.3)(73,23 N0.4)(75,18 N0.4) 980 | (76,41 N0.3)(80,33 N0.4)(82,67 N0.2)(83,81 N0.2)(86,53 N0.2) 981 | (89,21 N0.4)(93,84 N0.3)(94,23 N0.5)(95,105 N0.2)(97,22 N0.4) 982 | (98,24 N0.4)(100,23 N0.4)(101,15 N0.4)(106,111 N0.2)(112,34 N0.3) 983 | (114,22 N0.3)(126,32 N0.3)(135,27 N0.4)(136,17 N0.4)(140,27 N0.2) 984 | (147,42 N0.4)(155,45 N0.2)(156,16 N0.4)(164,45 N0.4)(173,13 N0.5) 985 | (182,13 N0.4)(188,28 N0.2)(193,9 N0.4)(196,27 N0.3)(197,18 N0.3) 986 | (199,11 N0.4)(208,16 N0.3)(211,19 N0.4)(214,7 N0.5)(221,20 N0.3) 987 | (222,11 N0.4)(229,23 N0.3)(231,12 N0.4)(234,15 N0.4)(236,10 N0.3) 988 | (238,21 N0.3)(243,7 N0.4)(245,16 N0.4)(248,10 N0.3)(250,17 N0.3) 989 | (251,32 N0.2)(254,14 N0.4)(256,18 N0.3)(266,10 N0.4)(267,15 N0.4) 990 | (273,11 N0.4)(276,26 N0.3)(284,17 N0.3)(286,22 N0.3)(293,18 N0.3) 991 | (295,18 N0.4)(297,17 N0.3)(300,17 N0.4)(302,13 N0.4)(305,9 N0.5) 992 | (315,22 N0.3)(316,13 N0.4)(321,14 N0.4)(322,29 N0.3)(323,18 N0.3) 993 | (328,9 N0.4)(330,17 N0.3)(337,6 N0.4)(338,25 N0.3)(347,13 N0.4) 994 | (355,17 N0.3)(368,29 N0.3)(370,7 N0.4)(371,12 N0.4)(372,8 N0.4) 995 | (374,25 N0.3)(375,18 N0.4)(379,31 N0.3)(380,20 N0.3)(385,13 N0.4) 996 | (388,17 N0.4)(396,27 N0.3)(402,24 N0.3)(403,12 N0.4)(410,16 N0.4) 997 | (411,13 N0.3)(413,10 N0.4)(430,21 N0.3)(431,16 N0.4)(433,14 N0.4) 998 | (436,14 N0.4)(438,19 N0.3)(447,13 N0.4)(455,19 N0.3)(456,14 N0.4) 999 | (470,11 N0.5)(473,10 N0.4)(475,9 N0.4)(479,14 N0.4)(480,11 N0.4) 1000 | (490,10 N0.4)(494,18 N0.3)(496,28 N0.3) 1001 | 1002 | NAME: |SC3432|CN31|MP1-MODN:159(%94.0)|AM3453|PC26|SN51|WD7.6|TA1.1|TR5.2|FR3422-3439|RT14.4360|MN0.53|RA0.0374|IS60689|XN66725|MO1: 159|EW1-3|FG0.777|TN2.313|OR1|NT0 1003 | RE 1004 | 0 313 713 1248 2183 1005 | 3418 4745 6119 7178 7508 1006 | 6986 5882 4588 3366 2466 1007 | 1787 1244 944 1008 | NUM PEAKS: 128 1009 | (115,111 )(117,59 )(127,46 )(128,172 )(129,179 ) 1010 | (130,35 )(131,179 )(141,61 )(142,47 )(143,57 ) 1011 | (144,109 )(157,31 )(158,38 )(159,999 )(160,107 ) 1012 | (202,61 )(203,19 )(38,3 N0.5)(42,6 N0.4)(47,8 N0.3) 1013 | (58,6 N0.4)(60,4 N0.4)(63,12 N0.3)(64,5 N0.5)(74,10 N0.3) 1014 | (75,8 N0.4)(86,5 N0.4)(87,6 N0.3)(89,14 N0.3)(90,6 N0.4) 1015 | (97,11 N0.3)(98,4 N0.5)(101,5 N0.4)(102,5 N0.5)(110,8 N0.3) 1016 | (113,10 N0.3)(116,24 N0.2)(118,10 N0.4)(126,5 N0.4)(132,24 N0.2) 1017 | (138,4 N0.4)(139,9 N0.3)(140,8 N0.3)(152,4 N0.5)(153,10 N0.3) 1018 | (154,10 N0.3)(155,13 N0.2)(163,5 N0.4)(176,8 N0.3)(178,3 N0.4) 1019 | (182,4 N0.4)(190,4 N0.4)(191,7 N0.3)(194,7 N0.3)(196,9 N0.2) 1020 | (197,3 N0.4)(208,8 N0.3)(213,5 N0.3)(215,5 N0.3)(219,4 N0.4) 1021 | (226,4 N0.4)(229,5 N0.3)(231,4 N0.4)(232,5 N0.4)(240,4 N0.4) 1022 | (243,8 N0.3)(252,5 N0.4)(254,7 N0.3)(257,6 N0.4)(264,6 N0.3) 1023 | (268,4 N0.4)(272,7 N0.3)(276,6 N0.4)(277,4 N0.4)(278,4 N0.5) 1024 | (279,5 N0.4)(286,7 N0.3)(287,7 N0.3)(288,4 N0.5)(289,4 N0.4) 1025 | (290,4 N0.4)(291,5 N0.4)(292,6 N0.3)(296,5 N0.4)(298,5 N0.3) 1026 | (302,5 N0.4)(303,5 N0.4)(304,4 N0.4)(307,9 N0.2)(310,6 N0.3) 1027 | (311,6 N0.3)(312,3 N0.5)(313,6 N0.3)(314,3 N0.4)(317,7 N0.3) 1028 | (327,6 N0.3)(332,7 N0.4)(333,6 N0.4)(337,4 N0.4)(344,3 N0.4) 1029 | (346,4 N0.4)(347,4 N0.4)(374,8 N0.3)(376,3 N0.5)(382,4 N0.5) 1030 | (387,7 N0.3)(389,3 N0.5)(390,8 N0.3)(393,7 N0.3)(402,4 N0.5) 1031 | (407,4 N0.4)(411,5 N0.3)(417,2 N0.5)(420,4 N0.4)(431,5 N0.4) 1032 | (437,3 N0.4)(438,5 N0.4)(441,3 N0.4)(447,3 N0.4)(449,4 N0.4) 1033 | (454,3 N0.4)(456,4 N0.4)(475,7 N0.3)(476,4 N0.4)(478,4 N0.4) 1034 | (480,4 N0.4)(486,5 N0.3)(497,3 N0.5) 1035 | 1036 | NAME: |SC3444|CN32|MP1-MODN:122(%87.7)|AM1496|PC38|SN67|WD8.4|TA0.9|TR3.7|FR3433-3452|RT14.4787|MN1.2|RA0.0607|IS102779|XN108379|MO3: 122 107 161|EW2-1|FG0.832|TN8.933|OR1|NT0 1037 | RE 1038 | 356 662 965 1591 2612 1039 | 3821 5308 7238 9281 10871 1040 | 11719 11662 10770 8994 6812 1041 | 4750 2988 1683 696 0 1042 | NUM PEAKS: 130 1043 | (39,114 )(41,199 )(53,137 )(55,182 )(65,138 ) 1044 | (67,178 )(77,286 )(78,78 )(79,396 )(81,334 ) 1045 | (91,606 )(92,70 )(93,323 )(95,182 )(105,628 ) 1046 | (107,999 )(108,98 )(117,105 )(119,327 )(120,73 ) 1047 | (121,164 )(122,953 )(123,106 )(131,155 )(133,264 ) 1048 | (134,73 )(145,331 )(146,78 )(147,92 )(161,837 ) 1049 | (162,137 )(174,31 )(189,56 )(202,96 )(204,97 ) 1050 | (29,37 N0.3)(31,28 N0.2)(33,10 N0.4)(37,8 N0.5)(38,8 N0.5) 1051 | (42,16 N0.4)(47,7 N0.4)(50,35 N0.2)(51,34 N0.3)(52,25 N0.3) 1052 | (61,10 N0.4)(64,12 N0.5)(66,34 N0.2)(68,32 N0.3)(69,48 N0.3) 1053 | (74,12 N0.4)(80,47 N0.2)(82,16 N0.4)(94,63 N0.2)(96,26 N0.3) 1054 | (103,51 N0.3)(104,33 N0.3)(106,65 N0.2)(109,35 N0.3)(115,67 N0.3) 1055 | (116,42 N0.2)(118,47 N0.2)(130,15 N0.5)(132,40 N0.3)(136,13 N0.4) 1056 | (148,22 N0.3)(149,22 N0.4)(152,9 N0.4)(165,22 N0.3)(166,8 N0.5) 1057 | (169,16 N0.3)(172,15 N0.3)(181,7 N0.5)(183,8 N0.4)(185,7 N0.5) 1058 | (186,14 N0.4)(187,138 B0.1)(188,34 N0.2)(190,24 N0.2)(192,11 N0.4) 1059 | (194,19 N0.3)(203,14 N0.4)(215,11 N0.3)(220,9 N0.4)(227,6 N0.4) 1060 | (255,14 N0.3)(286,16 N0.3)(288,8 N0.4)(289,19 N0.3)(306,9 N0.4) 1061 | (307,6 N0.5)(309,7 N0.5)(311,10 N0.4)(312,11 N0.3)(316,11 N0.4) 1062 | (319,13 N0.3)(324,10 N0.4)(325,10 N0.4)(327,9 N0.4)(330,8 N0.4) 1063 | (333,11 N0.4)(354,5 N0.4)(367,14 N0.4)(369,12 N0.3)(372,6 N0.4) 1064 | (379,8 N0.5)(384,12 N0.3)(386,7 N0.4)(394,17 N0.3)(401,11 N0.4) 1065 | (405,6 N0.5)(408,13 N0.3)(411,15 N0.3)(412,10 N0.4)(416,4 N0.4) 1066 | (417,9 N0.4)(419,7 N0.5)(432,10 N0.5)(434,14 N0.3)(448,17 N0.3) 1067 | (454,8 N0.5)(464,8 N0.5)(468,10 N0.4)(474,6 N0.4)(476,6 N0.5) 1068 | (481,11 N0.4)(483,7 N0.5)(491,17 N0.3)(495,13 N0.3)(498,14 N0.3) 1069 | 1070 | NAME: |SC3465|CN33|MP1-MODN:161(%87.8)|AM1228|PC44|SN67|WD8.3|TA1.7|TR0.5|FR3457-3475|RT14.5467|MN1.4|RA0.0642|IS105701|XN114498|MO1: 161|EW0-1|FG0.835|TN11.173|OR1|NT0 1071 | RE 1072 | 0 952 2353 4090 6379 1073 | 9234 11562 12050 11703 11292 1074 | 9980 7742 5813 4308 3138 1075 | 2289 1736 1055 26 1076 | NUM PEAKS: 132 1077 | (39,116 )(41,251 )(53,141 )(55,163 )(65,150 ) 1078 | (67,126 )(77,403 )(78,95 )(79,336 )(80,78 ) 1079 | (81,149 )(91,912 )(92,255 )(93,437 )(103,114 ) 1080 | (105,856 )(106,214 )(107,190 )(108,110 )(115,298 ) 1081 | (116,83 )(117,355 )(118,83 )(119,999 )(120,155 ) 1082 | (121,102 )(128,132 )(129,137 )(130,88 )(131,586 ) 1083 | (132,172 )(133,433 )(134,90 )(145,609 )(146,334 ) 1084 | (159,277 )(160,56 )(161,762 )(187,184 )(202,130 ) 1085 | (29,36 N0.3)(32,130 N0.3)(35,7 N0.4)(38,10 N0.5)(43,46 N0.4) 1086 | (51,69 N0.2)(52,35 N0.3)(54,19 N0.4)(57,47 N0.4)(58,27 N0.3) 1087 | (62,24 N0.3)(63,35 N0.3)(69,50 N0.3)(71,54 N0.3)(75,15 N0.4) 1088 | (76,27 N0.3)(83,23 N0.4)(89,30 N0.3)(94,64 N0.2)(95,88 N0.2) 1089 | (96,29 N0.3)(98,12 N0.5)(102,17 N0.4)(104,44 N0.3)(109,63 N0.2) 1090 | (110,14 N0.4)(111,19 N0.4)(122,46 N0.3)(123,21 N0.4)(124,14 N0.4) 1091 | (127,40 N0.3)(139,28 N0.3)(141,34 N0.3)(142,21 N0.4)(143,58 N0.2) 1092 | (144,43 N0.2)(147,73 N0.2)(148,23 N0.4)(149,24 N0.4)(150,17 N0.4) 1093 | (152,14 N0.4)(153,15 N0.4)(156,13 N0.4)(158,23 N0.3)(162,56 N0.2) 1094 | (165,20 N0.4)(173,18 N0.3)(174,15 N0.3)(186,13 N0.4)(188,17 N0.4) 1095 | (199,13 N0.4)(209,11 N0.5)(211,10 N0.4)(227,14 N0.4)(261,10 N0.4) 1096 | (264,8 N0.5)(268,19 N0.3)(276,17 N0.3)(280,10 N0.4)(290,16 N0.3) 1097 | (300,13 N0.4)(317,16 N0.3)(322,10 N0.4)(331,15 N0.3)(333,15 N0.3) 1098 | (334,11 N0.4)(338,17 N0.3)(355,8 N0.4)(360,9 N0.5)(367,7 N0.5) 1099 | (371,11 N0.4)(383,10 N0.4)(396,5 N0.4)(398,10 N0.4)(415,7 N0.5) 1100 | (418,14 N0.3)(420,19 N0.3)(423,10 N0.4)(425,15 N0.3)(436,13 N0.4) 1101 | (442,11 N0.3)(445,14 N0.3)(467,20 N0.3)(471,8 N0.4)(475,9 N0.5) 1102 | (487,8 N0.5)(488,21 N0.3)(490,16 N0.3)(491,17 N0.3)(493,6 N0.4) 1103 | (498,12 N0.4)(499,10 N0.4) 1104 | 1105 | NAME: |SC3467|CN34|MP1-MODN:119(%81.7)|AM1328|PC46|SN70|WD9.6|TA1.0|TR1.0|FR3457-3477|RT14.5537|MN1.3|RA0.0720|IS120968|XN128443|MO3: 119 105 91|EW1-1|FG0.856|TN11.271|OR1|NT0 1106 | RE 1107 | 480 1364 2510 4051 6065 1108 | 7978 9535 11040 11954 12238 1109 | 11902 10531 8520 6728 5262 1110 | 3966 3010 2230 1159 447 1111 | 0 1112 | NUM PEAKS: 134 1113 | (39,110 )(41,245 )(51,72 )(53,138 )(55,144 ) 1114 | (65,141 )(67,103 )(77,387 )(78,104 )(79,335 ) 1115 | (81,139 )(91,929 )(92,248 )(93,420 )(95,83 ) 1116 | (103,114 )(105,892 )(106,213 )(107,171 )(108,101 ) 1117 | (115,291 )(116,88 )(117,353 )(118,95 )(119,999 ) 1118 | (120,160 )(121,106 )(128,137 )(129,143 )(130,83 ) 1119 | (131,583 )(132,174 )(133,441 )(134,83 )(143,63 ) 1120 | (145,591 )(146,349 )(147,82 )(159,280 )(160,58 ) 1121 | (161,700 )(187,183 )(202,130 )(29,37 N0.3)(32,138 N0.3) 1122 | (43,27 N0.5)(52,28 N0.3)(57,38 N0.4)(58,25 N0.3)(62,17 N0.4) 1123 | (63,33 N0.3)(69,51 N0.3)(71,44 N0.4)(72,11 N0.5)(75,17 N0.4) 1124 | (76,28 N0.3)(80,63 N0.2)(83,14 N0.5)(89,33 N0.3)(90,12 N0.4) 1125 | (94,67 N0.2)(96,21 N0.4)(98,18 N0.3)(102,18 N0.4)(104,53 N0.2) 1126 | (109,59 N0.2)(110,11 N0.5)(113,13 N0.4)(122,33 N0.3)(123,15 N0.4) 1127 | (127,46 N0.2)(135,14 N0.4)(139,28 N0.3)(141,38 N0.3)(142,33 N0.3) 1128 | (144,41 N0.2)(148,25 N0.3)(149,28 N0.3)(150,13 N0.4)(152,15 N0.4) 1129 | (153,18 N0.3)(155,16 N0.3)(156,14 N0.4)(158,22 N0.3)(162,45 N0.3) 1130 | (164,22 N0.5)(165,24 N0.3)(170,9 N0.4)(173,16 N0.4)(174,10 N0.5) 1131 | (186,12 N0.5)(188,18 N0.4)(199,16 N0.3)(208,12 N0.4)(209,11 N0.5) 1132 | (227,8 N0.4)(252,9 N0.4)(268,15 N0.4)(275,8 N0.4)(276,11 N0.4) 1133 | (280,10 N0.4)(290,13 N0.4)(294,9 N0.4)(297,8 N0.5)(300,9 N0.4) 1134 | (317,17 N0.3)(322,7 N0.5)(325,8 N0.5)(327,12 N0.4)(331,13 N0.3) 1135 | (332,6 N0.4)(333,11 N0.4)(334,8 N0.5)(338,14 N0.4)(345,11 N0.4) 1136 | (360,6 N0.5)(371,11 N0.4)(398,9 N0.4)(415,7 N0.4)(418,11 N0.3) 1137 | (420,11 N0.4)(423,10 N0.4)(425,16 N0.4)(436,10 N0.4)(442,12 N0.4) 1138 | (445,17 N0.3)(467,20 N0.3)(468,12 N0.4)(488,15 N0.3)(490,14 N0.4) 1139 | (491,11 N0.4)(493,9 N0.4)(498,15 N0.3)(499,7 N0.5) 1140 | 1141 | NAME: |SC3626|CN35|MP1-MODN:107(%87.0)|AM793|PC41|SN58|WD8.7|TA1.1|TR0.0|FR3619-3634|RT15.0843|MN2.3|RA0.0436|IS73149|XN77861|MO1: 107|EW1-1|FG0.785|TN12.677|OR1|NT0 1142 | RE 1143 | 1247 2450 4215 5837 7062 1144 | 7978 8750 8574 7724 6621 1145 | 5241 3686 2251 1126 386 1146 | 0 1147 | NUM PEAKS: 154 1148 | (29,130 )(39,161 )(41,385 )(43,618 )(53,201 ) 1149 | (55,415 )(65,175 )(67,556 )(68,279 )(69,201 ) 1150 | (77,324 )(78,102 )(79,630 )(81,675 )(82,195 ) 1151 | (83,351 )(91,496 )(93,634 )(94,238 )(95,581 ) 1152 | (105,561 )(106,194 )(107,999 )(108,322 )(109,458 ) 1153 | (110,100 )(111,389 )(119,274 )(120,164 )(121,202 ) 1154 | (122,224 )(123,291 )(131,189 )(133,140 )(135,112 ) 1155 | (145,190 )(147,258 )(148,101 )(187,98 )(188,49 ) 1156 | (40,47 N0.4)(48,13 N0.4)(51,62 N0.3)(54,20 N0.4)(57,78 N0.3) 1157 | (60,12 N0.5)(71,82 N0.3)(74,15 N0.5)(80,91 N0.2)(84,49 N0.3) 1158 | (89,33 N0.3)(92,79 N0.2)(96,98 N0.2)(97,92 N0.2)(98,43 N0.3) 1159 | (103,52 N0.3)(104,49 N0.3)(114,42 N0.2)(115,45 N0.3)(117,67 N0.2) 1160 | (118,53 N0.2)(124,21 N0.4)(125,53 N0.2)(128,27 N0.4)(129,74 N0.2) 1161 | (130,33 N0.3)(132,34 N0.4)(134,39 N0.3)(136,43 N0.3)(137,45 N0.3) 1162 | (141,39 N0.3)(142,23 N0.3)(143,23 N0.4)(144,30 N0.3)(146,46 N0.3) 1163 | (149,101 N0.2)(150,20 N0.4)(157,18 N0.4)(159,78 N0.2)(160,20 N0.4) 1164 | (161,53 N0.3)(162,44 N0.3)(163,49 N0.3)(164,75 N0.3)(168,21 N0.3) 1165 | (174,20 N0.4)(175,40 N0.3)(176,34 N0.3)(177,61 N0.2)(182,15 N0.4) 1166 | (189,74 N0.2)(198,19 N0.4)(204,23 N0.3)(205,32 N0.3)(214,14 N0.4) 1167 | (219,20 N0.4)(228,25 N0.3)(230,18 N0.4)(232,18 N0.3)(242,18 N0.4) 1168 | (252,24 N0.3)(262,16 N0.4)(274,10 N0.5)(276,10 N0.4)(290,10 N0.5) 1169 | (300,11 N0.5)(302,20 N0.4)(303,11 N0.5)(306,18 N0.4)(314,17 N0.4) 1170 | (315,19 N0.4)(317,13 N0.4)(318,15 N0.4)(320,19 N0.4)(326,33 N0.3) 1171 | (327,29 N0.3)(329,29 N0.3)(330,13 N0.5)(331,16 N0.4)(336,9 N0.5) 1172 | (340,16 N0.5)(344,11 N0.5)(346,10 N0.5)(351,14 N0.3)(353,13 N0.5) 1173 | (355,30 N0.3)(356,18 N0.4)(358,26 N0.3)(362,18 N0.4)(363,14 N0.4) 1174 | (368,16 N0.4)(369,30 N0.3)(381,13 N0.5)(412,14 N0.4)(420,15 N0.4) 1175 | (423,30 N0.3)(426,15 N0.4)(432,21 N0.3)(434,19 N0.4)(437,15 N0.5) 1176 | (439,12 N0.4)(441,12 N0.5)(442,8 N0.5)(451,24 N0.3)(454,18 N0.4) 1177 | (456,17 N0.4)(457,13 N0.4)(458,8 N0.4)(464,12 N0.5)(465,12 N0.4) 1178 | (472,14 N0.5)(476,10 N0.4)(477,32 N0.3)(498,15 N0.4) 1179 | 1180 | NAME: |SC3672|CN36|MP1-MODN:206(%94.0)|AM2490|PC21|SN73|WD8.5|TA0.9|TR0.4|FR3662-3680|RT15.2363|MN0.73|RA0.0820|IS135797|XN146266|MO1: 206|EW1-1|FG0.610|TN6.537|OR1|NT0 1181 | RE 1182 | 170 1149 2787 4788 7171 1183 | 10384 13086 14533 15044 15299 1184 | 14554 12107 9086 6022 4000 1185 | 2809 1894 915 0 1186 | NUM PEAKS: 171 1187 | (107,989 )(108,319 )(110,175 )(115,65 )(116,39 ) 1188 | (117,220 )(118,48 )(121,348 )(122,999 )(123,228 ) 1189 | (124,115 )(125,42 )(128,49 )(129,60 )(131,253 ) 1190 | (135,315 )(137,309 )(143,35 )(145,328 )(146,194 ) 1191 | (150,40 )(159,119 )(163,105 )(164,56 )(173,58 ) 1192 | (178,29 )(187,127 )(188,25 )(191,449 )(192,67 ) 1193 | (202,39 )(206,288 )(29,29 N0.3)(35,5 N0.4)(37,11 N0.3) 1194 | (38,10 N0.4)(39,73 N0.2)(40,18 N0.4)(41,180 B0.7)(42,15 N0.4) 1195 | (43,270 B0.4)(45,14 N0.3)(48,4 N0.5)(49,6 N0.4)(50,9 N0.4) 1196 | (51,50 N0.2)(53,92 B0.2)(54,14 N0.4)(55,193 B0.3)(61,8 N0.4) 1197 | (63,23 N0.3)(64,10 N0.4)(65,88 B0.2)(66,27 N0.3)(68,54 N0.2) 1198 | (70,48 N0.2)(76,5 N0.5)(77,212 B0.2)(78,53 N0.2)(80,42 N0.3) 1199 | (81,305 B0.1)(82,73 B0.7)(89,16 N0.3)(90,13 N0.3)(94,118 B0.2) 1200 | (95,215 B0.6)(97,53 N0.2)(98,14 N0.3)(100,8 N0.4)(101,7 N0.4) 1201 | (103,39 N0.2)(104,16 N0.3)(105,211 B0.5)(109,388 B0.0)(119,112 B0.5) 1202 | (130,32 N0.2)(132,41 N0.2)(136,97 B0.0)(138,35 N0.3)(139,10 N0.4) 1203 | (141,11 N0.3)(144,14 N0.3)(147,69 B0.3)(149,53 N0.2)(156,8 N0.4) 1204 | (157,13 N0.3)(158,8 N0.4)(160,29 N0.2)(162,16 N0.4)(165,10 N0.4) 1205 | (169,6 N0.4)(170,9 N0.3)(171,9 N0.3)(172,4 N0.4)(174,18 N0.3) 1206 | (177,43 B0.3)(181,9 N0.3)(190,5 N0.5)(198,4 N0.5)(203,10 N0.3) 1207 | (205,19 N0.3)(207,26 N0.3)(208,9 N0.4)(213,6 N0.4)(219,6 N0.4) 1208 | (220,16 N0.3)(223,2 N0.5)(225,4 N0.4)(235,6 N0.5)(237,6 N0.4) 1209 | (238,7 N0.3)(246,4 N0.5)(257,3 N0.4)(258,5 N0.4)(259,6 N0.4) 1210 | (263,6 N0.4)(267,9 N0.3)(270,7 N0.3)(275,8 N0.3)(276,5 N0.4) 1211 | (278,5 N0.4)(280,3 N0.5)(284,5 N0.4)(287,7 N0.4)(305,9 N0.3) 1212 | (307,9 N0.4)(315,8 N0.3)(319,10 N0.3)(320,5 N0.4)(321,6 N0.4) 1213 | (325,5 N0.5)(326,4 N0.4)(331,10 N0.3)(334,4 N0.5)(335,7 N0.4) 1214 | (336,5 N0.4)(337,5 N0.4)(343,5 N0.5)(351,3 N0.4)(352,5 N0.4) 1215 | (361,7 N0.4)(363,5 N0.4)(367,5 N0.4)(369,3 N0.5)(370,7 N0.3) 1216 | (377,5 N0.4)(379,9 N0.3)(381,2 N0.4)(382,5 N0.4)(386,7 N0.3) 1217 | (391,8 N0.3)(395,4 N0.4)(397,4 N0.5)(416,12 N0.3)(422,5 N0.4) 1218 | (441,4 N0.5)(443,5 N0.4)(445,4 N0.5)(446,7 N0.3)(448,5 N0.4) 1219 | (454,10 N0.3)(458,7 N0.4)(467,8 N0.4)(469,9 N0.3)(470,5 N0.4) 1220 | (476,5 N0.4)(480,4 N0.4)(483,5 N0.5)(490,7 N0.4)(495,6 N0.4) 1221 | (496,7 N0.4) 1222 | 1223 | NAME: |SC3684|CN37|MP1-MODN:79(%87.3)|AM5482|PC76|SN166|WD9.3|TA1.0|TR52.4|FR3676-3692|RT15.2760|MN0.33|RA0.402|IS661647|XN717532|MO20: 79 93 91 43 69 95 41 67 96 109 105 106 55 107 77 81 121 94 110 82|EW0-2|FG0.975|TN15.121|OR1|NT0 1224 | RE 1225 | 23267 27248 34567 44774 55540 1226 | 64625 70793 72359 68541 60541 1227 | 49577 37150 25406 15600 8301 1228 | 3360 0 1229 | NUM PEAKS: 171 1230 | (29,93 )(39,208 )(40,49 )(41,626 )(42,38 ) 1231 | (43,636 )(44,26 )(45,16 )(51,54 )(52,34 ) 1232 | (53,190 )(54,43 )(55,398 )(56,55 )(57,119 ) 1233 | (58,25 )(59,16 )(65,164 )(66,57 )(67,497 ) 1234 | (68,126 )(69,585 )(70,59 )(71,206 )(72,15 ) 1235 | (77,396 )(78,136 )(79,999 )(80,178 )(81,379 ) 1236 | (82,221 )(83,217 )(84,55 )(85,105 )(90,9 ) 1237 | (91,812 )(92,159 )(93,871 )(94,232 )(95,564 ) 1238 | (96,392 )(97,87 )(98,19 )(99,21 )(103,27 ) 1239 | (104,23 )(105,429 )(106,366 )(107,410 )(108,159 ) 1240 | (109,448 )(110,245 )(111,95 )(112,15 )(117,60 ) 1241 | (118,22 )(119,245 )(120,212 )(121,307 )(123,203 ) 1242 | (124,37 )(125,24 )(127,27 )(131,96 )(132,32 ) 1243 | (133,170 )(134,106 )(135,116 )(136,81 )(137,38 ) 1244 | (138,111 )(139,20 )(140,14 )(145,35 )(147,85 ) 1245 | (148,47 )(149,132 )(150,31 )(151,37 )(152,12 ) 1246 | (159,33 )(161,119 )(162,32 )(163,33 )(164,29 ) 1247 | (165,16 )(176,23 )(177,52 )(187,25 )(189,14 ) 1248 | (205,26 )(30,5 N0.3)(31,3 N0.4)(32,14 N0.5)(36,5 N0.3) 1249 | (38,5 N0.3)(46,4 N0.3)(50,4 N0.5)(60,4 N0.3)(61,5 N0.3) 1250 | (62,3 N0.4)(63,16 N0.2)(64,8 N0.3)(76,5 N0.4)(86,6 N0.3) 1251 | (89,9 N0.3)(100,4 N0.4)(113,10 N0.3)(115,18 N0.2)(116,5 N0.4) 1252 | (122,40 B0.0)(126,7 N0.3)(129,8 N0.3)(146,16 N0.2)(153,7 N0.3) 1253 | (155,2 N0.5)(156,3 N0.3)(157,3 N0.5)(160,14 N0.2)(175,12 N0.2) 1254 | (178,7 N0.3)(179,3 N0.4)(181,3 N0.3)(184,3 N0.5)(190,2 N0.5) 1255 | (193,3 N0.5)(208,3 N0.4)(209,2 N0.5)(223,2 N0.4)(227,4 N0.3) 1256 | (231,5 N0.3)(237,1 N0.5)(242,3 N0.4)(247,2 N0.4)(249,2 N0.4) 1257 | (250,3 N0.4)(251,2 N0.5)(262,6 N0.3)(273,4 N0.3)(277,2 N0.5) 1258 | (282,2 N0.5)(293,4 N0.3)(295,2 N0.4)(299,4 N0.3)(320,2 N0.4) 1259 | (323,3 N0.4)(328,3 N0.3)(330,2 N0.4)(342,3 N0.4)(344,4 N0.3) 1260 | (346,2 N0.4)(347,2 N0.4)(358,2 N0.4)(370,2 N0.4)(386,4 N0.3) 1261 | (399,2 N0.3)(412,4 N0.3)(413,2 N0.4)(429,2 N0.4)(438,3 N0.4) 1262 | (444,4 N0.3)(459,2 N0.4)(461,2 N0.4)(462,2 N0.5)(466,5 N0.3) 1263 | (468,1 N0.5)(479,2 N0.4)(485,2 N0.5)(486,2 N0.5)(488,3 N0.4) 1264 | (496,2 N0.4) 1265 | 1266 | NAME: |SC3733|CN38|MP1-MODN:161(%91.9)|AM917|PC20|SN39|WD9.5|TA0.9|TR0.2|FR3723-3740|RT15.4400|MN2.0|RA0.0243|IS39084|XN43406|MO1: 161|EW1-2|FG0.540|TN5.081|OR1|NT0 1267 | RE 1268 | 0 373 747 1172 2119 1269 | 2773 3263 3711 4113 4281 1270 | 4146 3721 3039 2362 1611 1271 | 938 462 252 1272 | NUM PEAKS: 155 1273 | (41,170 )(43,207 )(57,164 )(79,175 )(91,327 ) 1274 | (95,138 )(105,473 )(107,191 )(115,132 )(117,132 ) 1275 | (119,490 )(131,290 )(145,239 )(146,74 )(159,178 ) 1276 | (161,999 )(162,125 )(173,55 )(187,291 )(188,57 ) 1277 | (205,169 )(29,27 N0.5)(31,15 N0.4)(32,87 N0.5)(33,23 N0.3) 1278 | (39,45 N0.4)(42,55 N0.3)(45,27 N0.4)(46,19 N0.3)(51,58 N0.3) 1279 | (53,67 N0.3)(54,14 N0.5)(55,109 N0.3)(56,33 N0.4)(60,24 N0.3) 1280 | (63,20 N0.5)(65,83 N0.3)(66,35 N0.3)(67,48 N0.4)(69,83 N0.3) 1281 | (70,36 N0.4)(71,150 B0.0)(74,17 N0.4)(77,156 N0.2)(78,27 N0.5) 1282 | (81,91 N0.3)(85,68 N0.3)(89,26 N0.4)(90,31 N0.3)(92,36 N0.4) 1283 | (93,154 N0.2)(98,21 N0.4)(99,74 N0.2)(102,27 N0.4)(103,47 N0.3) 1284 | (104,32 N0.4)(106,77 N0.2)(108,35 N0.4)(110,19 N0.5)(111,38 N0.3) 1285 | (113,21 N0.4)(116,26 N0.4)(118,23 N0.4)(120,68 N0.2)(121,88 N0.3) 1286 | (125,21 N0.4)(126,19 N0.4)(127,51 N0.2)(128,80 N0.2)(129,80 N0.2) 1287 | (130,66 N0.2)(132,72 N0.2)(133,94 N0.2)(134,26 N0.4)(135,28 N0.5) 1288 | (137,42 N0.3)(138,18 N0.5)(142,18 N0.4)(143,20 N0.5)(144,31 N0.3) 1289 | (147,76 N0.3)(149,55 N0.3)(150,15 N0.5)(153,18 N0.4)(160,37 N0.2) 1290 | (163,51 N0.3)(166,16 N0.4)(172,10 N0.5)(177,22 N0.4)(179,19 N0.4) 1291 | (196,14 N0.4)(197,21 N0.4)(199,15 N0.4)(200,17 N0.4)(202,34 N0.3) 1292 | (203,15 N0.4)(217,27 N0.3)(220,32 N0.3)(227,16 N0.4)(233,16 N0.4) 1293 | (235,15 N0.4)(236,9 N0.5)(239,18 N0.4)(242,9 N0.5)(243,12 N0.4) 1294 | (251,13 N0.5)(255,29 N0.3)(266,20 N0.3)(280,17 N0.4)(288,15 N0.3) 1295 | (301,24 N0.3)(309,11 N0.5)(315,10 N0.5)(316,15 N0.4)(321,12 N0.4) 1296 | (324,14 N0.4)(331,19 N0.4)(335,16 N0.4)(344,12 N0.5)(350,11 N0.4) 1297 | (355,28 N0.3)(360,8 N0.4)(361,11 N0.4)(363,14 N0.4)(366,19 N0.4) 1298 | (368,12 N0.4)(376,8 N0.5)(380,13 N0.4)(382,13 N0.4)(384,11 N0.4) 1299 | (385,15 N0.5)(392,9 N0.4)(394,14 N0.4)(400,17 N0.4)(401,36 N0.2) 1300 | (424,22 N0.3)(426,32 N0.3)(431,15 N0.4)(432,7 N0.4)(434,8 N0.5) 1301 | (441,22 N0.4)(446,14 N0.4)(447,39 N0.2)(449,11 N0.5)(450,20 N0.4) 1302 | (451,16 N0.4)(463,13 N0.4)(468,33 N0.3)(477,12 N0.5)(483,12 N0.4) 1303 | (484,12 N0.3)(486,15 N0.3)(490,14 N0.4)(491,14 N0.4)(495,12 N0.5) 1304 | 1305 | NAME: |SC3782|CN39|MP1-MODN:96(%92.9)|AM1415|PC48|SN74|WD9.4|TA1.4|TR1.8|FR3772-3792|RT15.6047|MN1.2|RA0.0876|IS148956|XN156250|MO4: 96 67 109 138|EW1-1|FG0.827|TN11.636|OR1|NT0 1306 | RE 1307 | 0 567 1468 2671 4605 1308 | 6821 9057 11505 14003 15298 1309 | 15104 14134 12577 10768 8896 1310 | 6844 4940 3674 2776 1954 1311 | 1291 1312 | NUM PEAKS: 155 1313 | (29,81 )(39,179 )(41,397 )(43,710 )(53,212 ) 1314 | (54,52 )(55,378 )(65,124 )(66,65 )(67,999 ) 1315 | (68,275 )(69,268 )(77,269 )(79,424 )(80,162 ) 1316 | (81,430 )(82,304 )(83,118 )(91,373 )(92,75 ) 1317 | (93,699 )(94,154 )(95,485 )(96,893 )(97,84 ) 1318 | (105,313 )(107,248 )(108,68 )(109,811 )(110,174 ) 1319 | (111,148 )(120,146 )(121,175 )(122,78 )(123,339 ) 1320 | (124,71 )(137,109 )(138,591 )(139,54 )(147,87 ) 1321 | (40,35 N0.3)(42,49 N0.2)(44,20 N0.4)(45,14 N0.5)(46,21 N0.3) 1322 | (51,53 N0.2)(52,28 N0.3)(56,28 N0.3)(57,51 N0.3)(58,18 N0.3) 1323 | (59,16 N0.3)(70,38 N0.2)(71,56 N0.2)(73,37 N0.3)(75,18 N0.4) 1324 | (78,47 N0.3)(84,19 N0.4)(86,16 N0.4)(90,6 N0.5)(98,26 N0.3) 1325 | (99,12 N0.4)(102,15 N0.4)(103,21 N0.4)(104,12 N0.5)(106,60 N0.2) 1326 | (112,21 N0.3)(113,10 N0.4)(115,31 N0.3)(116,28 N0.2)(117,28 N0.4) 1327 | (119,127 B0.2)(125,32 N0.3)(127,10 N0.5)(128,17 N0.4)(129,21 N0.4) 1328 | (131,59 N0.3)(133,77 N0.2)(135,44 N0.3)(136,23 N0.3)(140,9 N0.4) 1329 | (145,70 B0.5)(148,14 N0.4)(149,32 N0.3)(150,50 N0.2)(151,24 N0.3) 1330 | (152,21 N0.3)(159,53 N0.2)(160,18 N0.3)(161,43 N0.2)(162,41 N0.2) 1331 | (164,35 N0.3)(165,10 N0.5)(177,31 N0.3)(180,12 N0.4)(181,11 N0.3) 1332 | (182,10 N0.4)(187,41 N0.3)(191,11 N0.4)(193,17 N0.3)(196,10 N0.4) 1333 | (199,18 N0.3)(203,9 N0.5)(207,30 N0.3)(213,14 N0.4)(214,9 N0.5) 1334 | (220,20 N0.3)(221,13 N0.4)(223,13 N0.3)(224,18 N0.3)(231,7 N0.4) 1335 | (232,6 N0.5)(233,6 N0.5)(237,19 N0.3)(243,9 N0.4)(281,18 N0.3) 1336 | (297,12 N0.4)(308,16 N0.3)(335,12 N0.3)(337,11 N0.4)(348,15 N0.3) 1337 | (349,7 N0.4)(351,12 N0.4)(352,8 N0.4)(364,6 N0.5)(366,7 N0.5) 1338 | (368,7 N0.4)(369,9 N0.4)(372,10 N0.4)(374,10 N0.4)(392,7 N0.5) 1339 | (395,10 N0.4)(396,18 N0.3)(398,7 N0.4)(403,7 N0.4)(415,18 N0.3) 1340 | (419,7 N0.5)(424,8 N0.5)(426,13 N0.3)(429,13 N0.3)(430,8 N0.5) 1341 | (433,6 N0.5)(447,7 N0.4)(449,8 N0.4)(451,12 N0.4)(452,13 N0.4) 1342 | (456,13 N0.3)(459,5 N0.5)(460,9 N0.5)(467,10 N0.4)(469,9 N0.4) 1343 | (473,15 N0.3)(474,14 N0.3)(487,10 N0.4)(494,8 N0.5)(497,14 N0.3) 1344 | 1345 | NAME: |SC3825|CN40|MP1-MODN:81(%86.7)|AM1529|PC66|SN109|WD9.2|TA1.1|TR5.7|FR3815-3832|RT15.7470|MN1.1|RA0.177|IS290258|XN317126|MO11: 81 109 95 55 125 107 93 67 119 105 41|EW2-1|FG0.919|TN23.636|OR1|NT0 1346 | RE 1347 | 0 1452 3779 6986 11335 1348 | 16800 22420 27051 30100 31323 1349 | 30226 27123 23140 18956 14623 1350 | 10802 8007 6136 1351 | NUM PEAKS: 203 1352 | (29,141 )(39,193 )(41,719 )(42,76 )(43,668 ) 1353 | (45,38 )(53,255 )(54,58 )(55,895 )(56,144 ) 1354 | (57,382 )(65,145 )(66,62 )(67,737 )(68,208 ) 1355 | (69,631 )(70,139 )(71,278 )(77,343 )(78,90 ) 1356 | (79,602 )(80,149 )(81,999 )(82,272 )(83,320 ) 1357 | (84,61 )(85,211 )(91,582 )(92,133 )(93,724 ) 1358 | (94,203 )(95,919 )(96,203 )(97,291 )(98,191 ) 1359 | (99,61 )(105,682 )(106,259 )(107,779 )(108,491 ) 1360 | (109,968 )(110,254 )(111,134 )(112,60 )(117,84 ) 1361 | (119,658 )(120,229 )(121,611 )(122,411 )(123,514 ) 1362 | (124,329 )(125,756 )(126,102 )(131,122 )(133,365 ) 1363 | (134,202 )(135,156 )(137,218 )(138,157 )(139,51 ) 1364 | (146,44 )(147,386 )(148,207 )(149,125 )(151,276 ) 1365 | (159,108 )(160,43 )(161,485 )(162,213 )(163,72 ) 1366 | (165,187 )(166,46 )(175,90 )(176,36 )(179,47 ) 1367 | (189,308 )(190,41 )(204,184 )(30,13 N0.3)(32,64 N0.4) 1368 | (33,14 N0.3)(37,12 N0.4)(40,39 N0.3)(48,8 N0.4)(51,45 N0.3) 1369 | (52,27 N0.3)(58,17 N0.4)(59,38 N0.2)(72,27 N0.2)(73,9 N0.5) 1370 | (76,6 N0.5)(86,30 N0.3)(89,23 N0.3)(90,9 N0.4)(102,13 N0.4) 1371 | (103,51 N0.2)(104,43 N0.2)(113,35 N0.3)(114,17 N0.3)(115,46 N0.3) 1372 | (116,23 N0.3)(118,34 N0.3)(127,24 N0.3)(128,17 N0.4)(129,37 N0.3) 1373 | (136,48 N0.2)(140,20 N0.3)(141,40 N0.2)(143,26 N0.3)(144,17 N0.3) 1374 | (145,54 N0.2)(150,31 N0.2)(152,37 N0.2)(153,22 N0.3)(156,4 N0.5) 1375 | (164,35 N0.3)(167,21 N0.2)(169,24 N0.2)(172,14 N0.3)(173,14 N0.3) 1376 | (177,29 N0.3)(180,19 N0.3)(181,13 N0.3)(183,19 N0.3)(184,8 N0.5) 1377 | (185,12 N0.4)(187,24 N0.3)(188,20 N0.2)(191,7 N0.5)(193,32 N0.2) 1378 | (200,9 N0.4)(202,16 N0.4)(207,29 N0.3)(212,8 N0.4)(214,8 N0.5) 1379 | (218,11 N0.4)(222,8 N0.4)(230,8 N0.4)(238,6 N0.5)(245,15 N0.3) 1380 | (246,6 N0.4)(251,9 N0.4)(252,10 N0.4)(261,21 N0.3)(264,8 N0.4) 1381 | (268,12 N0.4)(274,13 N0.3)(279,9 N0.4)(285,10 N0.4)(286,20 N0.3) 1382 | (288,9 N0.4)(303,9 N0.4)(305,7 N0.5)(307,10 N0.3)(310,8 N0.4) 1383 | (312,12 N0.4)(314,12 N0.4)(315,7 N0.4)(319,16 N0.3)(326,11 N0.4) 1384 | (329,7 N0.5)(336,18 N0.3)(337,9 N0.4)(343,7 N0.5)(346,9 N0.4) 1385 | (350,6 N0.4)(361,11 N0.3)(364,10 N0.4)(368,3 N0.4)(374,12 N0.3) 1386 | (377,6 N0.4)(385,7 N0.4)(389,12 N0.3)(390,9 N0.4)(401,8 N0.4) 1387 | (407,14 N0.3)(408,11 N0.4)(411,17 N0.3)(416,11 N0.4)(417,12 N0.3) 1388 | (418,6 N0.5)(420,15 N0.3)(421,10 N0.3)(428,8 N0.5)(429,8 N0.3) 1389 | (431,9 N0.5)(434,8 N0.4)(435,10 N0.4)(436,5 N0.5)(438,5 N0.4) 1390 | (450,10 N0.4)(451,17 N0.3)(452,8 N0.4)(455,12 N0.4)(461,6 N0.5) 1391 | (462,16 N0.3)(463,24 N0.2)(464,9 N0.4)(468,9 N0.4)(477,10 N0.4) 1392 | (482,7 N0.4)(495,18 N0.3)(497,4 N0.5) 1393 | 1394 | NAME: |SC3938|CN41|MP1-MODN:107(%87.6)|AM6336|PC78|SN188|WD8.4|TA1.0|TR95.2|FR3927-3946|RT16.1227|MN0.28|RA0.493|IS802042|XN879440|MO20: 107 81 108 121 43 93 67 122 71 161 95 109 189 55 105 79 119 82 69 41|EW2-2|FG0.975|TN16.765|OR1|NT0 1395 | RE 1396 | 0 2482 6321 12477 21603 1397 | 34145 49811 66262 80357 90025 1398 | 93102 87952 75853 60764 45708 1399 | 31956 20519 12261 6936 3508 1400 | NUM PEAKS: 192 1401 | (29,82 )(39,114 )(40,29 )(41,350 )(42,37 ) 1402 | (43,715 )(44,20 )(45,30 )(51,26 )(52,21 ) 1403 | (53,175 )(54,42 )(55,465 )(56,46 )(57,73 ) 1404 | (58,90 )(59,31 )(65,95 )(66,36 )(67,636 ) 1405 | (68,129 )(69,320 )(70,80 )(71,581 )(72,30 ) 1406 | (77,184 )(78,38 )(79,455 )(80,143 )(81,838 ) 1407 | (82,315 )(83,257 )(84,53 )(85,34 )(91,334 ) 1408 | (92,77 )(93,696 )(94,212 )(95,470 )(96,140 ) 1409 | (97,127 )(98,28 )(103,18 )(105,475 )(106,144 ) 1410 | (107,999 )(108,717 )(109,483 )(110,63 )(111,143 ) 1411 | (112,21 )(117,28 )(119,363 )(120,191 )(121,688 ) 1412 | (122,538 )(123,197 )(124,29 )(125,92 )(126,63 ) 1413 | (127,17 )(133,297 )(134,140 )(135,108 )(136,78 ) 1414 | (138,17 )(139,11 )(147,309 )(148,189 )(149,151 ) 1415 | (150,22 )(151,35 )(152,35 )(161,483 )(162,151 ) 1416 | (163,26 )(164,19 )(165,16 )(175,102 )(176,48 ) 1417 | (189,385 )(190,56 )(194,8 )(204,120 )(205,18 ) 1418 | (31,7 N0.2)(32,16 N0.4)(48,2 N0.4)(50,6 N0.3)(63,10 N0.2) 1419 | (64,3 N0.4)(74,4 N0.3)(87,4 N0.3)(99,10 N0.3)(102,2 N0.4) 1420 | (104,9 N0.3)(113,5 N0.4)(115,14 N0.2)(118,11 N0.2)(128,6 N0.4) 1421 | (129,7 N0.3)(130,3 N0.4)(131,18 N0.2)(132,6 N0.3)(137,15 N0.2) 1422 | (140,4 N0.3)(141,7 N0.3)(145,9 N0.3)(146,6 N0.3)(153,2 N0.5) 1423 | (154,4 N0.3)(157,4 N0.3)(160,9 N0.2)(169,3 N0.4)(177,6 N0.3) 1424 | (178,2 N0.4)(179,6 N0.3)(180,2 N0.4)(184,3 N0.3)(188,2 N0.4) 1425 | (191,4 N0.4)(196,2 N0.4)(199,2 N0.4)(203,2 N0.4)(207,6 N0.4) 1426 | (216,3 N0.3)(231,3 N0.3)(232,2 N0.5)(239,3 N0.4)(241,2 N0.5) 1427 | (250,3 N0.3)(254,3 N0.3)(264,3 N0.4)(272,2 N0.5)(278,4 N0.3) 1428 | (279,4 N0.3)(288,2 N0.4)(289,2 N0.5)(290,2 N0.3)(292,2 N0.5) 1429 | (293,2 N0.4)(295,2 N0.4)(296,5 N0.3)(304,5 N0.2)(306,2 N0.4) 1430 | (308,2 N0.4)(309,4 N0.3)(316,4 N0.3)(317,4 N0.3)(325,3 N0.3) 1431 | (332,3 N0.4)(336,3 N0.4)(340,3 N0.3)(347,3 N0.3)(355,1 N0.5) 1432 | (356,1 N0.5)(363,2 N0.3)(365,2 N0.5)(367,4 N0.3)(369,2 N0.5) 1433 | (370,3 N0.4)(373,3 N0.3)(377,5 N0.3)(379,3 N0.4)(382,2 N0.4) 1434 | (384,3 N0.4)(389,1 N0.5)(392,4 N0.3)(395,2 N0.5)(396,1 N0.5) 1435 | (397,2 N0.4)(404,3 N0.4)(411,2 N0.4)(417,2 N0.4)(419,2 N0.4) 1436 | (425,3 N0.4)(428,2 N0.4)(430,4 N0.3)(432,3 N0.4)(433,3 N0.3) 1437 | (435,2 N0.5)(440,2 N0.5)(444,2 N0.4)(446,3 N0.3)(447,4 N0.3) 1438 | (461,3 N0.3)(467,2 N0.5)(470,3 N0.4)(473,4 N0.3)(479,1 N0.4) 1439 | (482,2 N0.4)(484,2 N0.4) 1440 | 1441 | NAME: |SC4005|CN42|MP1-MODN:71(%80.0)|AM2150|PC38|SN70|WD7.8|TA0.8|TR8.3|FR3995-4011|RT16.3463|MN0.85|RA0.0553|IS94171|XN98640|MO5: 71 57 85 43 99|EW1-1|FG0.830|TN6.810|OR1|NT0 1442 | RE 1443 | 0 503 1391 2539 4033 1444 | 5864 7908 9781 11089 11713 1445 | 11336 9756 7508 5190 3157 1446 | 1667 733 1447 | NUM PEAKS: 137 1448 | (29,61 )(41,248 )(43,614 )(55,234 )(56,114 ) 1449 | (57,984 )(58,40 )(69,215 )(70,173 )(71,999 ) 1450 | (72,58 )(83,214 )(84,159 )(85,815 )(86,58 ) 1451 | (97,153 )(98,76 )(99,328 )(100,36 )(109,78 ) 1452 | (110,60 )(111,267 )(112,95 )(113,234 )(114,26 ) 1453 | (122,133 )(127,165 )(141,83 )(155,65 )(308,18 ) 1454 | (30,18 N0.2)(34,4 N0.5)(38,19 N0.3)(39,28 N0.3)(40,19 N0.4) 1455 | (42,40 N0.2)(48,8 N0.4)(53,32 N0.3)(54,17 N0.3)(67,51 N0.2) 1456 | (68,28 N0.2)(81,34 N0.3)(82,23 N0.3)(87,7 N0.4)(88,10 N0.3) 1457 | (93,31 N0.4)(95,72 B0.2)(104,9 N0.5)(106,10 N0.5)(107,52 N0.3) 1458 | (108,22 N0.3)(123,22 N0.3)(124,41 N0.2)(125,26 N0.3)(126,37 N0.2) 1459 | (138,6 N0.5)(139,10 N0.4)(140,15 N0.3)(154,13 N0.3)(156,13 N0.3) 1460 | (157,10 N0.4)(165,9 N0.4)(166,13 N0.3)(169,24 N0.3)(173,7 N0.4) 1461 | (179,7 N0.5)(180,8 N0.4)(183,17 N0.3)(184,8 N0.4)(189,18 N0.3) 1462 | (193,21 N0.3)(194,10 N0.4)(195,7 N0.4)(197,18 N0.3)(202,9 N0.4) 1463 | (205,8 N0.4)(207,20 N0.3)(212,7 N0.3)(213,5 N0.4)(215,11 N0.3) 1464 | (221,10 N0.4)(222,20 N0.3)(224,6 N0.4)(231,7 N0.4)(232,5 N0.4) 1465 | (244,10 N0.4)(249,8 N0.4)(268,8 N0.4)(270,5 N0.4)(272,6 N0.4) 1466 | (286,9 N0.3)(295,10 N0.3)(301,6 N0.4)(303,8 N0.4)(306,7 N0.4) 1467 | (310,13 N0.3)(312,11 N0.3)(322,7 N0.5)(324,17 N0.2)(329,5 N0.5) 1468 | (337,6 N0.4)(338,5 N0.4)(340,6 N0.4)(341,6 N0.4)(344,8 N0.3) 1469 | (348,9 N0.4)(351,11 N0.3)(354,5 N0.5)(357,5 N0.5)(360,9 N0.3) 1470 | (364,5 N0.4)(372,5 N0.4)(379,4 N0.5)(389,5 N0.5)(409,4 N0.5) 1471 | (417,6 N0.4)(425,16 N0.3)(427,5 N0.5)(428,10 N0.3)(430,7 N0.4) 1472 | (434,4 N0.4)(436,6 N0.4)(438,13 N0.3)(442,10 N0.3)(445,6 N0.4) 1473 | (447,4 N0.5)(451,10 N0.3)(453,5 N0.5)(458,13 N0.3)(460,4 N0.5) 1474 | (464,4 N0.4)(465,8 N0.3)(469,7 N0.3)(473,7 N0.4)(475,6 N0.4) 1475 | (480,5 N0.5)(498,11 N0.3) 1476 | 1477 | NAME: |SC4029|CN44|MP1-MODN:138(%94.9)|AM70424|PC93|SN592|WD10.4|TA0.9|TR227.9|FR4017-4038|RT16.4280|MN0.026|RA6.27|IS10635333|XN11189304|MO20: 138 83 55 69 41 67 105 93 82 119 124 147 189 53 57 29 39 65 106 164|EW1-2|FG1.000|TN15.011|OR1|NT0 1478 | RE 1479 | 0 37358 94343 173466 277663 1480 | 407833 551771 694642 823856 916605 1481 | 970675 1003264 998595 933672 810908 1482 | 652259 485437 335097 217649 133540 1483 | 76246 40452 1484 | NUM PEAKS: 152 1485 | (29,63 )(30,1 )(31,5 )(39,63 )(40,12 ) 1486 | (41,339 )(42,39 )(43,392 )(44,13 )(45,14 ) 1487 | (50,1 )(51,13 )(52,7 )(53,92 )(54,20 ) 1488 | (55,361 )(56,35 )(57,89 )(58,11 )(59,24 ) 1489 | (60,2 )(61,1 )(63,4 )(64,2 )(65,61 ) 1490 | (66,18 )(67,349 )(68,47 )(69,347 )(70,60 ) 1491 | (71,102 )(72,9 )(73,3 )(74,1 )(75,1 ) 1492 | (76,2 )(77,123 )(78,24 )(79,235 )(80,126 ) 1493 | (81,638 )(82,275 )(83,805 )(84,187 )(85,50 ) 1494 | (86,15 )(87,3 )(89,2 )(90,2 )(91,198 ) 1495 | (92,39 )(93,322 )(94,96 )(95,433 )(96,94 ) 1496 | (97,181 )(98,788 )(99,101 )(100,11 )(101,1 ) 1497 | (102,1 )(103,13 )(104,5 )(105,327 )(106,54 ) 1498 | (107,344 )(108,106 )(109,375 )(110,109 )(111,303 ) 1499 | (112,55 )(113,5 )(115,12 )(116,4 )(117,16 ) 1500 | (118,8 )(119,208 )(120,54 )(121,259 )(122,138 ) 1501 | (123,270 )(124,139 )(125,560 )(126,62 )(127,11 ) 1502 | (128,5 )(129,5 )(130,2 )(131,12 )(132,3 ) 1503 | (133,150 )(134,38 )(135,142 )(136,54 )(137,178 ) 1504 | (138,999 )(139,120 )(140,11 )(143,1 )(145,14 ) 1505 | (146,4 )(147,123 )(148,49 )(149,74 )(150,21 ) 1506 | (151,162 )(152,37 )(153,15 )(154,2 )(159,3 ) 1507 | (160,6 )(161,347 )(162,58 )(163,17 )(164,49 ) 1508 | (165,57 )(166,17 )(167,13 )(168,2 )(175,18 ) 1509 | (176,6 )(177,6 )(178,8 )(179,141 )(180,29 ) 1510 | (181,3 )(188,1 )(189,106 )(190,17 )(191,6 ) 1511 | (193,10 )(194,3 )(203,2 )(204,48 )(205,15 ) 1512 | (206,2 )(207,215 )(208,33 )(209,3 )(221,4 ) 1513 | (222,627 )(223,103 )(224,10 )(38,1 N0.3)(46,1 N0.3) 1514 | (62,1 N0.2)(141,1 N0.2)(144,1 N0.3)(173,1 N0.2)(174,1 N0.2) 1515 | (192,1 N0.3)(220,1 N0.2) 1516 | 1517 | NAME: |SC4151|CN45|MP1-MODN:71(%76.4)|AM1039|PC29|SN44|WD8.5|TA0.9|TR0.4|FR4143-4157|RT16.8330|MN1.7|RA0.0222|IS37262|XN39718|MO2: 71 57|EW0-1|FG0.625|TN5.673|OR1|NT0 1518 | RE 1519 | 1272 1496 1993 2608 3148 1520 | 3739 4334 4500 4175 3606 1521 | 2856 1965 1102 467 0 1522 | NUM PEAKS: 188 1523 | (41,214 )(43,574 )(55,175 )(57,999 )(69,175 ) 1524 | (70,148 )(71,957 )(84,116 )(85,754 )(86,78 ) 1525 | (99,379 )(100,47 )(111,100 )(112,62 )(113,281 ) 1526 | (125,72 )(127,170 )(141,75 )(155,108 )(169,78 ) 1527 | (275,37 )(427,38 )(455,32 )(29,66 N0.2)(34,19 N0.3) 1528 | (35,19 N0.3)(36,14 N0.4)(37,21 N0.3)(39,74 N0.2)(42,68 N0.2) 1529 | (47,8 N0.5)(48,7 N0.5)(49,22 N0.3)(51,35 N0.3)(53,44 N0.3) 1530 | (56,82 N0.2)(58,39 N0.3)(60,16 N0.4)(65,16 N0.5)(67,36 N0.3) 1531 | (68,38 N0.3)(72,63 N0.2)(73,16 N0.5)(75,13 N0.5)(79,43 N0.3) 1532 | (80,32 N0.3)(81,46 N0.3)(82,45 N0.3)(83,58 N0.3)(87,16 N0.3) 1533 | (93,48 N0.3)(94,23 N0.4)(95,36 N0.3)(96,46 N0.3)(97,45 N0.3) 1534 | (101,23 N0.3)(102,18 N0.4)(103,32 N0.4)(104,29 N0.4)(107,24 N0.5) 1535 | (115,19 N0.4)(117,21 N0.4)(120,27 N0.3)(126,30 N0.3)(134,10 N0.5) 1536 | (135,24 N0.4)(137,17 N0.4)(138,14 N0.5)(140,15 N0.4)(142,17 N0.4) 1537 | (144,30 N0.3)(147,18 N0.5)(150,14 N0.4)(151,11 N0.5)(154,26 N0.3) 1538 | (157,24 N0.3)(160,16 N0.4)(161,21 N0.4)(166,21 N0.3)(167,22 N0.3) 1539 | (168,14 N0.4)(172,12 N0.4)(173,13 N0.4)(175,11 N0.5)(180,16 N0.4) 1540 | (183,25 N0.3)(191,30 N0.3)(192,28 N0.3)(196,16 N0.3)(197,13 N0.5) 1541 | (203,20 N0.4)(211,31 N0.3)(215,16 N0.4)(216,30 N0.3)(218,10 N0.4) 1542 | (219,17 N0.3)(224,13 N0.4)(225,8 N0.5)(232,14 N0.4)(233,17 N0.4) 1543 | (234,13 N0.4)(237,6 N0.5)(238,12 N0.4)(242,29 N0.3)(244,21 N0.3) 1544 | (245,21 N0.3)(249,9 N0.4)(252,22 N0.3)(254,10 N0.5)(260,15 N0.3) 1545 | (265,9 N0.5)(267,15 N0.4)(270,10 N0.5)(271,20 N0.3)(277,25 N0.3) 1546 | (278,14 N0.4)(280,26 N0.3)(283,15 N0.4)(285,17 N0.4)(301,22 N0.3) 1547 | (303,24 N0.3)(305,17 N0.3)(307,15 N0.4)(308,18 N0.3)(309,14 N0.3) 1548 | (313,16 N0.4)(319,7 N0.5)(323,10 N0.5)(326,8 N0.5)(329,18 N0.4) 1549 | (331,17 N0.4)(332,17 N0.4)(336,15 N0.4)(337,13 N0.4)(344,20 N0.3) 1550 | (346,11 N0.4)(348,22 N0.3)(351,18 N0.3)(352,10 N0.4)(357,34 N0.2) 1551 | (359,19 N0.4)(366,12 N0.4)(372,13 N0.4)(380,11 N0.5)(381,12 N0.4) 1552 | (383,11 N0.3)(394,6 N0.5)(395,28 N0.3)(396,17 N0.4)(397,8 N0.5) 1553 | (399,21 N0.3)(402,19 N0.3)(403,12 N0.4)(406,14 N0.4)(408,11 N0.4) 1554 | (411,20 N0.3)(412,11 N0.4)(414,26 N0.3)(417,8 N0.4)(418,25 N0.3) 1555 | (419,13 N0.4)(429,28 N0.3)(431,13 N0.4)(432,8 N0.5)(437,16 N0.4) 1556 | (439,21 N0.3)(443,13 N0.3)(444,23 N0.3)(445,24 N0.3)(446,13 N0.4) 1557 | (449,12 N0.4)(452,19 N0.3)(454,11 N0.5)(457,12 N0.4)(462,14 N0.4) 1558 | (466,13 N0.4)(470,16 N0.3)(471,17 N0.3)(474,14 N0.4)(475,6 N0.4) 1559 | (476,12 N0.4)(477,12 N0.4)(480,18 N0.3)(483,15 N0.4)(487,14 N0.4) 1560 | (488,8 N0.5)(496,17 N0.4)(499,7 N0.5) 1561 | 1562 | --------------------------------------------------------------------------------