先按4,4(start)sort -n -u,去除同开头的read
再按5,5(end)sort -n -u ,因为都是把小的排前面,但是留下最长的,因此不用反向排序。
去掉同开头结尾的,只剩完全在内和部分超出的。
需要先按start排序,因为start一定顺序增加,所以比对end即可。
if end2<end1:
end2完全在内,将end2变成#####
if end1>start2:
部分重叠,或者对i,将end1换成end2,或者对i+1将start2换成start1
1 2 3这里同start没留下最长的,不知为何。
看来还需检查。
3需要了解sort的规则,会不会根据旁边的排序。
2可见,拼接是正确的
2 2看来sort规则有问题,不如全用python脚本处理。
改全部用python脚本后:
1 3 4 2保留最长和拼接重叠片段都能实现。由此,获取intron唯一位置。
所需的前期处理是:
1.按intron名字排序去重。【可选】,如果不处理也行,因为python中写了start=start end=end的处理
2.按start排序<必做!!>程序为了简便,只是用i i+1去处理,如果不排序,直接会出错
方法:
3但目前只是将chr1单独取出,因为对sort使用理解不深,现在想一次性取出全部染色体的唯一intron
2代码:sort -t ' ' -k1n -k4n look>look_sort_1,4
sort可以加多个-k,能和-n连写。但是Mt Pt按n有误,所以改Pt=6 Mt=7
参考:https://blog.csdn.net/z1164072826/article/details/81056872
3 4 3代码:sed 's/^Mt/7/g' look>look_mt7
sed 's/^Pt/6/g' look_mt7>look_mt7_pt6
4解决。
主要是sort 能加两个-k,并将mt pt 变成数字。因为sort的步骤非常重要,所以一定要用到sort。后面的合并删除都一样
所用脚本:get_longest_intron.py
要改和合并的脚本:seq_in_intron.py
前期处理步骤:
sed 's/^Mt/7/g' look>look_mt7
sed 's/^Pt/6/g' look_mt7>look_mt7_pt6
sort -t ' ' -k1n -k4n look_mt7_pt6>llook_mt7_pt6_sort_1,4
网友评论