In [1]:
%cd ../data
/home/explorer/BMS270/data

In [2]:
import numpy as np
In [3]:
def clip(s):
    return max(0,int(float(s)+.5))
In [4]:
from csv import reader, excel_tab
orfs = []
names = []
data = []
fin = reader(open("GSE88801_kallisto_est_counts_thresh1.cdt"),dialect=excel_tab)
header = next(fin)[4:]
eweights = next(fin)[4:]
for row in fin:
    orfs.append(row[1])
    names.append(row[2])
    data.append([clip(i) for i in row[4:]])
In [5]:
C = np.array(data)
C.shape
Out[5]:
(30735, 36)
In [6]:
from csv import reader
In [7]:
fp = reader(open("sample_table_v2.csv"))
sample_header = next(fp)
samples = []
name2sample = {}
for i in fp:
    samples.append(i)
    name2sample[i[0]] = i
In [8]:
sample_header
Out[8]:
['name', 'infection', 'strain', 'time', 'replicate']
In [9]:
out = open("sample_table_v2.tdt","w")
out.write("\t".join(sample_header+["state"])+"\n")
for i in header:
    s = name2sample[i]
    out.write("\t".join(s + ["%s.%s.%s" % (s[2],s[1],s[3])])+"\n")
out.close()
In [10]:
out = open("GSE88801_kallisto_est_counts_thresh1.txt","w")
out.write("\t".join(["gene"]+header)+"\n")
for (name,row) in zip(names,C):
    out.write("\t".join([name]+[str(i) for i in row])+"\n")
out.close()
In [11]:
%load_ext rpy2.ipython
In [12]:
%%R
library(limma)
library(edgeR)
In [13]:
%%R
samples <- read.delim("sample_table_v2.tdt")
print(summary(samples))
         name         infection   strain        time      replicate
 GSM2348248: 1   Dead      :12   BMDM:18   Min.   : 4   Min.   :1  
 GSM2348249: 1   Live      :12   J774:18   1st Qu.: 4   1st Qu.:1  
 GSM2348250: 1   uninfected:12             Median :14   Median :2  
 GSM2348251: 1                             Mean   :14   Mean   :2  
 GSM2348252: 1                             3rd Qu.:24   3rd Qu.:3  
 GSM2348253: 1                             Max.   :24   Max.   :3  
 (Other)   :30                                                     
                state   
 BMDM.Dead.24      : 3  
 BMDM.Dead.4       : 3  
 BMDM.Live.24      : 3  
 BMDM.Live.4       : 3  
 BMDM.uninfected.24: 3  
 BMDM.uninfected.4 : 3  
 (Other)           :18  

In [14]:
%%R
state <- samples$state

d <- model.matrix(~0+state)
colnames(d) <- gsub("state","",colnames(d))
print(colnames(d))
 [1] "BMDM.Dead.24"       "BMDM.Dead.4"        "BMDM.Live.24"      
 [4] "BMDM.Live.4"        "BMDM.uninfected.24" "BMDM.uninfected.4" 
 [7] "J774.Dead.24"       "J774.Dead.4"        "J774.Live.24"      
[10] "J774.Live.4"        "J774.uninfected.24" "J774.uninfected.4" 

In [15]:
%%R
C <- read.delim("GSE88801_kallisto_est_counts_thresh1.txt",row.names=1)
dge <- DGEList(counts=C)
dge <- calcNormFactors(dge)
v <- voom(dge, d, plot = TRUE)
In [16]:
%%R
fit <- lmFit(v, d)

contrast.matrix <- makeContrasts(# S1 contrast
                                 BMDM.uninfected.24-BMDM.uninfected.4,
                                 # S2 contrasts
                                 BMDM.Live.4-BMDM.uninfected.4,BMDM.Dead.4-BMDM.uninfected.4,
                                 BMDM.Live.24-BMDM.uninfected.24,BMDM.Dead.24-BMDM.uninfected.24,
                                 J774.Live.4-J774.uninfected.4,J774.Dead.4-J774.uninfected.4,
                                 J774.Live.24-J774.uninfected.24,J774.Dead.24-J774.uninfected.24,
                                 levels=d)

fit2 <- contrasts.fit(fit, contrast.matrix)
fit2 <- eBayes(fit2)
print(summary(decideTests(fit2)))
   BMDM.uninfected.24 - BMDM.uninfected.4 BMDM.Live.4 - BMDM.uninfected.4
-1                                   1866                            2041
0                                   26352                           26735
1                                    2517                            1959
   BMDM.Dead.4 - BMDM.uninfected.4 BMDM.Live.24 - BMDM.uninfected.24
-1                            1388                              2446
0                            27751                             26099
1                             1596                              2190
   BMDM.Dead.24 - BMDM.uninfected.24 J774.Live.4 - J774.uninfected.4
-1                              1278                             154
0                              28297                           30288
1                               1160                             293
   J774.Dead.4 - J774.uninfected.4 J774.Live.24 - J774.uninfected.24
-1                              92                              1798
0                            30368                             26975
1                              275                              1962
   J774.Dead.24 - J774.uninfected.24
-1                               374
0                              29975
1                                386

In [17]:
%%R
print(summary(decideTests(fit2,lfc=1)))
   BMDM.uninfected.24 - BMDM.uninfected.4 BMDM.Live.4 - BMDM.uninfected.4
-1                                    818                             968
0                                   28609                           28628
1                                    1308                            1139
   BMDM.Dead.4 - BMDM.uninfected.4 BMDM.Live.24 - BMDM.uninfected.24
-1                             589                              1503
0                            29212                             28278
1                              934                               954
   BMDM.Dead.24 - BMDM.uninfected.24 J774.Live.4 - J774.uninfected.4
-1                               696                              47
0                              29494                           30541
1                                545                             147
   J774.Dead.4 - J774.uninfected.4 J774.Live.24 - J774.uninfected.24
-1                              25                               732
0                            30561                             28946
1                              149                              1057
   J774.Dead.24 - J774.uninfected.24
-1                               150
0                              30415
1                                170

In [18]:
%%R
print(summary(decideTests(fit2,lfc=.27)))
   BMDM.uninfected.24 - BMDM.uninfected.4 BMDM.Live.4 - BMDM.uninfected.4
-1                                   1866                            2041
0                                   26352                           26735
1                                    2517                            1959
   BMDM.Dead.4 - BMDM.uninfected.4 BMDM.Live.24 - BMDM.uninfected.24
-1                            1388                              2446
0                            27751                             26099
1                             1596                              2190
   BMDM.Dead.24 - BMDM.uninfected.24 J774.Live.4 - J774.uninfected.4
-1                              1278                             154
0                              28297                           30288
1                               1160                             293
   J774.Dead.4 - J774.uninfected.4 J774.Live.24 - J774.uninfected.24
-1                              92                              1798
0                            30368                             26975
1                              275                              1962
   J774.Dead.24 - J774.uninfected.24
-1                               374
0                              29975
1                                386

In [19]:
%%R
print(topTable(fit2))
                   BMDM.uninfected.24...BMDM.uninfected.4
ENSMUSG00000023341                              0.9730308
ENSMUSG00000074896                              1.7243497
ENSMUSG00000000386                              1.1705564
ENSMUSG00000037405                              0.6124789
ENSMUSG00000050370                             -4.6782716
ENSMUSG00000034459                              1.2710903
ENSMUSG00000000957                              0.7285672
ENSMUSG00000073489                              1.0951724
ENSMUSG00000031613                              2.7442241
ENSMUSG00000028270                              2.3280885
                   BMDM.Live.4...BMDM.uninfected.4
ENSMUSG00000023341                        6.258371
ENSMUSG00000074896                        7.250896
ENSMUSG00000000386                        7.269410
ENSMUSG00000037405                        3.794173
ENSMUSG00000050370                        2.599478
ENSMUSG00000034459                        7.381303
ENSMUSG00000000957                        4.818983
ENSMUSG00000073489                        3.785293
ENSMUSG00000031613                       -1.045474
ENSMUSG00000028270                        6.838065
                   BMDM.Dead.4...BMDM.uninfected.4
ENSMUSG00000023341                        5.416925
ENSMUSG00000074896                        5.569789
ENSMUSG00000000386                        5.835342
ENSMUSG00000037405                        4.079526
ENSMUSG00000050370                        2.110397
ENSMUSG00000034459                        6.046864
ENSMUSG00000000957                        5.985615
ENSMUSG00000073489                        2.823937
ENSMUSG00000031613                       -1.079795
ENSMUSG00000028270                        5.406202
                   BMDM.Live.24...BMDM.uninfected.24
ENSMUSG00000023341                          2.484460
ENSMUSG00000074896                          4.113974
ENSMUSG00000000386                          3.338574
ENSMUSG00000037405                          1.569223
ENSMUSG00000050370                          1.737906
ENSMUSG00000034459                          4.046411
ENSMUSG00000000957                          6.320860
ENSMUSG00000073489                          2.396566
ENSMUSG00000031613                         -5.037560
ENSMUSG00000028270                          3.046186
                   BMDM.Dead.24...BMDM.uninfected.24
ENSMUSG00000023341                        1.16937676
ENSMUSG00000074896                        1.99893957
ENSMUSG00000000386                        1.31219824
ENSMUSG00000037405                        1.30343521
ENSMUSG00000050370                       -0.01340354
ENSMUSG00000034459                        2.15511085
ENSMUSG00000000957                        6.26524017
ENSMUSG00000073489                        1.08588924
ENSMUSG00000031613                       -3.32885670
ENSMUSG00000028270                        1.88075578
                   J774.Live.4...J774.uninfected.4
ENSMUSG00000023341                        2.598038
ENSMUSG00000074896                        2.404618
ENSMUSG00000000386                        2.327619
ENSMUSG00000037405                        2.237531
ENSMUSG00000050370                       -0.367666
ENSMUSG00000034459                        3.083841
ENSMUSG00000000957                        2.377270
ENSMUSG00000073489                        1.215199
ENSMUSG00000031613                       -0.367666
ENSMUSG00000028270                        1.839475
                   J774.Dead.4...J774.uninfected.4
ENSMUSG00000023341                       0.9955723
ENSMUSG00000074896                       1.0129189
ENSMUSG00000000386                       1.3130188
ENSMUSG00000037405                       2.4966174
ENSMUSG00000050370                      -0.2458674
ENSMUSG00000034459                       1.7067967
ENSMUSG00000000957                       1.7451638
ENSMUSG00000073489                       0.2500424
ENSMUSG00000031613                      -0.2458674
ENSMUSG00000028270                       1.5566625
                   J774.Live.24...J774.uninfected.24
ENSMUSG00000023341                          4.980434
ENSMUSG00000074896                          7.875549
ENSMUSG00000000386                          7.596217
ENSMUSG00000037405                          2.237289
ENSMUSG00000050370                          0.508036
ENSMUSG00000034459                          6.744181
ENSMUSG00000000957                          3.033212
ENSMUSG00000073489                          5.192769
ENSMUSG00000031613                          0.508036
ENSMUSG00000028270                          5.380634
                   J774.Dead.24...J774.uninfected.24      AveExpr        F
ENSMUSG00000023341                         0.2129015  4.860869210 281.2166
ENSMUSG00000074896                         0.3811290  6.325627944 250.1888
ENSMUSG00000000386                         0.4155170  5.022918636 239.1053
ENSMUSG00000037405                         1.1387380  7.555609191 232.3881
ENSMUSG00000050370                         0.8309753 -1.241864591 223.8288
ENSMUSG00000034459                         0.6713879  6.284560886 210.7087
ENSMUSG00000000957                         2.6899303  0.284887331 209.1176
ENSMUSG00000073489                         0.2299580  8.254759358 208.3424
ENSMUSG00000031613                         0.8309753  0.000212937 206.4812
ENSMUSG00000028270                         0.3382916  6.171807942 204.8614
                        P.Value    adj.P.Val
ENSMUSG00000023341 2.700679e-29 8.300537e-25
ENSMUSG00000074896 1.915211e-28 2.943201e-24
ENSMUSG00000000386 4.087744e-28 4.187893e-24
ENSMUSG00000037405 6.582736e-28 5.058009e-24
ENSMUSG00000050370 1.232389e-27 7.575496e-24
ENSMUSG00000034459 3.378145e-27 1.472486e-23
ENSMUSG00000000957 3.833481e-27 1.472486e-23
ENSMUSG00000073489 4.078470e-27 1.472486e-23
ENSMUSG00000031613 4.736902e-27 1.472486e-23
ENSMUSG00000028270 5.401662e-27 1.472486e-23

In [20]:
%%R
print(colnames(fit2$coefficients))
[1] "BMDM.uninfected.24 - BMDM.uninfected.4"
[2] "BMDM.Live.4 - BMDM.uninfected.4"       
[3] "BMDM.Dead.4 - BMDM.uninfected.4"       
[4] "BMDM.Live.24 - BMDM.uninfected.24"     
[5] "BMDM.Dead.24 - BMDM.uninfected.24"     
[6] "J774.Live.4 - J774.uninfected.4"       
[7] "J774.Dead.4 - J774.uninfected.4"       
[8] "J774.Live.24 - J774.uninfected.24"     
[9] "J774.Dead.24 - J774.uninfected.24"     

In [21]:
%%R
print(topTable(fit2, coef="BMDM.uninfected.24 - BMDM.uninfected.4", lfc=1, p.value = .05))
                       logFC      AveExpr         t      P.Value    adj.P.Val
ENSMUSG00000031613  2.744224  0.000212937  24.67641 2.531462e-23 7.780448e-19
ENSMUSG00000070348 -4.375983  8.403497573 -19.67151 3.493524e-20 5.368673e-16
ENSMUSG00000024030  2.727767  6.808548199  19.34349 5.919401e-20 6.064426e-16
ENSMUSG00000013089 -4.054496  5.092314479 -18.79870 1.445191e-19 1.110448e-15
ENSMUSG00000025283  2.596455  7.443247511  18.15514 4.266110e-19 2.622378e-15
ENSMUSG00000056234  2.341345  7.413253949  18.04158 5.180837e-19 2.653884e-15
ENSMUSG00000022351 -2.678260  6.457351474 -17.90112 6.597135e-19 2.896614e-15
ENSMUSG00000053040  2.764215  3.388533229  17.70227 9.313016e-19 3.577944e-15
ENSMUSG00000026012  3.423256  5.141199249  17.24482 2.083479e-18 7.115082e-15
ENSMUSG00000029580 -1.434818 12.516978817 -17.04468 2.979415e-18 9.157232e-15
                          B
ENSMUSG00000031613 42.86458
ENSMUSG00000070348 35.84294
ENSMUSG00000024030 35.35525
ENSMUSG00000013089 33.74175
ENSMUSG00000025283 33.51325
ENSMUSG00000056234 33.30693
ENSMUSG00000022351 32.77278
ENSMUSG00000053040 32.47872
ENSMUSG00000026012 31.84084
ENSMUSG00000029580 31.55615

In [22]:
%%R
for(tc in colnames(fit2$coefficients)){
  print(tc)
  # Extract all genes significantly differential on this contrast for a 2x fold change cutoff and 5% FDR
  # Use write.csv rather than write.table for clean compatibility with python's csv.reader
  write.csv(topTable(fit2, coef=tc, n = 40000, lfc=1, p.value = .05),
            paste("limma1.",gsub(" ","",tc),".t0.csv",sep=""))
  # Extract the adjusted p-values for this contrast for all genes, independent of significance
  write.csv(topTable(fit2, coef=tc, n = 40000),
            paste("limma1.",gsub(" ","",tc),".t1.csv",sep=""))
}
[1] "BMDM.uninfected.24 - BMDM.uninfected.4"
[1] "BMDM.Live.4 - BMDM.uninfected.4"
[1] "BMDM.Dead.4 - BMDM.uninfected.4"
[1] "BMDM.Live.24 - BMDM.uninfected.24"
[1] "BMDM.Dead.24 - BMDM.uninfected.24"
[1] "J774.Live.4 - J774.uninfected.4"
[1] "J774.Dead.4 - J774.uninfected.4"
[1] "J774.Live.24 - J774.uninfected.24"
[1] "J774.Dead.24 - J774.uninfected.24"

In [ ]: