我有两个文件,一个有位置信息,另一个是序列信息.现在我需要读取位置并在位置上取snps并用序列中的snp信息替换该位置基数并将其写入snp信息文件中...例如
Snp文件包含
10 A C A/C
Run Code Online (Sandbox Code Playgroud)
序列文件包含
ATCGAACTCTACATTAC
Run Code Online (Sandbox Code Playgroud)
这里第10个元素是T所以我将用[A/C]替换T,所以最终的输出应该是
10 A C A/C ATCGAACTC[A/C]ACATTAC
Run Code Online (Sandbox Code Playgroud)
示例文件是
Snp文件
SNP Ref Alt
10 A C
19 G C
30 C T
42 A G
Run Code Online (Sandbox Code Playgroud)
序列 :
序列1 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
Run Code Online (Sandbox Code Playgroud)
在从Ref和Alt列替换这里的snps时,我们需要考虑{A,T,C,G}的顺序,就像[Ref/Alt]一样,第一个基数应该是A或T或C,然后是订购.
另一件事是如果我们采取snp位置,并且如果有10个碱基差异的任何snps,我们需要用"N"替换该snp位置.在上面的例子中,前两个位置差异为9,我们用'N'替换另一个元素.
我已编写代码,按顺序打印位置,并用snp位置替换序列但无法读取附近位置并替换为N.
我的方法可能是完全错误的,因为我是编码的初学者.我认为通过使用哈希,我们可能很容易实现这一点,但我不太熟悉哈希..帮助请一些建议...我不必坚持只有perl ,
my $input_file = $ARGV[0];
my $snp_file = $ARGV[1];
my $output_file = $ARGV[2];
%sequence_hash = ();
open SNP, $snp_file || …Run Code Online (Sandbox Code Playgroud) 嗨我尝试了很多方法来解决这个问题,但遗漏了一些事情......我有两张桌子学生和分数
Sid Cid Score
6 1 90
1 1 80
4 1 80
3 1 70
2 1 60
6 2 80
1 2 70
2 2 60
4 2 60
5 2 50
4 3 80
7 3 80
6 3 70
8 3 60
2 3 50
Sid Sname Sbday Ssex
1 As 1980 female
2 Al 1986 male
3 An 1989 male
4 ja 1986 male
5 ma 1983 female
6 phi 1986 male
7 Geo 1993 …Run Code Online (Sandbox Code Playgroud)