我有一个相关标记结果表和一个疾病标记表.两个文件都有标题.
这是相关标记表的样子:
snps_BCG24 gene_BCG24 statistic_BCG24 pvalue_BCG24 FDR_BCG24 beta_BCG24 pair SharedOrUnique_BCG24 PercentileRank_BCG24 chr cM hg19pos Diseasegene
rs11203184 C21orf128 -9.425704 4.008530e-12 2.501741e-05 -0.9199033 rs11203184_C21orf128 SharedSignalMO7 1.484874e-06 21 63.4452 43526430 notDiseasegene
rs11203184 C2CD2 2.290434 2.684575e-02 8.559484e-01 0.3114964 rs11203184_C2CD2 UniqueSignalBCG24 2.906046e-01 21 63.4452 43526430 notDiseasegene
Run Code Online (Sandbox Code Playgroud)
这就是疾病标记表的样子:
Chr hg19Pos hg18Pos rsID SNPname hg19UCSC hg18UCSC startLoc endLoc
1 1247494 1237357 rs12103 var_chr1_1247494 chr1:1247494-1247494 chr1:1237357-1237357 1147494 1347494
1 2502780 2492640 rs6667605 var_chr1_2502780 chr1:2502780-2502780
Run Code Online (Sandbox Code Playgroud)
如果相关标记和疾病标记位于同一染色体上(分别是相关的第9列= =疾病列0),那么我想检查我的相关标记的位置(相关表中的第11列)是否属于开始和疾病标志物的最终位置(疾病表中的第7列和第8列).
如果我的相关标记在该距离内,我想标记该关联标记"inLocus",否则,留空.结果输出将是具有两个制表符分隔列的文件:1)每个关联标记的名称与关联标记表2)的顺序相同inLocus或相关标记表中每个标记的空白状态.
我为此编写了一个perl脚本,但它不输出两列(一列用于关联的标记名称,另一列用于轨迹状态),而是输出一列,其中包含标记名称和不同数量的列"inLocus"- 而且并非总是相同列数.我不知道哪个标记确实存在"inLocus",因为每个输出列有时会有不同的状态.我需要在代码中更改什么才能使列表中的每个标记都获得明确的inLocus …