- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个文件,一个是位置信息,另一个是序列信息。现在我需要读取位置并在位置获取snps,然后用序列中的snp信息替换该位置基数并将其写入snp信息文件中..例如
SNP 文件包含
10 A C A/C
ATCGAACTCTACATTAC
10 A C A/C ATCGAACTC[A/C]ACATTAC
SNP Ref Alt
10 A C
19 G C
30 C T
42 A G
sequence1 CTAGAATCAAAGCAAGAATACACTCTTTTTTTTGGAAAAGAATATCTCATGTTTGCTCTT
SNP Ref Alt Output
10 A C CTAGAATCA[A/C]AGCAAGAANACACTCTTTTTTTTGGAAAAGAATATCTCATGTTTGCTCTT
19 G C CTAGAATCANAGCAAGAA[C/G]ACACTCTTTTTTTTGGAAAAGAATATCTCATGTTTGCTCTT
30 C T CTAGAATCAAAGCAAGAATACACTCTTTT[T/C]TTTGGAAAAGAATATCTCATGTTTGCTCTT
42 A G CTAGAATCAAAGCAAGAATACACTCTTTTTTTTGGAAAAGA[A/G]TATCTCATGTTTGCTCTT
my $input_file = $ARGV[0];
my $snp_file = $ARGV[1];
my $output_file = $ARGV[2];
%sequence_hash = ();
open SNP, $snp_file || die $!;
$indel_count = 0;
$snp_count = 0;
$total_count = 0;
#### hashes and array
@id_array = ();
while ($line = <SNP>) {
next if $line =~ /^No/;
$line =~ s/\r|\n//g;
# if ($line =~ /\tINDEL/) {
# $indel_count++;
# $snp_type = "INDEL";
#} else {
# $snp_count++;
# $snp_type = "SNP";
#}
@parts = split(/\t/,$line);
$id = $parts[0];
$pos = $parts[1];
#$ref_base = $parts[3];
@temp_ref = split(",",$parts[2]);
$ref_base = $temp_ref[0];
@alt = split(",",$parts[3]);
$alt_base = $alt[0];
$snpformat = '';
if ($ref_base eq "A" || $alt_base eq "A")
{
if ($ref_base eq "A"){
$snpformat = "[".join("/",$ref_base,$alt_base)."]";}
#$snpformat = $ref_base/$alt_base;}
#print "refbase is A $ref_base \t $alt_base \t $snpformat \n"; }
else
{$snpformat = "[".join("/",$alt_base,$ref_base)."]";}
#print "Altbase is A $ref_base \t $alt_base \t $snpformat \n";}
}
elsif ($ref_base eq "T" || $alt_base eq "T")
{
if ($ref_base eq "T"){
$snpformat = "[".join("/",$ref_base,$alt_base)."]";}
#$snpformat = $ref_base/$alt_base;}
#print "refbase is A $ref_base \t $alt_base \t $snpformat \n"; }
else
{$snpformat = "[".join("/",$alt_base,$ref_base)."]";}
#print "Altbase is A $ref_base \t $alt_base \t $snpformat \n";}
}
elsif ($ref_base eq "C" || $alt_base eq "C")
{
if ($ref_base eq "C"){
$snpformat = "[".join("/",$ref_base,$alt_base)."]";}
#$snpformat = $ref_base/$alt_base;}
#print "refbase is A $ref_base \t $alt_base \t $snpformat \n"; }
else
{$snpformat = "[".join("/",$alt_base,$ref_base)."]";}
#print "Altbase is A $ref_base \t $alt_base \t $snpformat \n";}
}
else
{$snpformat = "-/-" ;}
print " $id \t $pos \t $ref_base \t $alt_base \t $snpformat \n ";
}
open SEQ, $input_file ||die $!;
$header = '';
$sequence = '';
$num_sequences = 0;
while ($line = <SEQ>) {
$line =~ s/\r|\n//g;
next if $line =~ //;
if ($line =~ /^>(.+)/) {
if ($header eq '') {
$header = $1;
$sequence = '';
next;
} else {
$sequence_len = length($sequence);
$sequence_hash{$header} = $sequence;
push (@headers,$header);
#print $header."\t".$sequence_len."\n";
#print $sequence."\n";
$num_sequences++;
$header = $1;
$sequence = '';
}
} else {
$sequence .= $line;
}
}
$sequence_len = length($sequence);
$sequence_hash{$header} = $sequence;
push (@headers,$header);
#print $header."\t".$sequence_len."\n";
$num_sequences++;
close (SEQ);
$pos = '4';
substr($sequence,$pos,1) = "[A/G]";
print $sequence."\n";
print "$pos \n";
最佳答案
此 awk
脚本可能可以帮助您获得所需的结果。
awk '
BEGIN {
print "SNP\tRef\tAlt\tOutput"
}
NR==FNR {
a[++i]=$0
next
}
FNR>1 {
x=substr(a[i],1,($1-1))
z=substr(a[i],($1+1))
if ($2=="A") {
y="["$2"/"$3"]"
}
else if ($2=="T" && $3=="A") {
y="["$3"/"$2"]"
}
else if ($2=="C" && ($2=="A" || $2=="T")) {
y="["$3"/"$2"]"
}
else if ($2=="G" && ($2=="A" || $2=="T" || $2=="C")) {
y="["$3"/"$2"]"
}
else
y="["$3"/"$2"]"
print $1"\t"$2"\t"$3"\t"x""y""z
}' sequence snp
[jaypal:~/temp] cat sequence
CTAGAATCAAAGCAAGAATACACTCTTTTTTTTGGAAAAGAATATCTCATGTTTGCTCTT
[jaypal:~/temp] cat snp
SNP Ref Alt
10 A C
19 G C
30 C T
42 A G
[jaypal:~/temp] awk '
BEGIN {
print "SNP\tRef\tAlt\tOutput"
}
NR==FNR {
a[++i]=$0
next
}
FNR>1 {
x=substr(a[i],1,($1-1))
z=substr(a[i],($1+1))
if ($2=="A") {
y="["$2"/"$3"]"
}
else if ($2=="T" && $3=="A") {
y="["$3"/"$2"]"
}
else if ($2=="C" && ($2=="A" || $2=="T")) {
y="["$3"/"$2"]"
}
else if ($2=="G" && ($2=="A" || $2=="T" || $2=="C")) {
y="["$3"/"$2"]"
}
else
y="["$3"/"$2"]"
print $1"\t"$2"\t"$3"\t"x""y""z
}' sequence snp
SNP Ref Alt Output
10 A C CTAGAATCA[A/C]AGCAAGAATACACTCTTTTTTTTGGAAAAGAATATCTCATGTTTGCTCTT
19 G C CTAGAATCAAAGCAAGAA[C/G]ACACTCTTTTTTTTGGAAAAGAATATCTCATGTTTGCTCTT
30 C T CTAGAATCAAAGCAAGAATACACTCTTTT[T/C]TTTGGAAAAGAATATCTCATGTTTGCTCTT
42 A G CTAGAATCAAAGCAAGAATACACTCTTTTTTTTGGAAAAGA[A/G]TATCTCATGTTTGCTCTT
关于perl - 使用 snp 位置修改序列并在同一文件中输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13124610/
我有两个文件,一个是位置信息,另一个是序列信息。现在我需要读取位置并在位置获取snps,然后用序列中的snp信息替换该位置基数并将其写入snp信息文件中..例如 SNP 文件包含 10 A C A/C
我现在有一组大约 20 个 SNP,我想为其获取所有可能的基因型组合。例如,让我们从三个 SNP 及其等位基因开始。 SNP A1 A2 SNP1 A
我正在与 PLINK 一起工作分析全基因组数据。 有谁知道如何去除重复的 SNP? 最佳答案 在 PLINK 1.9 中,使用 --list-duplicate-vars suppress-first
我有一个 SNP 数据集,但没有按照我需要的方式进行编码。而不是仅仅被编码 "rsNUMBER"他们也有芯片分析的信息。例如:GSA-rsNUMBER或 psy-rsNUMBER 有些还有最后的芯片分
这个问题在这里已经有了答案: Find point-to-range overlaps (3 个答案) Finding overlap in ranges with R (6 个答案) dplyr
我有两个 fasta 文件。每个文件包含大鼠或小鼠的短基因组区域序列,具有物种特异性的已知 SNP。 File_1 : >Rat_1 GGTGCCTGTGTATTGCCTCTGTCGACTGCCTTA
我有一个很长的基因数据框和各种形式的 id(例如 OMIM、Ensembl、Genatlas)。我想获得与每个基因相关的所有 SNP 的列表。 (这是 this question 的反面。) 到目前为
给定 8 个样本 (A1-A8) 的以下数据: A1 A2 A3 A4 A5 A6 A7 A8 T T T T T T T C T C T T T T T C A A A G G A A A 其中每一
我正在尝试制作一个程序来识别 CDS包含SNP 。它从两个文件填充两个字典,一个包含 SNP,另一个包含 GFF3文件。从 GFF3 文件填充的字典之一包含 CDS 名称及其作为元组的位置。 一个例子
我想绘制带有 SNP 标记的核型图。 它与函数 segments 一起使用,但我想使用 ggplot2 包来显示优雅的图形。 ggbio: 我用函数 layout_karyogram 检查了 ggbi
我有一个像这样的矩阵: Gene BRCA THYM TGHJ ACC 23 21 7 XTG
我是一名优秀的程序员,十分优秀!