1 Which genes are DE in human macrophages at 4 hours upon infection with L. major?

2 Gather annotation data

I want to perform a series of comparisons among the host cells: human and mouse. Thus I need to collect annotation data for both species and get the set of orthologs between them.

2.2 Generate expressionsets

The question is reasonably self-contained. I want to compare the uninfected human samples against any samples which were infected for 4 hours. So let us first pull those samples and then poke at them a bit.

## Reading the sample metadata.
## The sample definitions comprises: 437 rows(samples) and 55 columns(metadata fields).
## Reading count tables.
## Using the transcript to gene mapping.
## Reading salmon data with tximport.
## Finished reading count tables.
## Matched 19629 annotations and counts.
## Bringing together the count matrix and gene information.
## The mapped IDs are not the rownames of your gene information, changing them now.
## Some annotations were lost in merging, setting them to 'undefined'.
## There were 267, now there are 69 samples.
## 
##   no stim  yes 
##   20   35   14
## 
## lps-timecourse       m-gm-csf           mbio 
##              8             39             22

2.3 Examine t4h vs uninfected

## This function will replace the expt$expressionset slot with:
## log2(svaseq(cpm(quant(cbcb(data)))))
## It backs up the current data into a slot named:
##  expt$backup_expressionset. It will also save copies of each step along the way
##  in expt$normalized with the corresponding libsizes. Keep the libsizes in mind
##  when invoking limma.  The appropriate libsize is the non-log(cpm(normalized)).
##  This is most likely kept at:
##  'new_expt$normalized$intermediate_counts$normalization$libsizes'
##  A copy of this may also be found at:
##  new_expt$best_libsize
## Warning in normalize_expt(hs_t4h_expt, norm = "quant", convert = "cpm", :
## Quantile normalization and sva do not always play well together.
## Step 1: performing count filter with option: cbcb
## Removing 6692 low-count genes (12937 remaining).
## Step 2: normalizing the data with quant.
## Using normalize.quantiles.robust due to a thread error in preprocessCore.
## Step 3: converting the data with cpm.
## Step 4: transforming the data with log2.
## transform_counts: Found 25367 values equal to 0, adding 1 to the matrix.
## Step 5: doing batch correction with svaseq.
## Note to self:  If you get an error like 'x contains missing values' The data has too many 0's and needs a stronger low-count filter applied.
## Passing off to all_adjusters.
## batch_counts: Before batch/surrogate estimation, 773830 entries are x>1: 86.7%.
## batch_counts: Before batch/surrogate estimation, 25367 entries are x==0: 2.84%.
## batch_counts: Before batch/surrogate estimation, 93456 entries are 0<x<1: 10.5%.
## The be method chose 12 surrogate variable(s).
## Attempting svaseq estimation with 12 surrogates.
## There are 5729 (0.642%) elements which are < 0 after batch correction.

2.4 Remove stimulated samples

## There were 69, now there are 34 samples.

3 Which genes are DE in mouse macrophages at 4 hours upon infection with L. major?

4 Gather annotation data

I want to perform a series of comparisons among the host cells: human and mouse. Thus I need to collect annotation data for both species and get the set of orthologs between them.

4.2 Generate expressionsets

The question is reasonably self-contained. I want to compare the uninfected human samples against any samples which were infected for 4 hours. So let us first pull those samples and then poke at them a bit.

## Reading the sample metadata.
## The sample definitions comprises: 437 rows(samples) and 55 columns(metadata fields).
## Reading count tables.
## Using the transcript to gene mapping.
## Reading salmon data with tximport.
## Finished reading count tables.
## Matched 19660 annotations and counts.
## Bringing together the count matrix and gene information.
## The mapped IDs are not the rownames of your gene information, changing them now.
## Some annotations were lost in merging, setting them to 'undefined'.
## There were 105, now there are 41 samples.
## 
##  no yes 
##  35   6
## 
## undefined 
##        41

4.3 Examine t4h vs uninfected

## This function will replace the expt$expressionset slot with:
## log2(svaseq(cpm(quant(cbcb(data)))))
## It backs up the current data into a slot named:
##  expt$backup_expressionset. It will also save copies of each step along the way
##  in expt$normalized with the corresponding libsizes. Keep the libsizes in mind
##  when invoking limma.  The appropriate libsize is the non-log(cpm(normalized)).
##  This is most likely kept at:
##  'new_expt$normalized$intermediate_counts$normalization$libsizes'
##  A copy of this may also be found at:
##  new_expt$best_libsize
## Warning in normalize_expt(mm_t4h_expt, norm = "quant", convert = "cpm", :
## Quantile normalization and sva do not always play well together.
## Step 1: performing count filter with option: cbcb
## Removing 9350 low-count genes (10310 remaining).
## Step 2: normalizing the data with quant.
## Using normalize.quantiles.robust due to a thread error in preprocessCore.
## Step 3: converting the data with cpm.
## Step 4: transforming the data with log2.
## transform_counts: Found 38 values equal to 0, adding 1 to the matrix.
## Step 5: doing batch correction with svaseq.
## Note to self:  If you get an error like 'x contains missing values' The data has too many 0's and needs a stronger low-count filter applied.
## Passing off to all_adjusters.
## batch_counts: Before batch/surrogate estimation, 390888 entries are x>1: 92.5%.
## batch_counts: Before batch/surrogate estimation, 38 entries are x==0: 0.00899%.
## batch_counts: Before batch/surrogate estimation, 31784 entries are 0<x<1: 7.52%.
## The be method chose 7 surrogate variable(s).
## Attempting svaseq estimation with 7 surrogates.
## There are 648 (0.153%) elements which are < 0 after batch correction.
LS0tCnRpdGxlOiAiMjAxOTAzMjYgQW4gYXR0ZW1wdCB0byBhbnN3ZXIgb25lIG9mIHRoZSBiaWcgcXVlc3Rpb25zIGZyb20gTmFqaWIuIgphdXRob3I6ICJhdGIgYWJlbGV3QGdtYWlsLmNvbSIKZGF0ZTogImByIFN5cy5EYXRlKClgIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgIGNvZGVfZm9sZGluZzogc2hvdwogICAgZmlnX2NhcHRpb246IHRydWUKICAgIGZpZ19oZWlnaHQ6IDcKICAgIGZpZ193aWR0aDogNwogICAgaGlnaGxpZ2h0OiB0YW5nbwogICAga2VlcF9tZDogZmFsc2UKICAgIG1vZGU6IHNlbGZjb250YWluZWQKICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQogICAgc2VsZl9jb250YWluZWQ6IHRydWUKICAgIHRoZW1lOiByZWFkYWJsZQogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6CiAgICAgIGNvbGxhcHNlZDogZmFsc2UKICAgICAgc21vb3RoX3Njcm9sbDogZmFsc2UKICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjoKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgIGNvZGVfZm9sZGluZzogc2hvdwogICAgZGZfcHJpbnQ6IHBhZ2VkCiAgICBmaWdfY2FwdGlvbjogdHJ1ZQogICAgZmlnX2hlaWdodDogNwogICAgZmlnX3dpZHRoOiA3CiAgICBoaWdobGlnaHQ6IHRhbmdvCiAgICB3aWR0aDogMzAwCiAgICBrZWVwX21kOiBmYWxzZQogICAgbW9kZTogc2VsZmNvbnRhaW5lZAogICAgdG9jX2Zsb2F0OiB0cnVlCiAgQmlvY1N0eWxlOjpodG1sX2RvY3VtZW50OgogICAgY29kZV9kb3dubG9hZDogdHJ1ZQogICAgY29kZV9mb2xkaW5nOiBzaG93CiAgICBmaWdfY2FwdGlvbjogdHJ1ZQogICAgZmlnX2hlaWdodDogNwogICAgZmlnX3dpZHRoOiA3CiAgICBoaWdobGlnaHQ6IHRhbmdvCiAgICBrZWVwX21kOiBmYWxzZQogICAgbW9kZTogc2VsZmNvbnRhaW5lZAogICAgdG9jX2Zsb2F0OiB0cnVlCi0tLQoKPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KYm9keSwgdGQgewogIGZvbnQtc2l6ZTogMTZweDsKfQpjb2RlLnJ7CiAgZm9udC1zaXplOiAxNnB4Owp9CnByZSB7CiBmb250LXNpemU6IDE2cHgKfQo8L3N0eWxlPgoKYGBge3Igb3B0aW9ucywgaW5jbHVkZT1GQUxTRX0KbGlicmFyeShocGdsdG9vbHMpCnR0IDwtIHNtKGRldnRvb2xzOjpsb2FkX2FsbCgifi9ocGdsdG9vbHMiKSkKa25pdHI6Om9wdHNfa25pdCRzZXQocHJvZ3Jlc3M9VFJVRSwKICAgICAgICAgICAgICAgICAgICAgdmVyYm9zZT1UUlVFLAogICAgICAgICAgICAgICAgICAgICB3aWR0aD0xMjAsCiAgICAgICAgICAgICAgICAgICAgIGVjaG89VFJVRSkKa25pdHI6Om9wdHNfY2h1bmskc2V0KGVycm9yPVRSVUUsCiAgICAgICAgICAgICAgICAgICAgICBmaWcud2lkdGg9OCwKICAgICAgICAgICAgICAgICAgICAgIGZpZy5oZWlnaHQ9OCwKICAgICAgICAgICAgICAgICAgICAgIGRwaT05NikKb2xkX29wdGlvbnMgPC0gb3B0aW9ucyhkaWdpdHM9NCwKICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdzQXNGYWN0b3JzPUZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgIGtuaXRyLmR1cGxpY2F0ZS5sYWJlbD0iYWxsb3ciKQpnZ3Bsb3QyOjp0aGVtZV9zZXQoZ2dwbG90Mjo6dGhlbWVfYncoYmFzZV9zaXplPTEyKSkKdmVyIDwtICIyMDE5MDMyNiIKcnVuZGF0ZSA8LSBmb3JtYXQoU3lzLkRhdGUoKSwgZm9ybWF0PSIlWSVtJWQiKQpybWRfZmlsZSA8LSBwYXN0ZTAoIjIwMTkwMzI2X2h1bWFuX21hY3JvcGhhZ2VzLlJtZCIpCmBgYAoKIyBXaGljaCBnZW5lcyBhcmUgREUgaW4gaHVtYW4gbWFjcm9waGFnZXMgYXQgNCBob3VycyB1cG9uIGluZmVjdGlvbiB3aXRoIEwuIG1ham9yPwoKIyBHYXRoZXIgYW5ub3RhdGlvbiBkYXRhCgpJIHdhbnQgdG8gcGVyZm9ybSBhIHNlcmllcyBvZiBjb21wYXJpc29ucyBhbW9uZyB0aGUgaG9zdCBjZWxsczogaHVtYW4gYW5kIG1vdXNlLgpUaHVzIEkgbmVlZCB0byBjb2xsZWN0IGFubm90YXRpb24gZGF0YSBmb3IgYm90aCBzcGVjaWVzIGFuZCBnZXQgdGhlIHNldCBvZgpvcnRob2xvZ3MgYmV0d2VlbiB0aGVtLgoKIyMgU3RhcnQgd2l0aCB0aGUgaHVtYW4gYW5ub3RhdGlvbiBkYXRhCgpgYGB7ciBodW1hbl9hbm5vdGF0aW9uc30KaHNfYW5ub3QgPC0gbG9hZF9iaW9tYXJ0X2Fubm90YXRpb25zKCkkYW5ub3RhdGlvbgpyb3duYW1lcyhoc19hbm5vdCkgPC0gbWFrZS5uYW1lcygKICBwYXN0ZTAoaHNfYW5ub3RbWyJlbnNlbWJsX3RyYW5zY3JpcHRfaWQiXV0sICIuIiwKICAgICAgICAgaHNfYW5ub3RbWyJ0cmFuc2NyaXB0X3ZlcnNpb24iXV0pLAogIHVuaXF1ZT1UUlVFKQpoc190eF9nZW5lIDwtIGhzX2Fubm90WywgYygiZW5zZW1ibF9nZW5lX2lkIiwgImVuc2VtYmxfdHJhbnNjcmlwdF9pZCIpXQpoc190eF9nZW5lW1siaWQiXV0gPC0gcm93bmFtZXMoaHNfdHhfZ2VuZSkKaHNfdHhfZ2VuZSA8LSBoc190eF9nZW5lWywgYygiaWQiLCAiZW5zZW1ibF9nZW5lX2lkIildCm5ld19oc19hbm5vdCA8LSBoc19hbm5vdApyb3duYW1lcyhuZXdfaHNfYW5ub3QpIDwtIG1ha2UubmFtZXMoaHNfYW5ub3RbWyJlbnNlbWJsX2dlbmVfaWQiXV0sIHVuaXF1ZT1UUlVFKQpgYGAKCiMjIEdlbmVyYXRlIGV4cHJlc3Npb25zZXRzCgpUaGUgcXVlc3Rpb24gaXMgcmVhc29uYWJseSBzZWxmLWNvbnRhaW5lZC4gIEkgd2FudCB0byBjb21wYXJlIHRoZSB1bmluZmVjdGVkCmh1bWFuIHNhbXBsZXMgYWdhaW5zdCBhbnkgc2FtcGxlcyB3aGljaCB3ZXJlIGluZmVjdGVkIGZvciA0IGhvdXJzLgpTbyBsZXQgdXMgZmlyc3QgcHVsbCB0aG9zZSBzYW1wbGVzIGFuZCB0aGVuIHBva2UgYXQgdGhlbSBhIGJpdC4KCmBgYHtyIGV4cHRzfQpzYW1wbGVfc2hlZXQgPC0gInNhbXBsZV9zaGVldHMvbGVpc2htYW5pYV9ob3N0X21ldGFzaGVldF8yMDE5MDMyNy54bHN4Igpoc19leHB0IDwtIGNyZWF0ZV9leHB0KHNhbXBsZV9zaGVldCwKICAgICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbHVtbj0iaHNhcGllbnNmaWxlIiwKICAgICAgICAgICAgICAgICAgICAgICBnZW5lX2luZm89bmV3X2hzX2Fubm90LAogICAgICAgICAgICAgICAgICAgICAgIHR4X2dlbmVfbWFwPWhzX3R4X2dlbmUpCgpoc190NGhfZXhwdCA8LSBzdWJzZXRfZXhwdChoc19leHB0LCBzdWJzZXQ9ImV4cHR0aW1lPT0ndDRoJyIpCmhzX3Q0aF9leHB0IDwtIHNldF9leHB0X2NvbmRpdGlvbnMoaHNfdDRoX2V4cHQsIGZhY3Q9ImluZmVjdHN0YXRlIikKaHNfdDRoX2V4cHQgPC0gc2V0X2V4cHRfYmF0Y2hlcyhoc190NGhfZXhwdCwgZmFjdD0ic3R1ZHkiKQp0YWJsZShoc190NGhfZXhwdCRjb25kaXRpb25zKQp0YWJsZShoc190NGhfZXhwdCRiYXRjaGVzKQpgYGAKCiMjIEV4YW1pbmUgdDRoIHZzIHVuaW5mZWN0ZWQKCmBgYHtyIGhzX2V4YW1pbmVfdDRoLCBmaWcuc2hvdz0naGlkZSd9CmhzX3Q0aF9wbG90cyA8LSBzbShncmFwaF9tZXRyaWNzKGhzX3Q0aF9leHB0KSkKCmhzX3Q0aF9ub3JtIDwtIG5vcm1hbGl6ZV9leHB0KGhzX3Q0aF9leHB0LCBub3JtPSJxdWFudCIsIGNvbnZlcnQ9ImNwbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT0ibG9nMiIsIGZpbHRlcj1UUlVFLCBiYXRjaD0ic3Zhc2VxIikKaHNfdDRoX25vcm1fcGxvdHMgPC0gc20oZ3JhcGhfbWV0cmljcyhoc190NGhfbm9ybSkpCmBgYAoKIyMjIFByaW50IHNvbWUgb2YgdGhlIHBsb3RzCgpgYGB7ciBoc19leGFtaW5lX3Bsb3RzfQp0NGhfcGxvdHMkbGVnZW5kCnQ0aF9wbG90cyRsaWJzaXplCnQ0aF9wbG90cyRib3hwbG90Cgp0NGhfbm9ybV9wbG90cyRwY19wbG90CmBgYAoKIyMgUmVtb3ZlIHN0aW11bGF0ZWQgc2FtcGxlcwoKYGBge3IgaHNfdDRoX25vdW5zdGltfQp0NGhfaW5mIDwtIHN1YnNldF9leHB0KGhzX3Q0aF9leHB0LCBzdWJzZXQ9ImNvbmRpdGlvbiE9J3N0aW0nIikKYGBgCgojIFdoaWNoIGdlbmVzIGFyZSBERSBpbiBtb3VzZSBtYWNyb3BoYWdlcyBhdCA0IGhvdXJzIHVwb24gaW5mZWN0aW9uIHdpdGggTC4gbWFqb3I/CgojIEdhdGhlciBhbm5vdGF0aW9uIGRhdGEKCkkgd2FudCB0byBwZXJmb3JtIGEgc2VyaWVzIG9mIGNvbXBhcmlzb25zIGFtb25nIHRoZSBob3N0IGNlbGxzOiBodW1hbiBhbmQgbW91c2UuClRodXMgSSBuZWVkIHRvIGNvbGxlY3QgYW5ub3RhdGlvbiBkYXRhIGZvciBib3RoIHNwZWNpZXMgYW5kIGdldCB0aGUgc2V0IG9mCm9ydGhvbG9ncyBiZXR3ZWVuIHRoZW0uCgojIyBTdGFydCB3aXRoIHRoZSBodW1hbiBhbm5vdGF0aW9uIGRhdGEKCmBgYHtyIG1vdXNlX2Fubm90YXRpb25zfQptbV9hbm5vdCA8LSBsb2FkX2Jpb21hcnRfYW5ub3RhdGlvbnMoc3BlY2llcz0ibW11c2N1bHVzIikkYW5ub3RhdGlvbgpyb3duYW1lcyhtbV9hbm5vdCkgPC0gbWFrZS5uYW1lcygKICBwYXN0ZTAobW1fYW5ub3RbWyJlbnNlbWJsX3RyYW5zY3JpcHRfaWQiXV0sICIuIiwKICAgICAgICAgbW1fYW5ub3RbWyJ0cmFuc2NyaXB0X3ZlcnNpb24iXV0pLAogIHVuaXF1ZT1UUlVFKQptbV90eF9nZW5lIDwtIG1tX2Fubm90WywgYygiZW5zZW1ibF9nZW5lX2lkIiwgImVuc2VtYmxfdHJhbnNjcmlwdF9pZCIpXQptbV90eF9nZW5lW1siaWQiXV0gPC0gcm93bmFtZXMobW1fdHhfZ2VuZSkKbW1fdHhfZ2VuZSA8LSBtbV90eF9nZW5lWywgYygiaWQiLCAiZW5zZW1ibF9nZW5lX2lkIildCm5ld19tbV9hbm5vdCA8LSBtbV9hbm5vdApyb3duYW1lcyhuZXdfbW1fYW5ub3QpIDwtIG1ha2UubmFtZXMobW1fYW5ub3RbWyJlbnNlbWJsX2dlbmVfaWQiXV0sIHVuaXF1ZT1UUlVFKQpgYGAKCiMjIEdlbmVyYXRlIGV4cHJlc3Npb25zZXRzCgpUaGUgcXVlc3Rpb24gaXMgcmVhc29uYWJseSBzZWxmLWNvbnRhaW5lZC4gIEkgd2FudCB0byBjb21wYXJlIHRoZSB1bmluZmVjdGVkCmh1bWFuIHNhbXBsZXMgYWdhaW5zdCBhbnkgc2FtcGxlcyB3aGljaCB3ZXJlIGluZmVjdGVkIGZvciA0IGhvdXJzLgpTbyBsZXQgdXMgZmlyc3QgcHVsbCB0aG9zZSBzYW1wbGVzIGFuZCB0aGVuIHBva2UgYXQgdGhlbSBhIGJpdC4KCmBgYHtyIG1vdXNlX2V4cHRzfQptbV9leHB0IDwtIGNyZWF0ZV9leHB0KHNhbXBsZV9zaGVldCwKICAgICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbHVtbj0ibW11c2N1bHVzZmlsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgZ2VuZV9pbmZvPW5ld19tbV9hbm5vdCwKICAgICAgICAgICAgICAgICAgICAgICB0eF9nZW5lX21hcD1tbV90eF9nZW5lKQptbV90NGhfZXhwdCA8LSBzdWJzZXRfZXhwdChtbV9leHB0LCBzdWJzZXQ9ImV4cHR0aW1lPT0ndDRoJyIpCm1tX3Q0aF9leHB0IDwtIHNldF9leHB0X2NvbmRpdGlvbnMobW1fdDRoX2V4cHQsIGZhY3Q9ImluZmVjdHN0YXRlIikKdGFibGUobW1fdDRoX2V4cHQkY29uZGl0aW9ucykKdGFibGUobW1fdDRoX2V4cHQkYmF0Y2hlcykKYGBgCgojIyBFeGFtaW5lIHQ0aCB2cyB1bmluZmVjdGVkCgpgYGB7ciBleGFtaW5lX3Q0aCwgZmlnLnNob3c9J2hpZGUnfQptbV90NGhfcGxvdHMgPC0gc20oZ3JhcGhfbWV0cmljcyhtbV90NGhfZXhwdCkpCm1tX3Q0aF9ub3JtIDwtIG5vcm1hbGl6ZV9leHB0KG1tX3Q0aF9leHB0LCBub3JtPSJxdWFudCIsIGNvbnZlcnQ9ImNwbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT0ibG9nMiIsIGZpbHRlcj1UUlVFLCBiYXRjaD0ic3Zhc2VxIikKbW1fdDRoX25vcm1fcGxvdHMgPC0gc20oZ3JhcGhfbWV0cmljcyhtbV90NGhfbm9ybSkpCmBgYAoKIyMjIFByaW50IHNvbWUgb2YgdGhlIHBsb3RzCgpgYGB7ciBleGFtaW5lX3Bsb3RzfQptbV90NGhfcGxvdHMkbGVnZW5kCm1tX3Q0aF9wbG90cyRsaWJzaXplCm1tX3Q0aF9wbG90cyRib3hwbG90CgptbV90NGhfbm9ybV9wbG90cyRwY19wbG90CmBgYAoKCgoKYGBge3Igc2F2ZW1lfQpwYW5kZXI6OnBhbmRlcihzZXNzaW9uSW5mbygpKQptZXNzYWdlKCJUaGlzIGlzIGhwZ2x0b29scyBjb21taXQ6ICIsIGdldF9naXRfY29tbWl0KCkpCiMjIG1lc3NhZ2UocGFzdGUwKCJTYXZpbmcgdG8gIiwgc2F2ZWZpbGUpKQojIyB0bXAgPC0gc20oc2F2ZW1lKGZpbGVuYW1lPXNhdmVmaWxlKSkKYGBgCg==