Question: How To Get Promoter Sequences For Human Genes?
gravatar for Yuri
6.8 years ago by
Bethesda, MD
Yuri1.3k wrote:

Would you advice how to get promoter sequences for all or many human genes - in flat file(s) or by SQL query? I understand there can be multiple definitions for promoter region, but just anything universal would work.

genome sequence promoter human • 19k views
ADD COMMENTlink modified 2.6 years ago by seidel6.0k • written 6.8 years ago by Yuri1.3k

I asked a similar question here:
My question was generic in nature and there was not much response. Looking forward for others comments on this specific question.

ADD REPLYlink written 6.8 years ago by Khader Shameer17k

The problem is that there is not a standard definition of promoters: for some it means a number of bases upstream the ATG, for others the TATA box, etc..

ADD REPLYlink written 6.8 years ago by Giovanni M Dall'Olio24k

@giovanni: I completely agree.

ADD REPLYlink written 6.8 years ago by Yuri1.3k
gravatar for Paulo Nuin
6.8 years ago by
Paulo Nuin3.7k
Paulo Nuin3.7k wrote:

My best bet would be to use BioMart's Martview, select a database, filter by the gene IDs you have (there are other ID options there too), and the use the sequence option in the attributes to determine which parts of the gene you want, be exon, intron, promoter, upstream, downstream, etc.

I used this tool to get many upstream regions for mouse genes using just NCBI's gene IDs as input.

ADD COMMENTlink written 6.8 years ago by Paulo Nuin3.7k

What database you'd recommend? I have HUGO gene symbols.

ADD REPLYlink written 6.8 years ago by Yuri1.3k

This url will give you an idea about what you need to do:|hsapiens_gene_ensembl.default.sequences.ensembl_transcript_id|hsapiens_gene_ensembl.default.sequences.5utr&FILTERS=&VISIBLEPANEL=attributepanel

Just click on Filters, enter the HGNC ids in the box and run the search.

ADD REPLYlink written 6.8 years ago by Paulo Nuin3.7k

I like both solution, but this one is more strait forward and allow downloading large amount of sequences at once. Pierre's solution would be also very useful in other cases. Thank you, guys.

ADD REPLYlink written 6.8 years ago by Yuri1.3k
gravatar for Pierre Lindenbaum
6.8 years ago by
Pierre Lindenbaum89k wrote:

Here I query the UCSC mysql anonymous server for the coordinate of the region between the CDS and the transcription sites (5' UTR, but you can extend this position to get a longer 'promoter' ) ( only for strand "+", for the reverse strand use cdsEnd and txEnd...). It builds an cURL query for the USC DAS server. This url is then piped into sh to get the genomic sequences.

mysql --user=genome -A -D hg19 -N \
 -e 'select concat("curl",chrom,":",txStart+1,",",cdsStart+1) from knownGene where strand="+" and  txStart!= cdsStart limit 10'  |\
 sh > result.concatenated.xml

<SEQUENCE id="chr1" start="11874" stop="12190" version="1.00">
<DNA length="317">
<SEQUENCE id="chr1" start="322037" stop="324343" version="1.00">
<DNA length="2307">
ADD COMMENTlink written 6.8 years ago by Pierre Lindenbaum89k

Thanks, Pierre, I'll try it. Do you know what is the highest LIMIT allowed?

ADD REPLYlink written 6.8 years ago by Yuri1.3k

@yuri don't be evil with UCSC :-)

ADD REPLYlink written 6.8 years ago by Pierre Lindenbaum89k
gravatar for Sean Davis
6.8 years ago by
Sean Davis22k
National Institutes of Health, Bethesda, MD
Sean Davis22k wrote:

This is trivial to do with the UCSC table browser.

Select the gene track of interest. Then, select "sequence" for output option. Click "get output". On the next page, select "genomic" and click submit. On the next page, click the appropriate boxes, one of which is upstream by N bases. Your output will be the actual sequence. Alternatively, you can get just the coordinates by changing the parameters on the first table browser page.


ADD COMMENTlink written 6.8 years ago by Sean Davis22k

but you cannot do that for thousand genes...

ADD REPLYlink written 6.8 years ago by Pierre Lindenbaum89k

In fact you can do for thousands of genes, but it will be slow as molasses, just click on upload identifiers and you have a input box. One problem with the UCSC approach is that sometimes it doesn't find the ids you are looking for and it does not output them. BioMart outputs everything even the "empty" ones.

ADD REPLYlink written 6.8 years ago by Paulo Nuin3.7k

Just to be clear, what I described in my answer is for ALL transcripts in a track of interest and it returns instantaneously with network bandwidth constraints, of course. nuin points out that it is straightforward to give a list of IDs, but the point about the "empty" ones is valid.

ADD REPLYlink written 6.8 years ago by Sean Davis22k
gravatar for Gurado
6.8 years ago by
Gurado280 wrote:

The Regulatory Sequence Analysis Tools website is very handy when it comes to obtaining promoter sequences and allows nice customization for up and or downstream size with respect to certain landmarks. Even better, a bunch of species is supported.

ADD COMMENTlink written 6.8 years ago by Gurado280
gravatar for seidel
2.6 years ago by
United States
seidel6.0k wrote:

Here's a command-line based method using UCSC and bedtools. It assumes you have a local copy of the genome, bedtools installed, and the promoter is some number that you choose relative to the transcription start site (TSS). At UCSC the left coordinate is always txStart, whereas the TSS is where transcription starts and can be the left or right coordinate depending on strand. Thus to get TSS I grab txStart for positive strand genes and txEnd for negative strand genes. I'm not sure if there's a way to combine this into a single SQL statement.

Step 1 - get TSS from UCSC using MySQL, use tail to remove header line:

# TSS for plus strand genes
mysql --user=genome -A -D hg19 -e \
'SELECT chrom,txStart,txStart,"TSS",".",strand FROM knownGene WHERE strand = "+";' \
| tail -n +2 > tss.bed

# concatenate TSS for negative strand genes
mysql --user=genome -A -D hg19 -e \
'SELECT chrom,txEnd,txEnd,"TSS",".",strand FROM knownGene WHERE strand = "-";' \
| tail -n +2 >> tss.bed

Step 2 - use bedtools 'flank' or 'slop' to adjust the coordinates. The -s flag will take strand into account for determining left or right. Flank takes the base next to your TSS, slop includes it. A nice advatange of bedtools for this is that you hand it a file of chromosome sizes so it doesn't create coordinates beyond chromosomal ends.

# create promoter coordinates, 1000 bases upstream of TSS for example
bedtools flank -i tss.bed -g hg19.chrom.sizes -s -l 1000 -r 0 > promoter_coords.bed

Step 3 - use bedtools to extract DNA sequences:

# extract DNA sequence from fasta file
bedtools getfasta -fi genomes/hg19/all_chr.fa -bed promoter_coords.bed -fo promoter_seq.fa

This should work for any model organism at UCSC, just select the right db and table names.


ADD COMMENTlink written 2.6 years ago by seidel6.0k
Please log in to add an answer.


Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 615 users visited in the last hour