根据gff/gtf等注释文件取负链上的序列:先反向互补染色体再截取?还是先截取区间再反向互补序列?

最近需要根据注释文件在基因组上截取序列,突然想到一个问题:对于下面这样在负链上的基因,我们是先将整条染色体反向互补再截取对应区间?还是先截取对应区间再反向互补呢?

图片

首先亮出答案:先截取区间,再反向互补。比如上面的ALK基因,先截取chr2上的29415640-30144452区间,再反向互补即得到ALK基因的碱基序列。

验证过程:

方法一:bedtools工具包可以根据bed文件提取区间序列,这里以上面的ALK基因为例试一下:

1.首先创建一个bed文件命名为AKL.bed,其中文件第6列可以指定正负链

图片

2.然后运行bedtools,得到ALK.fa序列文件,注意要添加-s选项

bedtools getfasta -fi ucsc.hg19.fasta -bed ALK.bed -s -fo ALK.fa

3.比较NCBI上给出的ALK序列和bedtools的运行结果,发现两者一致,说明bedtools工具截取负链上的基因准确,如果不想深究是哪种截取方法,后面直接用这个工具即可

å¾ç

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Biopython和pandas库来解析基因组文件gff3文件,并提启动子序列。 首,需要从基因组文件中读DNA序列。假设基因组文件是fasta格式,可以使用Biopython中的SeqIO模块读序列: ```python from Bio import SeqIO genome_file = "genome.fasta" genome_seq = SeqIO.read(genome_file, "fasta").seq ``` 接下来,需要从gff3文件中提基因信息和其位置。可以使用pandas库读gff3文件,并筛选出基因信息: ```python import pandas as pd gff_file = "genome.gff3" gff_df = pd.read_csv(gff_file, sep="\t", comment="#", header=None) gff_df.columns = ["seqid", "source", "type", "start", "end", "score", "strand", "phase", "attributes"] gene_df = gff_df[gff_df["type"]=="gene"] ``` 然后,可以根据基因的位置提其启动子序列。假设启动子长度为1000个碱基,可以根据基因的方向,从基因的上游或下游位置提启动子序列: ```python upstream_len = 1000 promoter_seqs = [] for index, row in gene_df.iterrows(): gene_start = row["start"] gene_end = row["end"] gene_strand = row["strand"] if gene_strand == "+": promoter_start = max(gene_start - upstream_len, 0) promoter_end = gene_start else: promoter_start = gene_end promoter_end = gene_end + upstream_len if promoter_end > len(genome_seq): promoter_end = len(genome_seq) promoter_seq = genome_seq[promoter_start:promoter_end] promoter_seqs.append(promoter_seq) ``` 最后,可以将启动子序列保存到文件中: ```python with open("promoters.fasta", "w") as f: for i, promoter_seq in enumerate(promoter_seqs): f.write(">promoter_{}\n{}\n".format(i+1, promoter_seq)) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值