SEQanswers

Go Back   SEQanswers > Bioinformatics > Bioinformatics



Similar Threads
Thread Thread Starter Forum Replies Last Post
Raw read counts for RNAseq biofreak Introductions 13 01-16-2013 05:28 AM
How can one get raw read counts from RPKM values gen2prot General 6 06-24-2011 11:08 AM
Raw read counts for RNAseq biofreak RNA Sequencing 2 06-15-2011 05:56 AM
miRNA read counts regarding DE vebaev RNA Sequencing 16 05-19-2011 11:52 AM
DESeq: Read counts vs. BP counts burkard Bioinformatics 0 08-05-2010 11:52 PM

Reply
 
Thread Tools
Old 04-19-2010, 12:22 PM   #21
chrisbala
Member
 
Location: North Carolina

Join Date: Jan 2010
Posts: 82
Default read counting

Hi Simon,

I just want to clarify something about the gtf/gff formating and the counting by HTseq

My gff looks like this:

Code:
chr1	taeGut1_ensGene	gene	8373168	8392590	.	+	.	gene_id=ENSTGUT00000007148;Name=
chr1	taeGut1_ensGene	mRNA	8373168	8392590	.	+	.	gene_id=ENSTGUT00000007148;Name=;Parent=ENSTGUT00000007148
chr1	taeGut1_ensGene	exon	8373168	8373328	.	+	.	gene_id=ENSTGUT00000007148.;Name=;Parent=ENSTGUT00000007148
chr1	taeGut1_ensGene	exon	8374845	8375006	.	+	.	gene_id=ENSTGUT00000007148.;Name=;Parent=ENSTGUT00000007148
chr1	taeGut1_ensGene	exon	8383527	8383695	.	+	.	gene_id=ENSTGUT00000007148.;Name=;Parent=ENSTGUT00000007148
chr1	taeGut1_ensGene	exon	8392390	8392590	.	+	.	gene_id=ENSTGUT00000007148.;Name=;Parent=ENSTGUT00000007148
THe HTseq documentation specifies that the default is counting by exon, yet the output from for HTseq corresponds to the ensembl #s. (One number is output per ensembl id). Is this because I do not have unique ids for each exon? Or is it actually counting across the transcript? IN order to ACTUALLY count by exon, would I just have to include unique ids for each? (and remove the mRNA and and gene lines?) Does anyone have an easy way to to assign unique ids for each exon? thanks!
chrisbala is offline   Reply With Quote
Old 04-19-2010, 12:50 PM   #22
Simon Anders
Senior Member
 
Location: Heidelberg, Germany

Join Date: Feb 2010
Posts: 991
Default

Hi Chris,

the default that you mention -- gene IDs but exon features -- is meant to count how many reads fall onto each gene. I put this as default as it seemed to me to be the most common use case.

Many users might prefer to count by transcript but this is actually a rather involved problem. If a read maps to an exon shared by many transcripts how do you decide which one to use? If you have a good algorithm to decide this, HTSeq gives you the tools to implement it conveniently, but I don't have one handy (am I'm eager to see what the cufflink people came up with once their paper is out).

I also have a script to count by exons, which I can give you if you need it. Giving each exon in the GTF file a unique ID is not a problem: just concatenate the transcript ID with the exon number. The problem is rather that each exon appears multiple times in an Ensembl GTF file, namely once for each transcript in which it appears. If you attempt to collapse all these multiple copies of an exon to a single entity, you'll notice that it is quite common for an exon to have have variants: Outer exons may have varying outer borders due to alternative transcription starts and ends (i.e., UTRs of varying length), and sometimes introns are not spliced out, i.e., an exon-intron-exon sequence in one transcript is just one long exon in the other one.

Hence, your job is first to decide what is, for your specific application, the right way to count these cases. Once you know this, coding it in Python with HTSeq is easy.

Simon
Simon Anders is offline   Reply With Quote
Old 04-19-2010, 12:59 PM   #23
Simon Anders
Senior Member
 
Location: Heidelberg, Germany

Join Date: Feb 2010
Posts: 991
Default

Quote:
Originally Posted by wenhuang View Post
Thank you for your work. Unfortunately, although I am able to get the yeast data provided on your website to work with htseq-count, I am not able to get my own data to work. The SAM file I used is two posts ago and I attach the GTF file to this post.
I've fixed the bug.
Simon Anders is offline   Reply With Quote
Old 04-19-2010, 01:19 PM   #24
chrisbala
Member
 
Location: North Carolina

Join Date: Jan 2010
Posts: 82
Default counting reads

Hi Simon,

You might be able to tell, but I'm working with a "new" and fairly poorly annotated genome. So we actually don't have much info at all about alternative transcripts in ensembl. So I'm willing to be a little sloppy about how reads are assigned to exons shared among transcripts (assign to both). In fact it is because I suspect that assigning reads is going to be really tricky that I just want to test for differential expression of exons to identify some candidates for alternative splicing. I'm trying out cufflinks predictions as well...

But if you think this makes sense, I'd be thankful to use your script. If there any key format specs just let me know. would you post it here? Or somewhere where I can download?

Thanks,

Chris
chrisbala is offline   Reply With Quote
Old 05-04-2010, 07:50 AM   #25
blackgore
Member
 
Location: UK

Join Date: Sep 2009
Posts: 19
Default

Hi Simon,

this sounds like a very simple question, but I have to ask anyway...

The gene counts file in the DESeq vignette gives one gene count per gene, per lane, or seems to at least. Can I assume that this is a summed count over all exons of that gene? if so, then is there a need to worry about alternative splicings, where the same gene contains different exons? Do they all get summed to give a final, single overall value for the gene count, and is that ok...? Or am I missing something very basic?
blackgore is offline   Reply With Quote
Old 05-04-2010, 08:54 AM   #26
Simon Anders
Senior Member
 
Location: Heidelberg, Germany

Join Date: Feb 2010
Posts: 991
Default

Quote:
Originally Posted by blackgore View Post
The gene counts file in the DESeq vignette gives one gene count per gene, per lane, or seems to at least. Can I assume that this is a summed count over all exons of that gene? if so, then is there a need to worry about alternative splicings, where the same gene contains different exons? Do they all get summed to give a final, single overall value for the gene count, and is that ok...? Or am I missing something very basic?
The short answer:

No, you described it accurately.

When a gene's splicing ratios change, its expression strength surely will not stay constant either, so I am not overly worried about mistaking changes in splicing for changes in expression.

---

The long answer:

I wonder whether your being "worried" about alternative splicing might be due to a confusion about who has 'burden of proof".

You see, DESeq performs hypothesis testing against the null hypothesis of no change. Our aim is to reject the null hypothesis, i.e., to get convinced that, for a given gene, expression is different in the two experimental condition. Due to noise, we worry that an apparent difference is just a fluke of this noise, and hence, the expression difference has to be either strong enough to stand out against the background noise, or we need many replicates too keep the noise down.

Changes in isoform proportion are much harder to detect than changes of overall expression levels. So, if the concentration of transcripts of a gene goes down by a quarter, this might easily stick out from noise, even if we have only two or three replicates. However, if the overall expression levels stays as it is, but the ratio of isoform A to isoform B changes from 3:2 to 2:3, this causes more subtle changes in the counts and, in my opinion, two or so lanes per condition will usually be insufficient to be sure that such an observation is a biological effect and not just noise.

This is why we recommend to first go for counts by gene, summing over all exons. You will miss out on alternative splicing events but you will find something.

Strictly speaking, you might mistake alternative splicing for differential expression: if a gene contains a cassette exon that is present in nearly all transcripts in condition A and absent in nearly all transcripts in condition B, you will notice a difference in overall counts. Hence, what DESeq gives you is genes with changes in expression, which will typically be changes in overall expression strength but may also include changes in splicing patterns.

To distinguish this, you can also count by exon rather than by gene, and check for each exon whether its expression changes with experimental condition. If all exons of a gene change the same way, overall expression has changed but splicing ratios have maybe not, but if one exon falls out, it may be a cassette exon whose presence is influenced by your experimental condition.

Using DESeq with such a "counts by exon" table works fine as well. However, you have less counts per exon than per gene, and hence, you have less power to detect anything.
Simon Anders is offline   Reply With Quote
Old 06-28-2010, 05:08 AM   #27
blackgore
Member
 
Location: UK

Join Date: Sep 2009
Posts: 19
Default

sorry Simon, I had meant to reply much sooner than this - thanks for your response, it was altogether very useful!
blackgore is offline   Reply With Quote
Old 06-28-2010, 09:09 PM   #28
jlfmssm
Member
 
Location: Boston

Join Date: Apr 2010
Posts: 14
Smile coverageBed question

I try to run coverageBed like this:
/home/ay55/BEDTools/bin/genomeCoverageBed -ibam 1382_1_sorted.bam -i hg18.bed.sorted -g hg18.genome > hg18_seq.cov.txt

no error at all, but when I open hg18_seq.cov.txt, I got this
read block failed - CheckBlockHeader() returned false
Could not read header type

Any idea?




Quote:
Originally Posted by Auction View Post
I tried to run coverageBed for my BAM file from pair-end RNA-seq. When I compared the result in a certain gene to my calculation using Bio:B::Sam. It seems coverageBed don't consider the mate properly paired flag in the BAM file. Are there any options control for it? Thanks
jlfmssm is offline   Reply With Quote
Old 06-28-2010, 11:06 PM   #29
skycreative
Member
 
Location: GuangXi China

Join Date: Jan 2010
Posts: 27
Default

Quote:
Originally Posted by Siva View Post
Simon:
You would be surprised to know that one of the clusters I use needs Python 2.3!! Hope fully they update it soon. Fortunately we have another cluster but some one else has to help me load HTseq on it as I do not have access to it.

Siva
could you create the ENV on your home directory and add the path to the $PATH?
skycreative is offline   Reply With Quote
Old 06-04-2011, 10:57 PM   #30
tangx_2010
Junior Member
 
Location: china

Join Date: Mar 2011
Posts: 5
Default how does HTSeq proccess pair-end RNA-seq data

Dear Simon,
Very haoppy to use HTSeq and DEseq developped by you. I have several questions to ask you about.
1. How does HTSeq count pair-end reads by genes when both singleton and paired reads are presented? If the count is based on fragment, then paired two reads are counted by one, and singleton also counted by one, right?
2. How does HTSeq treats multiple mapped reads? Are they just counted several times by different genes?

sincerely tangx

Quote:
Originally Posted by Simon Anders View Post
Hi wenhuang

I've now added paired-end support for the SAM fomat to HTSeq and htseq-count. It would be great if you could download the new version 0.4.1 of HTSeq, try to do your counting job with it and tell me whether it worked correctly.

Cheers
Simon
tangx_2010 is offline   Reply With Quote
Old 06-13-2011, 01:41 PM   #31
Simon Anders
Senior Member
 
Location: Heidelberg, Germany

Join Date: Feb 2010
Posts: 991
Default

Quote:
Originally Posted by tangx_2010 View Post
1. How does HTSeq count pair-end reads by genes when both singleton and paired reads are presented? If the count is based on fragment, then paired two reads are counted by one, and singleton also counted by one, right?
Exactly. A paired read is only counted if both ends map to the same gene, and then, it is counted once, not twice, to this gene.

Quote:
2. How does HTSeq treats multiple mapped reads? Are they just counted several times by different genes?
This is a bit an issue, as different aligners have different ways of reporting multiple hits, and the SAM specification is frustratingly unclear on this.

In general, a multiply aligned read should be discarded. (Imagine, genes A and B have partial sequence identity. If A is differentially expressed and B is not, any read originating from A that matches to both A and B will let B appear as differentially expressed, too, if it is counted for both. Hence, the prudent strategy is to only count reads that map uniquely to a gene.)

For now, HTSeq looks for the "NH" optional flag. If it indicates that more than one alignment is reported, the read is not counted. If you use the "--minaqual" option, you can also cause all reads with low alignment quality to be skipped, which is another way how some aligners tag multiple alignments. If neither of the two works for you, you should pre-filter the SAM file. It is easy to write such a filtering script with HTSeq.
Simon Anders is offline   Reply With Quote
Old 06-16-2011, 09:56 PM   #32
jameslz
Member
 
Location: ShangHai

Join Date: Nov 2009
Posts: 20
Default

Quote:
Originally Posted by Simon Anders View Post
Exactly. A paired read is only counted if both ends map to the same gene, and then, it is counted once, not twice, to this gene.



This is a bit an issue, as different aligners have different ways of reporting multiple hits, and the SAM specification is frustratingly unclear on this.

In general, a multiply aligned read should be discarded. (Imagine, genes A and B have partial sequence identity. If A is differentially expressed and B is not, any read originating from A that matches to both A and B will let B appear as differentially expressed, too, if it is counted for both. Hence, the prudent strategy is to only count reads that map uniquely to a gene.)

For now, HTSeq looks for the "NH" optional flag. If it indicates that more than one alignment is reported, the read is not counted. If you use the "--minaqual" option, you can also cause all reads with low alignment quality to be skipped, which is another way how some aligners tag multiple alignments. If neither of the two works for you, you should pre-filter the SAM file. It is easy to write such a filtering script with HTSeq.
I have a question:
The samtools flagstat result of the bam:

8236963 + 0 in total (QC-passed reads + QC-failed reads)
0 + 0 duplicates
8236963 + 0 mapped (100.00%:-nan%)
8236963 + 0 paired in sequencing
4144407 + 0 read1
4092556 + 0 read2
6061528 + 0 properly paired (73.59%:-nan%)
7724492 + 0 with itself and mate mapped
512471 + 0 singletons (6.22%:-nan%)
0 + 0 with mate mapped to a different chr
0 + 0 with mate mapped to a different chr (mapQ>=5)

the line : 7724492 + 0 with itself and mate mapped (with itself : that both the forward and reverse are mapped, http://i.seqanswers.com/questions/80...lagstat-output)

dose HTSeq handle such paired reads?
jameslz is offline   Reply With Quote
Old 06-21-2011, 12:19 AM   #33
tangx_2010
Junior Member
 
Location: china

Join Date: Mar 2011
Posts: 5
Default pair-end strand specific RNA-seq

Quote:
Originally Posted by Simon Anders View Post
Exactly. A paired read is only counted if both ends map to the same gene, and then, it is counted once, not twice, to this gene.
Thank you for your reply. You are such a good man with patience. And there is another problem. I am runing HTSeq with pair-end and strand-specific RNA-seq data. It's very strange that most of the reads (> 90%) are counted as ambiguous. However, when I take the data as non strand-specific, HTSeq works very well. Waiting for your reply.
sincerely tangx
tangx_2010 is offline   Reply With Quote
Old 06-22-2011, 07:49 PM   #34
edge
Senior Member
 
Location: China

Join Date: Sep 2009
Posts: 199
Default

Hi quinlana,

I try the following command:
Code:
time samtools -f 0x2 /tophat_out/accepted_hits.bam | coverageBed -abam  /tophat_out/accepted_hits.bam -b transcripts.gtf > transcripts.proper.cov &
Unfortunately, it gives the following error message:
Code:
BgzfStream ERROR: read block failed - invalid block header
BamHeader ERROR: could not read magic number
Do you mind to explain a little bit more about the correct command?
Kindly point out the error that I did in my example.
Thanks.
edge is offline   Reply With Quote
Old 06-22-2011, 07:52 PM   #35
edge
Senior Member
 
Location: China

Join Date: Sep 2009
Posts: 199
Default

Hi Auction,

Is it this should be the correct command in order to identify the raw count of each transcript ?
Code:
samtools view -f 0x2 /tophat_out/accepted_hits.bam | coverageBed -abam  /tophat_out/accepted_hits.bam -b transcripts.gtf > transcripts.proper.cov
edge is offline   Reply With Quote
Old 07-03-2011, 04:48 AM   #36
Simon Anders
Senior Member
 
Location: Heidelberg, Germany

Join Date: Feb 2010
Posts: 991
Default

Quote:
Originally Posted by tangx_2010 View Post
Thank you for your reply. You are such a good man with patience. And there is another problem. I am runing HTSeq with pair-end and strand-specific RNA-seq data. It's very strange that most of the reads (> 90%) are counted as ambiguous. However, when I take the data as non strand-specific, HTSeq works very well. Waiting for your reply.
sincerely tangx
This is weird. Are you sure, you mean 'ambiguous', and not 'no_feature'?
Simon Anders is offline   Reply With Quote
Old 02-02-2012, 01:40 AM   #37
oliviera
Member
 
Location: germany

Join Date: Apr 2010
Posts: 31
Default multiple mapped miRNA with HTseq/DEseq

Quote:
In general, a multiply aligned read should be discarded. (Imagine, genes A and B have partial sequence identity. If A is differentially expressed and B is not, any read originating from A that matches to both A and B will let B appear as differentially expressed, too, if it is counted for both. Hence, the prudent strategy is to only count reads that map uniquely to a gene.)
Dear Simon,
I hope this thread will still find you well.
I am mapping reads from small RNAseq and would like to use HTseq/ DEseq. As miRNA map very often to more than one genomic location I would like to know your suggestions to deal with these multiple mapped reads with HTSeq. For what I saw on your previous feedback, you suggest to remove the multiple mapped reads but in my case that would mean that 80% of the reads are discarded... Could you please advise some methodology to use HTseq with miRNA data?

Olivier
oliviera is offline   Reply With Quote
Old 02-05-2012, 12:27 PM   #38
Simon Anders
Senior Member
 
Location: Heidelberg, Germany

Join Date: Feb 2010
Posts: 991
Default

Sorry, I've never worked myself with miRNA-Seq data. From what I've heard, a common approach is to first compile a list of all miRNA sequences in the genome, then find for each read a miRNA in the list. In other words: skip the alignment against the genome completely, instead just compare reads with miRNAs. Of course, htseq-count is not suitable for this, but with some Python knowledge, you can write your own script with HTSeq.
Simon Anders is offline   Reply With Quote
Old 06-09-2013, 12:39 PM   #39
Baoqing
Member
 
Location: Texas

Join Date: Jan 2013
Posts: 24
Default HT_SEQ installation

Hi, Simon

I was trying to install HTseq on my local ubuntu machine by following your instruction below:
http://www-huber.embl.de/users/ander...l.html#install

However, there are some error messages there. could you help me to get around this?

Thanks for your help!

[email protected]:~/Desktop/apps/HTSeq-0.5.4p3$ ls
build_it doc HTSeq.egg-info MANIFEST.in README setup.cfg src
clean HTSeq LICENSE PKG-INFO scripts setup.py VERSION
[email protected]:~/Desktop/apps/HTSeq-0.5.4p3$ python setup.py install --user
Could not import 'setuptools', falling back to 'distutils'.

running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-2.7
creating build/lib.linux-x86_64-2.7/HTSeq
copying HTSeq/__init__.py -> build/lib.linux-x86_64-2.7/HTSeq
copying HTSeq/_HTSeq_internal.py -> build/lib.linux-x86_64-2.7/HTSeq
copying HTSeq/StepVector.py -> build/lib.linux-x86_64-2.7/HTSeq
copying HTSeq/_version.py -> build/lib.linux-x86_64-2.7/HTSeq
creating build/lib.linux-x86_64-2.7/HTSeq/scripts
copying HTSeq/scripts/__init__.py -> build/lib.linux-x86_64-2.7/HTSeq/scripts
copying HTSeq/scripts/qa.py -> build/lib.linux-x86_64-2.7/HTSeq/scripts
copying HTSeq/scripts/count.py -> build/lib.linux-x86_64-2.7/HTSeq/scripts
running build_ext
building 'HTSeq._HTSeq' extension
creating build/temp.linux-x86_64-2.7
creating build/temp.linux-x86_64-2.7/src
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/include/python2.7 -c src/_HTSeq.c -o build/temp.linux-x86_64-2.7/src/_HTSeq.o -w
gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro build/temp.linux-x86_64-2.7/src/_HTSeq.o -o build/lib.linux-x86_64-2.7/HTSeq/_HTSeq.so
building 'HTSeq._StepVector' extension
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c src/StepVector_wrap.cxx -o build/temp.linux-x86_64-2.7/src/StepVector_wrap.o -w
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for Ada/C/ObjC but not for C++ [enabled by default]
g++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro build/temp.linux-x86_64-2.7/src/StepVector_wrap.o -o build/lib.linux-x86_64-2.7/HTSeq/_StepVector.so
running build_scripts
creating build/scripts-2.7
copying and adjusting scripts/htseq-qa -> build/scripts-2.7
copying and adjusting scripts/htseq-count -> build/scripts-2.7
changing mode of build/scripts-2.7/htseq-qa from 664 to 775
changing mode of build/scripts-2.7/htseq-count from 664 to 775
running install_lib
creating /home/bq/.local/lib/python2.7/site-packages/HTSeq
copying build/lib.linux-x86_64-2.7/HTSeq/_StepVector.so -> /home/bq/.local/lib/python2.7/site-packages/HTSeq
copying build/lib.linux-x86_64-2.7/HTSeq/_HTSeq.so -> /home/bq/.local/lib/python2.7/site-packages/HTSeq
copying build/lib.linux-x86_64-2.7/HTSeq/StepVector.py -> /home/bq/.local/lib/python2.7/site-packages/HTSeq
copying build/lib.linux-x86_64-2.7/HTSeq/_version.py -> /home/bq/.local/lib/python2.7/site-packages/HTSeq
copying build/lib.linux-x86_64-2.7/HTSeq/_HTSeq_internal.py -> /home/bq/.local/lib/python2.7/site-packages/HTSeq
creating /home/bq/.local/lib/python2.7/site-packages/HTSeq/scripts
copying build/lib.linux-x86_64-2.7/HTSeq/scripts/qa.py -> /home/bq/.local/lib/python2.7/site-packages/HTSeq/scripts
copying build/lib.linux-x86_64-2.7/HTSeq/scripts/count.py -> /home/bq/.local/lib/python2.7/site-packages/HTSeq/scripts
copying build/lib.linux-x86_64-2.7/HTSeq/scripts/__init__.py -> /home/bq/.local/lib/python2.7/site-packages/HTSeq/scripts
copying build/lib.linux-x86_64-2.7/HTSeq/__init__.py -> /home/bq/.local/lib/python2.7/site-packages/HTSeq
byte-compiling /home/bq/.local/lib/python2.7/site-packages/HTSeq/StepVector.py to StepVector.pyc
byte-compiling /home/bq/.local/lib/python2.7/site-packages/HTSeq/_version.py to _version.pyc
byte-compiling /home/bq/.local/lib/python2.7/site-packages/HTSeq/_HTSeq_internal.py to _HTSeq_internal.pyc
byte-compiling /home/bq/.local/lib/python2.7/site-packages/HTSeq/scripts/qa.py to qa.pyc
byte-compiling /home/bq/.local/lib/python2.7/site-packages/HTSeq/scripts/count.py to count.pyc
byte-compiling /home/bq/.local/lib/python2.7/site-packages/HTSeq/scripts/__init__.py to __init__.pyc
byte-compiling /home/bq/.local/lib/python2.7/site-packages/HTSeq/__init__.py to __init__.pyc
running install_scripts
creating /home/bq/.local/bin
copying build/scripts-2.7/htseq-qa -> /home/bq/.local/bin
copying build/scripts-2.7/htseq-count -> /home/bq/.local/bin
changing mode of /home/bq/.local/bin/htseq-qa to 775
changing mode of /home/bq/.local/bin/htseq-count to 775
running install_egg_info
Writing /home/bq/.local/lib/python2.7/site-packages/HTSeq-0.5.4p3.egg-info
[email protected]:~/Desktop/apps$ python
Python 2.7.3 (default, Aug 1 2012, 05:14:39)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import HTSeq
>>>

Last edited by Baoqing; 06-09-2013 at 12:48 PM.
Baoqing is offline   Reply With Quote
Old 06-09-2013, 01:39 PM   #40
Simon Anders
Senior Member
 
Location: Heidelberg, Germany

Join Date: Feb 2010
Posts: 991
Default

I don't see any error messages.

"Could not import 'setuptools', falling back to 'distutils'." -- Well, that's what a fall-back is for: If you don't have setuptools, it uses distutils which works as well.
Simon Anders is offline   Reply With Quote
Reply

Tags
cufflinks, degseq, deseq

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT -8. The time now is 08:18 PM.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Single Sign On provided by vBSSO