# 基因表达分析

### 问题：面包酵母（酿酒酵母）中的基因表达分析

```if ~nnDependency.bioInfoAvailable errordlg('This example requires Bioinformatics Toolbox.'); return; end```

### 数据

`load yeastdata.mat`

`numel(genes)`
```ans = 6400 ```

genes 是一个由基因名称组成的元胞数组。您可以使用 MATLAB 元胞数组索引来访问条目：

`genes{15}`
```ans = 'YAL054C' ```

### 过滤基因

```emptySpots = strcmp('EMPTY',genes); yeastvalues(emptySpots,:) = []; genes(emptySpots) = []; numel(genes)```
```ans = 6314 ```

```nanIndices = any(isnan(yeastvalues),2); yeastvalues(nanIndices,:) = []; genes(nanIndices) = []; numel(genes)```
```ans = 6276 ```

```mask = genevarfilter(yeastvalues); % Use the mask as an index into the values to remove the filtered genes. yeastvalues = yeastvalues(mask,:); genes = genes(mask); numel(genes)```
```ans = 5648 ```

```[mask, yeastvalues, genes] = ... genelowvalfilter(yeastvalues,genes,'absval',log2(3)); numel(genes)```
```ans = 822 ```

```[mask, yeastvalues, genes] = ... geneentropyfilter(yeastvalues,genes,'prctile',15); numel(genes)```
```ans = 614 ```

### 主成分分析

```[x,std_settings] = mapstd(yeastvalues'); % Normalize data [x,pca_settings] = processpca(x,0.15); % PCA```

```figure scatter(x(1,:),x(2,:)); xlabel('First Principal Component'); ylabel('Second Principal Component'); title('Principal Component Scatter Plot');```

### 聚类分析：自组织映射

`selforgmap` 函数创建一个自组织映射网络，然后可以使用 `train` 函数训练该网络。

```net = selforgmap([5 3]); view(net)```

`net = train(net,x);`

```figure plotsompos(net,x);```

```y = net(x); cluster_indices = vec2ind(y);```

```figure plotsomhits(net,x);```

### 术语表

ORF - 开放阅读框 (ORF) 是基因序列的一部分，包含一个碱基序列，不被终止序列打断，可能对蛋白质编码。