Logs
2025-6-9:NG4CD通过数据库联通测试(本地/同域跨服务器),存档见75.2下Backup/../NG4CD_mysql
2025-6-10:差异表达分析功能实现未能成功走通
2025-6-12:框架问题汇总
2025-6-16:啥也没做,drugprotai那还没做完,revnet模型还不能一直过来
2025-6-20:有机会重新开始,鸽了
2025-7-1:开始备份,备份路径:/home/databank/gxxu/Backup$ cd History_on_Omic2Target/ver_re_2025_JUlY。暂时没有太大的更新。
开始测试revnet,创建环境:oT3To(pandas,torch, torchvision)
问题:首先准备的啥数据?现在就是逆向计算的事情了
python train_cifar.py --model revnet38 --clip 0.25 测试的准确度:Accuracy: 90.00999450683594%
准确度还是高的
再来个resnet32吧,pid=3848067, Accuracy: 91.8499984741211%
2025-7-2:解决一个组织形式的问题,组学可以量化的数据(from deepseek)
Allele-specific Copy Number Segment
- 等位失衡评分:
- 类型:连续型(0~1)
- 范围:0(完全平衡)→1(完全单亲源)
- 生物学意义:>0.6提示LOH事件
- 分段分类编码:
- 类型:有序离散型
- 取值:{-1: 杂合性缺失, 0: 正常, +1: 不对称扩增}
这个就不是很明白??
### Copy Number Segment
- log2比值离散化:
- 类型:有序类别
- 分级:-2(纯合缺失), -1(杂合缺失), 0(中性), +1(低扩增), +2(高扩增)
- GISTIC峰值区:
- 类型:二进制(0/1)
- 含义:1表示该样本在统计学显著(q<0.25)变异区域
### Differential Gene Expression
- 差异基因标记:
- 类型:三元符号变量
- 取值:{ -1, 0, +1 } 对应下调/无/上调
- 通路富集评分:
- 类型:标准化富集分数(NES)
- 范围:连续型(理论±∞,实际常见-3~+3)
### Gene Expression Quantification ✓
- log2(TPM+1):
- 类型:连续型
- 范围:0(无表达)→ 一般在10以内(如MYC≈6.5)
- 高变异基因筛选:
- CV阈值:保留CV>0.6的基因(基于log2值计算)
### Gene Level Copy Number###########这是个什么xiba
- 三级分类:
- 类型:离散型
- 边界值:log2=-0.3/+0.3为分界点
- 拷贝负荷指数:
- 类型:比例型(0~1)
- 解释:>0.15提示基因组广泛不稳定
### Isoform Expression Quantification###########这又是什么xiba
- 主异构体占比:
- 类型:百分比(0~1)
- 临床阈值:>0.7为单主导异构体
- PSI值:
- 类型:连续型(0~1)
- 技术误差:需排除0.2<PSI<0.8的模糊剪接
### Masked Copy Number Segment############什么xiba中的xiba
- 可信变异区域:
- 类型:二进制(0/1)
- 过滤条件:置信度score>0.95
- 总可信区域长度:
- 类型:整数(单位:Mbp)
- 参考范围:正常组织通常<50Mbp
### Masked Somatic Mutation
- 突变频谱计数:
- 类型:整数计数(0~N)
- COSMIC类型:96种三核苷酸组合
- 功能影响评分:
- 类型:等级型(1-3级)
- 对应规则:1级(驱动突变),2级(潜在有害),3级(无害)
### Methylation Beta Value ✓
- 原始β值:
- 类型:比例型(0~1)
- 生物学界标:<0.3为低甲基化,>0.7为高甲基化
- M值转换:
- 范围:连续型(公式:log2(β/(1-β)) ,理论±∞,实际常见-5~+5)
### miRNA Expression Quantification
- log2(RPM+1):
- 类型:连续型
- 典型动态范围:0(未检测)→8(高表达miR-21)
- 靶基因关联对:
- 类型:相关系数(-1~+1)
- 筛选标准:r<-0.6且p<0.01
### Pathology Report
- 语义向量:
- 类型:768维浮点向量(BioBERT输出)
- 取值范围:无界但典型值在[-3, +3]
- 淋巴浸润比例:
- 类型:百分比(0~100%)
- 注释规范:按10%间隔分级编码
### Protein Expression Quantification ✓
- Z-score归一化:
- 类型:标准化连续值
- 定义:(原始值-平均值)/标准差,典型范围-3~+3
- 磷酸化比值:
- 类型:比例型(0~1)
- 关键阈值:>0.5为激活态标记
### Raw Intensities############xiba了个xiba的什么个xiba鬼
- Quantile归一化后:
- 类型:浮点数
- 分布特性:服从N(0,1)分布
- 探针保留标准:
- 信号强度:需高于背景2个标准差
### Single Cell Analysis
- 细胞比例解卷积:
- 类型:比例型(0~1)
- 约束条件:总和≈1(允许±0.05误差)
- 调控因子活性:
- 类型:Z-score值
- 判断标准:>2.0为显著激活
### Slide Image & Tissue Microarray Image
- ResNet50特征:
- 类型:4096维浮点向量
- 激活值范围:受ReLU影响(0~+∞)
- 核形态参数:
- 核异型指数:连续型(计算方法:核面积/周长²,正常值<0.08)
### 通用数据规则
| 数据类型 | 关键值类型 | 典型范围 | 缺失值标记 |
|----------------|-------------------|--------------|------------|
| 连续型测量值 | 浮点型 (float32) | 依指标而异 | -9999 |
| 分类数据 | 整型 (int8) | ≤10类别 | 255 |
| 图像特征 | 浮点型 (float16) | 基于模型输出 | NaN |
| 文本衍生特征 | 浮点型 (float32) | 无理论界限 | Zero-padding|
### 特别注意事项
1. 跨模态归一化:基因组数据(-1~+1)与表达数据(Z-score)需独立标准化
2. 极端值截断:对超过±5个标准差的连续值进行Winsorize处理(替换为第5/95百分位数)
3. 存储优化:二进制特征可用bitmap压缩存储(如突变数据存储效率可提升20倍)
2025-7-3:无
2025-7-4:我是觉得哈,config中的每个config参数,可以对应一个操作成员函数。另外一个方案操作函数外置,但是次调用操作函数要经过config,而且config作为一个内置函数。okok,选择后面一个方案。然后整体代码改到O2T下。oT3To环境更新,增加数据库操作(pymysql,pandas,cryptongraphy)
最终还是选择了前面的方法.老子不管了就是TVM,虽然还没有完备的理论。我在考虑要不要将每次测试的内容写入一个专门的数据库,虽然但是现在还懒得做。
2025-7-7:又到周一了,想一想接下来要写哪些内容,稍微总结下:
1)模型管线
1.主体架构
2.模型
3.数据预处理与数据集
退而求其次,我们暂时还是先写一个打分函数吧。。。。。总得有点东西,那么就需要明确一下标签变量。用哪些模型呢,比如rf,xgb,rnn,resnet,cnn,就试这五个吧先
2)数据库管线:
1.预处理的管线
2.数据库写入的管线
欠债还债啊,revnet/gesubnet
svs切片肯定要是写存储路径,clinical是pdf的,肯定要内容写入,CNV肯定要内容写入,不过格式有点不统一:txt/tsv,甲基化的数据文件也不太统一:IDAT,txt,
蛋白质的tsv文件就比较好录入了Proteome Profiling
snv的压缩包就不太好办。转录本也是txt/tsv都有
2025-7-8:写吧,写无止境。但是稍微整理下思路:等我处理完数据吧,咱就开始dumbass模式
dumbass模式有个问题,多基因那他标签怎么订?有两种策略
1)预测这几个基因中的癌基因占比,但是568个癌基因和两万多个基因这差的太远了。但是负样本太少了,比如568个基因中取出3个,占比为1,从568个取1个,在从另外两万多个中取出两个,这占比怎么算?我们不知道其中两个是不是有癌基因,但是一定是大于等于三分之一。于是我们可以这样做:取三个癌基因,占比1,掺进去一个,那么就是大于等于三分之二。不妨做一个二分类,大于等于1和大于等于三分之二。包含不要紧,就看有没有掺进来但是还是被划分到大于1的情况,那这个肯定是癌相关基因。当时又怎么从数值上定义这种包含的标签呢,比如我们选择一个参考点5,5-1=4,5-2/3=13/3.或者说标签变量能不能是个范围,那肯定是个能(p,1),(p,2/3),首选的模型是resnet&xgb
2025-7-14:间隔几天没写log,但是还是写了点代码的,今天又继续把(写完数据库的管线后)
还是先dumbass模式,快的话下周就能写完。思路还是上面那个思路:
两个阶段训练:1)利用已知癌基因(5个)的组学预测目标基因中癌基因比例(因为全是癌基因阳性,标签量(比例)全为1)2)向目标基因中掺入3个未知基因(假设标签量(比例)为2/5),微调训练,由癌基因的数据进行验证。引入评价掺入基因的癌症影响的指数:CII=1-ratepre,可见CII->0,掺入基因对癌症的越关键。
2025-7-15:嘿,您猜怎么着,我终于又写了不少(确信),好像忽略了一点,癌基因和未知基因的交互效应。
2025-7-16:早停应该是个方法吧,不是个类吧,集成在validate中。
2025-7-17:训练的acc和验证的acc,用哪个呢??感觉验证的acc更具有一般性。基本的递归逻辑已经写好了。
2025-7-21:继续开始吧,我该说什么呢。目前有一个小的问题点:setup_log和logger的选用。哪一个更好一点。是思路上明确还是代码上明确即可。仔细想一想,否定logger的理由有什么?就是config在传递中,通过config及config的引用,调用内部函数是否合理。你说我为什么否定它,因为很讨厌这种将复杂类作为成员,或者传递的方式。有种复杂化的感觉。为什么要抛去config.logger呢,因为本来就不想config中有这样的操作函数。这不就有了否定的理由了。好啊好啊。我真的是c了。等等日志level有点问题,level
2025-7-22:增加tensorboardx记录训练过程。
TensorBoardX完全支持服务器训练日志转移到本地查看,具体方案如下:
服务器端配置:
from tensorboardX import SummaryWriter
# 在训练代码中添加
writer = SummaryWriter('runs/exp1') # 指定日志目录
# 在训练循环中记录指标
writer.add_scalar('train/loss', train_loss, epoch)
writer.add_scalar('train/acc', acc, epoch)
writer.add_scalar('val/acc', val_acc, epoch)
数据转移方法:
使用scp命令下载日志目录: scp -r user@server:/path/to/project/runs ./local_runs
或使用rsync同步: rsync -avz user@server:/path/to/project/runs ./local_runs
本地查看:
tensorboard --logdir=./local_runs
然后在浏览器打开localhost:6006即可查看所有训练记录
dumbass或许放到main函数中,好吧,已经放进去了
我咋感觉config.py也不需要了呢。最开始设计config是为了解决参数太多,命令行太长的问题。你让我想想还有没有更优的选择。混合策略,需要哪个修改哪个。不对,这tmd不就是argparse。总结下来还是删除config?
2025--7-23:尝试在假期之前完成代码,然后假期开始跑,回来debug。
2025-7-25:对不起小组组,这段时间冷落了你。我接下来就肝你的代码。T_T
2025-7-28:小组组!这次我真的来写你的代码了。
q1:优化器选择哪个呢?:torch.optim.Adam or SGD?
q2:clips是什么参数。
2025-8-16:这次是真的来写你了。还是有一个准确度高和验证度高哪个重要的,不管怎么说两者肯定是趋同的整体上,只是验证度为先,val_acc达到最大就停,不管acc如何。我们用tensorboardx记录了loss和acc,然后再在validate中也加入tensorboard写入val_acc。返回的val_acc用作简单的早停机制。
2025-8-18:一样的策略,一边写一边debug。
2025-8-19:尽快完成1/4测试,指到阳性训练的过程。另外,阳性训练和假设训练过程用不同的writer记录还是用一个writer分部记录?现在cBioportal中建立一个gene_target表,记录有上市抗肿瘤药物的靶点。database目录下:drug_target_genes.csv是高级筛选已经上市的antineoplastic的药物和靶点。filtered_genes.csv是交叉已经上市的药物和genecard中cancer搜索score大于50的。先把drug_target_genes 641条记录导入了gene_targets表中。
2025-8-20:其实有时候会纠结用三维张量还是用二维张量(是否把基因作为一维度),但是先从简单的开始二维开始。现在有个比较大的问题,需要区分正常数据集和病患数据集,需要增加一个数据成员给omicset。只需要把cancer_type改成source_type or sample_type即可
2025-8-21:现在测试获取cna数据。我挺无语的,1272343个luad样本,一个EGFR cna数据都没有.what can i say?tcga out !
什么叫稀疏矩阵:cna out
怎么感觉sample不区分norm or tumor,而是具体到数据类型才区分?类似于norm_count和tumor_count。算了,等自己库建好,现在只是有个继续下去的理由
更绝望了
先到cna和mutation吧,再加一个copy_number,加不了一点。
现在能正常合并。只是后面需要增添支持的组学数据类型。
2025-8-25: 1/12测试增加一个有效基因测试,输出数据完整的基因列。1)现在是先删除所有空列空行。[7811 rows x 57157 columns]--->[6921 rows x 56907 columns] 2)只保留全部为空的行和列:[7811 rows x 57157 columns]----------->[0 rows x 57157 columns] 给老子整笑了。
2025-8-26: 测试dataloader,数据集的划分有没有问题,数据划分没有问题,测试路径75.3:/home/dddc/gxxu/O2T/test_1_12
然后加标签,full模式标签还比较好加,但是也只限于2维,三维情况暂时不做处理,测试通过。
2025-8-28:pass