Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@lcolladotor
Created June 20, 2018 21:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lcolladotor/657aaae9d16aff3ce468f44f8780a317 to your computer and use it in GitHub Desktop.
Save lcolladotor/657aaae9d16aff3ce468f44f8780a317 to your computer and use it in GitHub Desktop.
L. Collado-Torres scilifelab 2017 entry
@article{collado-torres-recount2,
title = {Reproducible {RNA}-seq analysis using recount2},
volume = {35},
issn = {1087-0156},
doi = {10.1038/nbt.3838},
language = {en},
number = {4},
journal = {Nature Biotechnology},
author = {Collado-Torres, Leonardo and Nellore, Abhinav and Kammers, Kai and Ellis, Shannon E. and Taub, Margaret A. and Hansen, Kasper D. and Jaffe, Andrew E. and Langmead, Ben and Leek, Jeffrey T.},
month = apr,
year = {2017},
pages = {319--321},
}
@article{collado-torres-derfinder,
title = {Flexible expressed region analysis for {RNA}-seq with derfinder},
volume = {45},
issn = {0305-1048},
doi = {10.1093/nar/gkw852},
number = {2},
urldate = {2017-04-13},
journal = {Nucleic Acids Research},
author = {Collado-Torres, Leonardo and Nellore, Abhinav and Frazee, Alyssa C. and Wilks, Christopher and Love, Michael I. and Langmead, Ben and Irizarry, Rafael A. and Leek, Jeffrey T. and Jaffe, Andrew E.},
month = jan,
year = {2017},
pages = {e9--e9},
}
@article{rail-rna,
title = {Rail-{RNA}: scalable analysis of {RNA}-seq splicing and coverage},
issn = {1367-4811},
shorttitle = {Rail-{RNA}},
doi = {10.1093/bioinformatics/btw575},
language = {eng},
journal = {Bioinformatics (Oxford, England)},
author = {Nellore, Abhinav and Collado-Torres, Leonardo and Jaffe, Andrew E. and Alquicira-Hernández, José and Wilks, Christopher and Pritt, Jacob and Morton, James and Leek, Jeffrey T. and Langmead, Ben},
month = sep,
year = {2016},
pmid = {27592709}
}
@article{frazee2011,
title = {{ReCount}: a multi-experiment resource of analysis-ready {RNA}-seq gene count datasets},
volume = {12},
issn = {1471-2105},
shorttitle = {{ReCount}},
doi = {10.1186/1471-2105-12-449},
journal = {BMC bioinformatics},
author = {Frazee, Alyssa C. and Langmead, Ben and Leek, Jeffrey T.},
year = {2011},
pages = {449}
}
@article{Law2016a,
author = {Law, Charity W and Alhamdoosh, Monther and Su, Shian and Smyth, Gordon K and Ritchie, Matthew E},
doi = {10.12688/f1000research.9005.2},
isbn = {2046-1402 (Electronic)$\backslash$r2046-1402 (Linking)},
issn = {2046-1402},
journal = {F1000Research},
number = {May},
pages = {1408},
pmid = {27441086},
title = {{RNA-seq analysis is easy as 1-2-3 with limma, Glimma and edgeR.}},
volume = {5},
year = {2016}
}
@article{Love2016,
author = {Love, Michael I. and Anders, Simon and Kim, Vladislav and Huber, Wolfgang},
doi = {10.12688/f1000research.7035.2},
eprint = {NIHMS150003},
isbn = {2046-1402 (Electronic)$\backslash$r2046-1402 (Linking)},
issn = {2046-1402},
journal = {F1000Research},
number = {May},
pages = {1070},
pmid = {26674615},
title = {{RNA-Seq workflow: gene-level exploratory analysis and differential expression}},
volume = {4},
year = {2016}
}
@article{jaffe2015,
title = {Developmental regulation of human cortex transcription and its clinical relevance at single base resolution},
volume = {18},
issn = {1546-1726},
doi = {10.1038/nn.3898},
number = {1},
journal = {Nature Neuroscience},
author = {Jaffe, Andrew E. and Shin, Jooheon and Collado-Torres, Leonardo and Leek, Jeffrey T. and Tao, Ran and Li, Chao and Gao, Yuan and Jia, Yankai and Maher, Brady J. and Hyde, Thomas M. and Kleinman, Joel E. and Weinberger, Daniel R.},
month = jan,
year = {2015},
pages = {154--161}
}
@article {ellis2017,
author = {Ellis, Shannon E and Collado-Torres, Leonardo and Leek, Jeffrey},
title = {Improving the value of public RNA-seq expression data by phenotype prediction},
year = {2017},
doi = {10.1101/145656},
publisher = {Cold Spring Harbor Labs Journals},
journal = {bioRxiv}
}
@article{collado2016regionreport,
title = {{regionReport}: Interactive reports for region-level and feature-level genomic analyses [version2; referees: 2 approved, 1 approved with reservations]},
doi = {10.12688/f1000research.6379.2},
journal = {F1000Research},
author = {Collado-Torres, Leonardo and Jaffe, Andrew E. and Leek, Jeffrey T.},
month = jun,
year = {2016},
volume = {4},
pages = {1--10}
}
@article{jaffe2017,
author = {Andrew E. Jaffe and Richard Straub and Joo Heon Shin and Ran Tao and Yuan Gao and Leonardo Collado-Torres and Tony Kam-Thong and Hualin S Xi and Jie Quan and Qiang Chen and Carlo Colantuoni and Bill Ulrich and Brady J. Maher and Amy Depp-Soboslay and The BrainSeq Consortium and Alan Cross and Nicholas J. Brandon and Jeffrey T. Leek and Thomas M. Hyde and Joel E. Kleinman and Daniel R. Weinberger},
journal = {bioRxiv},
title = {{Developmental and genetic regulation of the human cortex transcriptome in schizophrenia}},
year = {2017}
}
@article{huber2015,
title={Orchestrating high-throughput genomic analysis with Bioconductor},
author={Huber, Wolfgang and Carey, Vincent J and Gentleman, Robert and Anders, Simon and Carlson, Marc and Carvalho, Benilton S and Bravo, Hector Corrada and Davis, Sean and Gatto, Laurent and Girke, Thomas and others},
journal={Nature methods},
volume={12},
number={2},
pages={115--121},
year={2015},
publisher={Nature Publishing Group},
doi = {10.1038/nmeth.3252}
}
@article{love2014,
title={Moderated estimation of fold change and dispersion for RNA-seq data with DESeq2},
author={Love, Michael I and Huber, Wolfgang and Anders, Simon},
journal={Genome biology},
volume={15},
number={12},
pages={1--21},
year={2014},
publisher={Springer}
}
@article{nellore2016human,
title = {Human splicing diversity and the extent of unannotated splice junctions across human {RNA}-seq samples on the {Sequence} {Read} {Archive}},
volume = {17},
issn = {1474-760X},
number = {1},
journal = {Genome Biology},
author = {Nellore, Abhinav and Jaffe, Andrew E. and Fortin, Jean-Philippe and Alquicira-Hernández, José and Collado-Torres, Leonardo and Wang, Siruo and Phillips Iii, Robert A. and Karbhari, Nishika and Hansen, Kasper D. and Langmead, Ben and Leek, Jeffrey T.},
month = dec,
year = {2016},
pages = {266}
}
@Article{rsubread,
title = {The Subread aligner: fast, accurate and scalable read mapping by seed-and-vote},
author = {Liao Y and Smyth GK and Shi W},
journal = {Nucleic Acids Research},
year = {2013},
volume = {41},
issue = {10},
pages = {e108},
}
@article{kim2013,
title = {{TopHat2:} accurate alignment of transcriptomes in the presence of insertions, deletions and gene fusions},
volume = {14},
issn = {1465-6914},
shorttitle = {{TopHat2}},
doi = {10.1186/gb-2013-14-4-r36},
language = {{ENG}},
number = {4},
journal = {Genome biology},
author = {Kim, Daehwan and Pertea, Geo and Trapnell, Cole and Pimentel, Harold and Kelley, Ryan and Salzberg, Steven L},
month = apr,
year = {2013},
pages = {R36}
}
@article{kim2015,
title = {{HISAT}: a fast spliced aligner with low memory requirements},
volume = {12},
issn = {1548-7105},
doi = {10.1038/nmeth.3317},
number = {4},
journal = {Nature Methods},
author = {Kim, Daehwan and Langmead, Ben and Salzberg, Steven L.},
month = apr,
year = {2015},
pages = {357--360}
}
@article{anders2014htseq,
title={HTSeq--A Python framework to work with high-throughput sequencing data},
author={Anders, Simon and Pyl, Paul Theodor and Huber, Wolfgang},
journal={bioRxiv},
year={2014},
publisher={Cold Spring Harbor Labs Journals}
}
@article{anders2010,
title = {Differential expression analysis for sequence count data},
volume = {11},
issn = {1465-6914},
doi = {10.1186/gb-2010-11-10-r106},
language = {eng},
number = {10},
journal = {Genome biology},
author = {Anders, Simon and Huber, Wolfgang},
year = {2010},
pages = {R106}
}
@article{robinson2010,
title = {{edgeR:} a Bioconductor package for differential expression analysis of digital gene expression data},
volume = {26},
issn = {1367-4811},
shorttitle = {{edgeR}},
doi = {10.1093/bioinformatics/btp616},
language = {eng},
number = {1},
journal = {Bioinformatics (Oxford, England)},
author = {Robinson, Mark D and {McCarthy}, Davis J and Smyth, Gordon K},
month = jan,
year = {2010},
pages = {139--140}
}
@article{frazee2014,
title = {Differential expression analysis of {RNA-seq} data at single-base resolution},
issn = {1468-4357},
doi = {10.1093/biostatistics/kxt053},
language = {{ENG}},
journal = {Biostatistics (Oxford, England)},
author = {Frazee, Alyssa C and Sabunciyan, Sarven and Hansen, Kasper D and Irizarry, Rafael A and Leek, Jeffrey T},
month = jan,
year = {2014}
}
@article{wilks2017,
author = {Wilks, Christopher and Gaddipati, Phani and Nellore, Abhinav and Langmead, Benjamin},
doi = {10.1101/097881},
journal = {bioRxiv},
title = {{Snaptron: querying and visualizing splicing across tens of thousands of RNA-seq samples}},
year = {2017}
}
---
output:
pdf_document
title: "Usable human gene expression data and annotation-agnostic methods"
author: Leonardo Collado-Torres
date: "`r format(Sys.time(), '%B %d, %Y')`"
geometry: margin=1in
fontfamily: mathpazo
fontsize: 11pt
bibliography: essay.bib
biblio-style: Science.bst
---
In the last decade RNA sequencing (RNA-seq) has become the predominant assay for measuring gene expression. RNA-seq allows us to measure all expressed genes, improve gene and transcript annotation, and measure expressed sequences that otherwise are excluded in microarray studies. Typical RNA-seq analysis starts with a matrix containing the number of RNA-seq reads overlapping each gene for each sample [@Love2016; @Law2016a]. To compute such a matrix, you first map the raw data to the genome with aligners such as _TopHat2_ and _HISAT_ [@kim2013; @kim2015] and then use tools such as _Rsubread_ and _HTSeq_ [@rsubread; @anders2014htseq] to construct the read count matrix. After measuring enough samples, you can determine which genes are differentially expressed between two or more groups.
When I started my graduate studies with Jeff Leek, the most commonly used methods for differential expression analysis were _DESeq_ [@anders2010] and _edgeR_ [@robinson2010]. Leek and colleagues put together a set of gene count matrices in a project called _ReCount_ [@frazee2011]. _ReCount_ allowed researchers to access several datasets without having to run the whole processing pipeline. _ReCount_ then helped the development of new methods such as _DESeq2_ [@love2014]. It was also Leek and colleagues that decided to look at RNA-seq data in a manner less dependent on potentially incomplete gene annotation. With the increase in size of RNA-seq projects, they thought it would be feasible to assess the differential expression signal at base pair resolution in an approach called differentially expressed regions (DER) finder [@frazee2014].
It was around then that I started to work with Andrew Jaffe, who had RNA-seq data from the human brain. Jaffe and colleagues hypothesized that the gene annotation for the human brain might be incomplete and were interested in applying the DER finder approach to their data. With them, I modified the DER finder approach to make it computationally feasible to analyze these human brain samples at base resolution [@jaffe2015]. We indeed found that the human brain transcriptome was not fully annotated and identified intronic DERs that were present in other brain datasets, including from mouse, and showed these regions were enriched for genetic risk for brain disorders. Further computational improvements to the DER finder approach yielded the _derfinder_ [@collado-torres-derfinder] Bioconductor [@huber2015] package, reducing computing time from days to hours.
While I was working on _derfinder_, Abhinav Nellore was developing _Rail-RNA_ [@rail-rna] with the goal of aligning large RNA-seq datasets. We determined that we only needed coverage data instead of alignments to use _derfinder_ and to perform gene level analyses. Coverage data files are much smaller than alignment files, which meant that we could greatly reduce our storage costs when using _Rail-RNA_ and allowed us to think as big as possible. Initially we looked at 21,504 human RNA-seq samples and explored the landscape of exon-exon junctions [@nellore2016human]. The reads spanning exon-exon junctions provided by _Rail-RNA_ can be used for a second type of annotation-agnostic analysis as these reads provide information about exon skipping, alternative donor/acceptor sites and novel events. With a fairly conservative filter we determined that 18.6\% of exon-exon junctions were missing in the annotation [@nellore2016human]. This observation along with the fact that exon-exon junctions can be used to determine differential transcript usage gave strength to this second annotation-agnostic RNA-seq analysis method.
Researchers around the world have shared their raw data via the Sequence Read Archive or via large consortiums such as the Genotype-Tissue Expression study (GTEx) and the Cancer Genome Atlas (TCGA). However, it still is complicated to align and compute count matrices for these datasets. We thought that if the public data was uniformly processed that we could make this large body of human expression data more reusable. We were well positioned to carry out this project and just needed resources. Luckily, Jeff Leek, Ben Langmead and others got together and funded the implementation of _Rail-RNA_ to analyze all the human public RNA-seq data available at the time, over 70,000 samples.
```{r figure1, out.width="100%", fig.align="center", fig.cap = "Overview of the data available in recount2. Reads aligned to the reference genome can be used to compute a base pair coverage curve, identify exon-exon junctions and compute gene and exon count matrices. The reads spanning exon-exon junctions (jx) are used to compute a third count matrix that includes un-annotated junctions (jx 3 and 4). Annotation-agnostic expressed regions can be determined from the coverage data.", echo = FALSE}
knitr::include_graphics("figure1.png")
```
We computed gene count matrices for these 70,000 samples and made them available as the _recount2_ resource that can be accessed at [jhubiostatistics.shinyapps.io/recount/](https://jhubiostatistics.shinyapps.io/recount/) as well as through the _recount_ [@collado-torres-recount2] Bioconductor package, thus representing a major improvement over _ReCount_. To take advantage of the data as much as possible, we also released exon and exon-exon junction count matrices as well as the coverage data files required for the DER finder approach, thus enabling both annotation-agnostic methods we developed that complement traditional methods. Figure \ref{fig:figure1} illustrates the type of information that is available via _recount2_.
My colleagues and I believe that _recount2_ will fuel the development of new analytical methods and greatly increase the usability of the public human gene expression data researchers have collected over the years. In the meantime, we are working hard on improving the data in _recount2_ [@ellis2017; @wilks2017] and exploring how to leverage results from different RNA-seq analytical approaches [@jaffe2017].
\newpage
# Ph.D. thesis abstract
Leonardo Collado-Torres' thesis work is centered around the development of R software packages for analyzing RNA sequencing (RNA-seq) and ChIP sequencing (ChIP-seq) high throughput genomic data. The first chapter describes the _derfinder_ Bioconductor package which implements the DER Finder approach for identifying differentially expressed regions with RNA-seq data in an annotation-agnostic manner. The second chapter shows how _derfinder_ can be applied to ChIP-seq data to identify differentially bounded regions. The third chapter describes the _regionReport_ Bioconductor package for producing HTML or PDF reports from region-based genomic analyses, such as the _derfinder_ analyses described in the previous chapters. The last thesis project Leonardo Collado-Torres carried out was the development of the _recount2_ resource and accompanying _recount_ Bioconductor package using the _Rail-RNA_ results from processing all the public human RNA-seq data at the time, which spans over 70,000 samples.
\newpage
# Affiliation
Lieber Institute for Brain Development, Johns Hopkins Medical Campus, Baltimore, Maryland, 21205, USA.
# Education
* 2011-2016. Ph.D. in Biostatistics at Johns Hopkins Bloomberg School of Public Health, Baltimore, US. Advised by Jeff Leek and Andrew Jaffe.
* 2005-2009. Bachelor in Genomic Sciences (LCG) at the National Autonomous University of Mexico (UNAM), Cuernavaca, MX.
* 2002-2005. High school at ITESM Campus Cuernavaca, Cuernavaca, MX.
# Academic and professional awards
* 2011: Awarded CONACyT Mexico scholarship for PhD studies outside Mexico.
* 2009: _Summa Cum Laude_ for bachelor in Genomic Sciences studies at LCG-UNAM.
* 2005: Best high school average ($\sim$ 200 students): awarded ITESM system 90\% scholarship for college studies, declined to join LCG-UNAM.
# Professional experience
* 2016-current. Data Scientist with Andrew Jaffe lab at LIBD, Baltimore. At LIBD, Dr. Collado-Torres is part of the Data Science team which goals include better understanding and characterizing genomics signatures in the human brain, including DNA methylation and gene expression. Leonardo helps mentor other team members, provides support for LIBD projects and is advancing his academic career as part of Andrew Jaffe's lab.
* 2009-2011. Bioinformatician with Enrique Morett lab at IBT-UNAM, Cuernavaca, MX. Identified transcriptions start sites and transcription units in _Escherichia coli_ and _Geobacter sulfurreducens_ with RNA-seq data. Developed the _BacterialTranscription_ R package.
* 2009-2011. Scientific executive at Winter Genomics in Cuernavaca, MX. Responsible for recruiting and hiring new personnel, overseeing and supervising bioinformaticians, training new employees, writing research reports and presenting them to colleagues, and organizing all scientific projects.
* 2007-2009. Undergraduate research assistant at Guillermo Davila's lab at CCG-UNAM, Cuernavaca, MX. Determined bacteriophage ecological groups by developing a method based on codon distribution of all phage sequenced genomes. Joint work with Sur Herrera Paredes.
* 2006-2007. Undergraduate research assistant at Roberto Kolter's lab at Harvard, Boston, US. Supervisor: Elizabeth Shank. Carried out screenings to identify bacteria that activate the production of exopolysaccharide through the activation of the gene tasA in _Bacillus subtilis_.
# References
%%
%% This is file `Science.bst',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% merlin.mbs (with options: `head,,seq-no,nm-init,ed-au,nmlm,x5,m1,yr-par,xmth,jtit-x,thtit-a,trnum-it,vol-bf,vnum-x,volp-com,jpg-1,numser,jnm-x,pub-date,pre-pub,edby,edbyy,blk-com,blknt,in-x,pp,ed,abr,jabr,xand,etal-it,em-it,{}')
%% physjour.mbs (with options: `,seq-no,nm-init,ed-au,nmlm,x5,m1,yr-par,xmth,jtit-x,thtit-a,trnum-it,vol-bf,vnum-x,volp-com,jpg-1,numser,jnm-x,pub-date,pre-pub,edby,edbyy,blk-com,blknt,in-x,pp,ed,abr,jabr,xand,etal-it,em-it,{}')
%% merlin.mbs (with options: `tail,,seq-no,nm-init,ed-au,nmlm,x5,m1,yr-par,xmth,jtit-x,thtit-a,trnum-it,vol-bf,vnum-x,volp-com,jpg-1,numser,jnm-x,pub-date,pre-pub,edby,edbyy,blk-com,blknt,in-x,pp,ed,abr,jabr,xand,etal-it,em-it,{}')
%% ----------------------------------------
%% *** Applicable to Science Journal references ***
%%
%% Copyright 1994-1999 Patrick W Daly
% ===============================================================
% IMPORTANT NOTICE:
% This bibliographic style (bst) file has been generated from one or
% more master bibliographic style (mbs) files, listed above.
%
% This generated file can be redistributed and/or modified under the terms
% of the LaTeX Project Public License Distributed from CTAN
% archives in directory macros/latex/base/lppl.txt; either
% version 1 of the License, or any later version.
% ===============================================================
% Name and version information of the main mbs file:
% \ProvidesFile{merlin.mbs}[1999/05/28 3.89 (PWD)]
% For use with BibTeX version 0.99a or later
%-------------------------------------------------------------------
% This bibliography style file is intended for texts in ENGLISH
% This is a numerical citation style, and as such is standard LaTeX.
% It requires no extra package to interface to the main text.
% The form of the \bibitem entries is
% \bibitem{key}...
% Usage of \cite is as follows:
% \cite{key} ==>> [#]
% \cite[chap. 2]{key} ==>> [#, chap. 2]
% where # is a number determined by the ordering in the reference list.
% The order in the reference list is that by which the works were originally
% cited in the text, or that in the database.
%---------------------------------------------------------------------
ENTRY
{ address
author
booktitle
chapter
edition
editor
howpublished
institution
journal
key
month
note
number
organization
pages
publisher
school
series
title
type
volume
year
}
{}
{ label }
INTEGERS { output.state before.all mid.sentence after.sentence after.block }
FUNCTION {init.state.consts}
{ #0 'before.all :=
#1 'mid.sentence :=
#2 'after.sentence :=
#3 'after.block :=
}
STRINGS { s t }
FUNCTION {output.nonnull}
{ 's :=
output.state mid.sentence =
{ ", " * write$ }
{ output.state after.block =
{ add.period$ write$
newline$
"\newblock " write$
}
{ output.state before.all =
'write$
{ add.period$ " " * write$ }
if$
}
if$
mid.sentence 'output.state :=
}
if$
s
}
FUNCTION {output}
{ duplicate$ empty$
'pop$
'output.nonnull
if$
}
FUNCTION {output.check}
{ 't :=
duplicate$ empty$
{ pop$ "empty " t * " in " * cite$ * warning$ }
'output.nonnull
if$
}
FUNCTION {fin.entry}
{ add.period$
write$
newline$
}
FUNCTION {new.block}
{ output.state before.all =
'skip$
{ after.block 'output.state := }
if$
}
FUNCTION {new.sentence}
{ output.state after.block =
'skip$
{ output.state before.all =
'skip$
{ after.sentence 'output.state := }
if$
}
if$
}
FUNCTION {add.blank}
{ " " * before.all 'output.state :=
}
FUNCTION {date.block}
{
skip$
}
FUNCTION {not}
{ { #0 }
{ #1 }
if$
}
FUNCTION {and}
{ 'skip$
{ pop$ #0 }
if$
}
FUNCTION {or}
{ { pop$ #1 }
'skip$
if$
}
FUNCTION {new.block.checka}
{ empty$
'skip$
'new.block
if$
}
FUNCTION {new.block.checkb}
{ empty$
swap$ empty$
and
'skip$
'new.block
if$
}
FUNCTION {new.sentence.checka}
{ empty$
'skip$
'new.sentence
if$
}
FUNCTION {new.sentence.checkb}
{ empty$
swap$ empty$
and
'skip$
'new.sentence
if$
}
FUNCTION {field.or.null}
{ duplicate$ empty$
{ pop$ "" }
'skip$
if$
}
FUNCTION {emphasize}
{ duplicate$ empty$
{ pop$ "" }
{ "{\it " swap$ * "\/}" * }
if$
}
FUNCTION {bolden}
{ duplicate$ empty$
{ pop$ "" }
{ "{\bf " swap$ * "}" * }
if$
}
FUNCTION {capitalize}
{ "u" change.case$ "t" change.case$ }
FUNCTION {space.word}
{ " " swap$ * " " * }
% Here are the language-specific definitions for explicit words.
% Each function has a name bbl.xxx where xxx is the English word.
% The language selected here is ENGLISH
FUNCTION {bbl.and}
{ "and"}
FUNCTION {bbl.etal}
{ "et~al." }
FUNCTION {bbl.editors}
{ "eds." }
FUNCTION {bbl.editor}
{ "ed." }
FUNCTION {bbl.edby}
{ "edited by" }
FUNCTION {bbl.edition}
{ "edn." }
FUNCTION {bbl.volume}
{ "vol." }
FUNCTION {bbl.of}
{ "of" }
FUNCTION {bbl.number}
{ "no." }
FUNCTION {bbl.nr}
{ "no." }
FUNCTION {bbl.in}
{ "in" }
FUNCTION {bbl.pages}
{ "pp." }
FUNCTION {bbl.page}
{ "p." }
FUNCTION {bbl.chapter}
{ "chap." }
FUNCTION {bbl.techrep}
{ "Tech. Rep." }
FUNCTION {bbl.mthesis}
{ "Master's thesis" }
FUNCTION {bbl.phdthesis}
{ "Ph.D. thesis" }
FUNCTION {bbl.first}
{ "First" }
FUNCTION {bbl.second}
{ "Second" }
FUNCTION {bbl.third}
{ "Third" }
FUNCTION {bbl.fourth}
{ "Fourth" }
FUNCTION {bbl.fifth}
{ "Fifth" }
FUNCTION {bbl.st}
{ "st" }
FUNCTION {bbl.nd}
{ "nd" }
FUNCTION {bbl.rd}
{ "rd" }
FUNCTION {bbl.th}
{ "th" }
MACRO {jan} {"Jan."}
MACRO {feb} {"Feb."}
MACRO {mar} {"Mar."}
MACRO {apr} {"Apr."}
MACRO {may} {"May"}
MACRO {jun} {"Jun."}
MACRO {jul} {"Jul."}
MACRO {aug} {"Aug."}
MACRO {sep} {"Sep."}
MACRO {oct} {"Oct."}
MACRO {nov} {"Nov."}
MACRO {dec} {"Dec."}
FUNCTION {eng.ord}
{ duplicate$ "1" swap$ *
#-2 #1 substring$ "1" =
{ bbl.th * }
{ duplicate$ #-1 #1 substring$
duplicate$ "1" =
{ pop$ bbl.st * }
{ duplicate$ "2" =
{ pop$ bbl.nd * }
{ "3" =
{ bbl.rd * }
{ bbl.th * }
if$
}
if$
}
if$
}
if$
}
%-------------------------------------------------------------------
% Begin module:
% \ProvidesFile{physjour.mbs}[1999/02/24 2.0d (PWD)]
MACRO {aa}{"Astron. \& Astrophys."}
MACRO {aasup}{"Astron. \& Astrophys. Suppl. Ser."}
MACRO {aph} {"Acta Phys."}
MACRO {advp} {"Adv. Phys."}
MACRO {ajp} {"Amer. J. Phys."}
MACRO {ajm} {"Amer. J. Math."}
MACRO {amsci} {"Amer. Sci."}
MACRO {anofd} {"Ann. Fluid Dyn."}
MACRO {am} {"Ann. Math."}
MACRO {ap} {"Ann. Phys. (NY)"}
MACRO {adp} {"Ann. Phys. (Leipzig)"}
MACRO {ao} {"Appl. Opt."}
MACRO {apl} {"Appl. Phys. Lett."}
MACRO {app} {"Astroparticle Phys."}
MACRO {apj} {"Astrophys. J."}
MACRO {apjsup} {"Astrophys. J. Suppl. Ser."}
MACRO {baps} {"Bull. Amer. Phys. Soc."}
MACRO {cmp} {"Comm. Math. Phys."}
MACRO {cpam} {"Commun. Pure Appl. Math."}
MACRO {cppcf} {"Comm. Plasma Phys. \& Controlled Fusion"}
MACRO {cpc} {"Comp. Phys. Comm."}
MACRO {cqg} {"Class. Quant. Grav."}
MACRO {cra} {"C. R. Acad. Sci. A"}
MACRO {fed} {"Fusion Eng. \& Design"}
MACRO {ft} {"Fusion Tech."}
MACRO {grg} {"Gen. Relativ. Gravit."}
MACRO {ieeens} {"IEEE Trans. Nucl. Sci."}
MACRO {ieeeps} {"IEEE Trans. Plasma Sci."}
MACRO {ijimw} {"Interntl. J. Infrared \& Millimeter Waves"}
MACRO {ip} {"Infrared Phys."}
MACRO {irp} {"Infrared Phys."}
MACRO {jap} {"J. Appl. Phys."}
MACRO {jasa} {"J. Acoust. Soc. America"}
MACRO {jcp} {"J. Comp. Phys."}
MACRO {jetp} {"Sov. Phys.--JETP"}
MACRO {jfe} {"J. Fusion Energy"}
MACRO {jfm} {"J. Fluid Mech."}
MACRO {jmp} {"J. Math. Phys."}
MACRO {jne} {"J. Nucl. Energy"}
MACRO {jnec} {"J. Nucl. Energy, C: Plasma Phys., Accelerators, Thermonucl. Res."}
MACRO {jnm} {"J. Nucl. Mat."}
MACRO {jpc} {"J. Phys. Chem."}
MACRO {jpp} {"J. Plasma Phys."}
MACRO {jpsj} {"J. Phys. Soc. Japan"}
MACRO {jsi} {"J. Sci. Instrum."}
MACRO {jvst} {"J. Vac. Sci. \& Tech."}
MACRO {nat} {"Nature"}
MACRO {nature} {"Nature"}
MACRO {nedf} {"Nucl. Eng. \& Design/Fusion"}
MACRO {nf} {"Nucl. Fusion"}
MACRO {nim} {"Nucl. Inst. \& Meth."}
MACRO {nimpr} {"Nucl. Inst. \& Meth. in Phys. Res."}
MACRO {np} {"Nucl. Phys."}
MACRO {npb} {"Nucl. Phys. B"}
MACRO {nt/f} {"Nucl. Tech./Fusion"}
MACRO {npbpc} {"Nucl. Phys. B (Proc. Suppl.)"}
MACRO {inc} {"Nuovo Cimento"}
MACRO {nc} {"Nuovo Cimento"}
MACRO {pf} {"Phys. Fluids"}
MACRO {pfa} {"Phys. Fluids A: Fluid Dyn."}
MACRO {pfb} {"Phys. Fluids B: Plasma Phys."}
MACRO {pl} {"Phys. Lett."}
MACRO {pla} {"Phys. Lett. A"}
MACRO {plb} {"Phys. Lett. B"}
MACRO {prep} {"Phys. Rep."}
MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"}
MACRO {pp} {"Phys. Plasmas"}
MACRO {ppcf} {"Plasma Phys. \& Controlled Fusion"}
MACRO {phitrsl} {"Philos. Trans. Roy. Soc. London"}
MACRO {prl} {"Phys. Rev. Lett."}
MACRO {pr} {"Phys. Rev."}
MACRO {physrev} {"Phys. Rev."}
MACRO {pra} {"Phys. Rev. A"}
MACRO {prb} {"Phys. Rev. B"}
MACRO {prc} {"Phys. Rev. C"}
MACRO {prd} {"Phys. Rev. D"}
MACRO {pre} {"Phys. Rev. E"}
MACRO {ps} {"Phys. Scripta"}
MACRO {procrsl} {"Proc. Roy. Soc. London"}
MACRO {rmp} {"Rev. Mod. Phys."}
MACRO {rsi} {"Rev. Sci. Inst."}
MACRO {science} {"Science"}
MACRO {sciam} {"Sci. Am."}
MACRO {sam} {"Stud. Appl. Math."}
MACRO {sjpp} {"Sov. J. Plasma Phys."}
MACRO {spd} {"Sov. Phys.--Doklady"}
MACRO {sptp} {"Sov. Phys.--Tech. Phys."}
MACRO {spu} {"Sov. Phys.--Uspeki"}
% End module: physjour.mbs
%% Copyright 1994-1999 Patrick W Daly
MACRO {acmcs} {"ACM Comput. Surv."}
MACRO {acta} {"Acta Inf."}
MACRO {cacm} {"Commun. ACM"}
MACRO {ibmjrd} {"IBM J. Res. Dev."}
MACRO {ibmsj} {"IBM Syst.~J."}
MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
MACRO {ieeetc} {"IEEE Trans. Comput."}
MACRO {ieeetcad}
{"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
MACRO {ipl} {"Inf. Process. Lett."}
MACRO {jacm} {"J.~ACM"}
MACRO {jcss} {"J.~Comput. Syst. Sci."}
MACRO {scp} {"Sci. Comput. Programming"}
MACRO {sicomp} {"SIAM J. Comput."}
MACRO {tocs} {"ACM Trans. Comput. Syst."}
MACRO {tods} {"ACM Trans. Database Syst."}
MACRO {tog} {"ACM Trans. Gr."}
MACRO {toms} {"ACM Trans. Math. Softw."}
MACRO {toois} {"ACM Trans. Office Inf. Syst."}
MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
MACRO {tcs} {"Theoretical Comput. Sci."}
INTEGERS { nameptr namesleft numnames }
FUNCTION {format.names}
{ 's :=
"" 't :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr
"{f.~}{vv~}{ll}{, jj}" format.name$
't :=
nameptr #1 >
{
nameptr #1
#1 + =
numnames #5
> and
{ "others" 't :=
#1 'namesleft := }
'skip$
if$
namesleft #1 >
{ ", " * t * }
{
"," *
s nameptr "{ll}" format.name$ duplicate$ "others" =
{ 't := }
{ pop$ }
if$
t "others" =
{
" " * bbl.etal emphasize *
}
{ " " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {format.names.ed}
{ format.names }
FUNCTION {format.authors}
{ author empty$
{ "" }
{ author format.names }
if$
}
FUNCTION {format.editors}
{ editor empty$
{ "" }
{ editor format.names
", " *
editor num.names$ #1 >
'bbl.editors
'bbl.editor
if$
*
}
if$
}
FUNCTION {format.in.editors}
{ editor empty$
{ "" }
{ editor format.names.ed
}
if$
}
FUNCTION {format.note}
{
note empty$
{ "" }
{ note #1 #1 substring$
duplicate$ "{" =
'skip$
{ output.state mid.sentence =
{ "l" }
{ "u" }
if$
change.case$
}
if$
note #2 global.max$ substring$ *
}
if$
}
FUNCTION {format.title}
{ title empty$
{ "" }
{ title "t" change.case$
}
if$
}
FUNCTION {output.bibitem}
{ newline$
"\bibitem{" write$
cite$ write$
"}" write$
newline$
""
before.all 'output.state :=
}
FUNCTION {n.dashify}
{
't :=
""
{ t empty$ not }
{ t #1 #1 substring$ "-" =
{ t #1 #2 substring$ "--" = not
{ "--" *
t #2 global.max$ substring$ 't :=
}
{ { t #1 #1 substring$ "-" = }
{ "-" *
t #2 global.max$ substring$ 't :=
}
while$
}
if$
}
{ t #1 #1 substring$ *
t #2 global.max$ substring$ 't :=
}
if$
}
while$
}
FUNCTION {word.in}
{ "" }
FUNCTION {format.date}
{ year empty$
{ "" }
'year
if$
duplicate$ empty$
'skip$
{
before.all 'output.state :=
" (" swap$ * ")" *
}
if$
}
FUNCTION {format.btitle}
{ title emphasize
}
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
{ "~" }
{ " " }
if$
swap$ * *
}
FUNCTION {either.or.check}
{ empty$
'pop$
{ "can't use both " swap$ * " fields in " * cite$ * warning$ }
if$
}
FUNCTION {format.bvolume}
{ volume empty$
{ "" }
{ bbl.volume volume tie.or.space.connect
series empty$
'skip$
{ bbl.of space.word * series emphasize * }
if$
"volume and number" number either.or.check
}
if$
}
FUNCTION {format.number.series}
{ volume empty$
{ number empty$
{ series field.or.null }
{ output.state mid.sentence =
{ bbl.number }
{ bbl.number capitalize }
if$
number tie.or.space.connect
series empty$
{ "there's a number but no series in " cite$ * warning$ }
{ bbl.in space.word * series * }
if$
}
if$
}
{ "" }
if$
}
FUNCTION {is.num}
{ chr.to.int$
duplicate$ "0" chr.to.int$ < not
swap$ "9" chr.to.int$ > not and
}
FUNCTION {extract.num}
{ duplicate$ 't :=
"" 's :=
{ t empty$ not }
{ t #1 #1 substring$
t #2 global.max$ substring$ 't :=
duplicate$ is.num
{ s swap$ * 's := }
{ pop$ "" 't := }
if$
}
while$
s empty$
'skip$
{ pop$ s }
if$
}
FUNCTION {convert.edition}
{ edition extract.num "l" change.case$ 's :=
s "first" = s "1" = or
{ bbl.first 't := }
{ s "second" = s "2" = or
{ bbl.second 't := }
{ s "third" = s "3" = or
{ bbl.third 't := }
{ s "fourth" = s "4" = or
{ bbl.fourth 't := }
{ s "fifth" = s "5" = or
{ bbl.fifth 't := }
{ s #1 #1 substring$ is.num
{ s eng.ord 't := }
{ edition 't := }
if$
}
if$
}
if$
}
if$
}
if$
}
if$
t
}
FUNCTION {format.edition}
{ edition empty$
{ "" }
{ output.state mid.sentence =
{ convert.edition "l" change.case$ " " * bbl.edition * }
{ convert.edition "t" change.case$ " " * bbl.edition * }
if$
}
if$
}
INTEGERS { multiresult }
FUNCTION {multi.page.check}
{ 't :=
#0 'multiresult :=
{ multiresult not
t empty$ not
and
}
{ t #1 #1 substring$
duplicate$ "-" =
swap$ duplicate$ "," =
swap$ "+" =
or or
{ #1 'multiresult := }
{ t #2 global.max$ substring$ 't := }
if$
}
while$
multiresult
}
FUNCTION {format.pages}
{ pages empty$
{ "" }
{ pages multi.page.check
{ bbl.pages pages n.dashify tie.or.space.connect }
{ bbl.page pages tie.or.space.connect }
if$
}
if$
}
FUNCTION {first.page}
{ 't :=
""
{ t empty$ not t #1 #1 substring$ "-" = not and }
{ t #1 #1 substring$ *
t #2 global.max$ substring$ 't :=
}
while$
}
FUNCTION {format.journal.pages}
{ pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{
", " *
pages first.page *
}
if$
}
if$
}
FUNCTION {format.vol.num.pages}
{ volume field.or.null
bolden
format.journal.pages
}
FUNCTION {format.chapter.pages}
{ chapter empty$
'format.pages
{ type empty$
{ bbl.chapter }
{ type "l" change.case$ }
if$
chapter tie.or.space.connect
pages empty$
'skip$
{ ", " * format.pages * }
if$
}
if$
}
FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
{ "" }
{ editor empty$
{ word.in booktitle emphasize * }
{ word.in booktitle emphasize *
", " *
format.in.editors *
", " *
editor num.names$ #1 >
{ bbl.editors }
{ bbl.editor }
if$
*
}
if$
}
if$
}
FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
month empty$ year empty$ note empty$
and and and and and
{ "all relevant fields are empty in " cite$ * warning$ }
'skip$
if$
}
FUNCTION {format.thesis.type}
{ type empty$
'skip$
{ pop$
type "t" change.case$
}
if$
}
FUNCTION {format.tr.number}
{ type empty$
{ bbl.techrep }
'type
if$
number empty$
{ "t" change.case$ }
{ number tie.or.space.connect }
if$
}
FUNCTION {format.article.crossref}
{
key empty$
{ journal empty$
{ "need key or journal for " cite$ * " to crossref " * crossref *
warning$
""
}
{ word.in journal emphasize * }
if$
}
{ word.in key * " " *}
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.crossref.editor}
{ editor #1 "{vv~}{ll}" format.name$
editor num.names$ duplicate$
#2 >
{ pop$
" " * bbl.etal emphasize *
}
{ #2 <
'skip$
{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{
" " * bbl.etal emphasize *
}
{ bbl.and space.word * editor #2 "{vv~}{ll}" format.name$
* }
if$
}
if$
}
if$
}
FUNCTION {format.book.crossref}
{ volume empty$
{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
word.in
}
{ bbl.volume volume tie.or.space.connect
bbl.of space.word *
}
if$
editor empty$
editor field.or.null author field.or.null =
or
{ key empty$
{ series empty$
{ "need editor, key, or series for " cite$ * " to crossref " *
crossref * warning$
"" *
}
{ series emphasize * }
if$
}
{ key * }
if$
}
{ format.crossref.editor * }
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.incoll.inproc.crossref}
{
editor empty$
editor field.or.null author field.or.null =
or
{ key empty$
{ booktitle empty$
{ "need editor, key, or booktitle for " cite$ * " to crossref " *
crossref * warning$
""
}
{ word.in booktitle emphasize * }
if$
}
{ word.in key * " " *}
if$
}
{ word.in format.crossref.editor * " " *}
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.org.or.pub}
{ 't :=
""
year empty$
{ "empty year in " cite$ * warning$ }
'skip$
if$
address empty$ t empty$ and
year empty$ and
'skip$
{
add.blank "(" *
t empty$
{ address empty$
'skip$
{ address * }
if$
}
{ t *
address empty$
'skip$
{ ", " * address * }
if$
}
if$
year empty$
'skip$
{ t empty$ address empty$ and
'skip$
{ ", " * }
if$
year *
}
if$
")" *
}
if$
}
FUNCTION {format.publisher.address}
{ publisher empty$
{ "empty publisher in " cite$ * warning$
""
}
{ publisher }
if$
format.org.or.pub
}
FUNCTION {format.organization.address}
{ organization empty$
{ "" }
{ organization }
if$
format.org.or.pub
}
FUNCTION {article}
{ output.bibitem
format.authors "author" output.check
crossref missing$
{ journal
emphasize
"journal" output.check
add.blank
format.vol.num.pages output
format.date "year" output.check
}
{ format.article.crossref output.nonnull
format.pages output
}
if$
new.sentence
format.note output
fin.entry
}
FUNCTION {book}
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check
}
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
format.btitle "title" output.check
crossref missing$
{ format.bvolume output
format.number.series output
format.publisher.address output
}
{
format.book.crossref output.nonnull
format.date "year" output.check
}
if$
format.edition output
new.sentence
format.note output
fin.entry
}
FUNCTION {booklet}
{ output.bibitem
format.authors output
format.title "title" output.check
howpublished output
address output
format.date output
new.sentence
format.note output
fin.entry
}
FUNCTION {inbook}
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check
}
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
format.btitle "title" output.check
crossref missing$
{
format.number.series output
format.publisher.address output
format.bvolume output
format.chapter.pages "chapter and pages" output.check
}
{
format.chapter.pages "chapter and pages" output.check
format.book.crossref output.nonnull
format.date "year" output.check
}
if$
format.edition output
new.sentence
format.note output
fin.entry
}
FUNCTION {incollection}
{ output.bibitem
format.authors "author" output.check
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
format.number.series output
format.publisher.address output
format.bvolume output
format.chapter.pages output
format.edition output
}
{ format.incoll.inproc.crossref output.nonnull
format.chapter.pages output
}
if$
new.sentence
format.note output
fin.entry
}
FUNCTION {inproceedings}
{ output.bibitem
format.authors "author" output.check
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
format.number.series output
publisher empty$
{ format.organization.address output }
{ organization output
format.publisher.address output
}
if$
format.bvolume output
format.pages output
}
{ format.incoll.inproc.crossref output.nonnull
format.pages output
}
if$
new.sentence
format.note output
fin.entry
}
FUNCTION {conference} { inproceedings }
FUNCTION {manual}
{ output.bibitem
author empty$
{ organization empty$
'skip$
{ organization output.nonnull
address output
}
if$
}
{ format.authors output.nonnull }
if$
format.btitle "title" output.check
author empty$
{ organization empty$
{
address output
}
'skip$
if$
}
{
organization output
address output
}
if$
format.edition output
format.date output
new.sentence
format.note output
fin.entry
}
FUNCTION {mastersthesis}
{ output.bibitem
format.authors "author" output.check
format.title "title" output.check
bbl.mthesis format.thesis.type output.nonnull
school "school" output.check
address output
format.date "year" output.check
new.sentence
format.note output
fin.entry
}
FUNCTION {misc}
{ output.bibitem
format.authors output
format.title output
howpublished output
format.date output
new.sentence
format.note output
fin.entry
empty.misc.check
}
FUNCTION {phdthesis}
{ output.bibitem
format.authors "author" output.check
format.title "title" output.check
bbl.phdthesis format.thesis.type output.nonnull
school "school" output.check
address output
format.date "year" output.check
new.sentence
format.note output
fin.entry
}
FUNCTION {proceedings}
{ output.bibitem
editor empty$
{ organization output }
{ format.editors output.nonnull }
if$
format.btitle "title" output.check
format.bvolume output
editor empty$
{ publisher empty$
'skip$
{
format.number.series output
format.publisher.address output
}
if$
}
{ publisher empty$
{
format.organization.address output }
{
organization output
format.publisher.address output
}
if$
}
if$
new.sentence
format.note output
fin.entry
}
FUNCTION {techreport}
{ output.bibitem
format.authors "author" output.check
format.title "title" output.check
format.tr.number emphasize output.nonnull
institution "institution" output.check
address output
format.date "year" output.check
new.sentence
format.note output
fin.entry
}
FUNCTION {unpublished}
{ output.bibitem
format.authors "author" output.check
format.title "title" output.check
format.date output
new.sentence
format.note "note" output.check
fin.entry
}
FUNCTION {default.type} { misc }
READ
STRINGS { longest.label }
INTEGERS { number.label longest.label.width }
FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
#1 'number.label :=
#0 'longest.label.width :=
}
FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
number.label #1 + 'number.label :=
label width$ longest.label.width >
{ label 'longest.label :=
label width$ 'longest.label.width :=
}
'skip$
if$
}
EXECUTE {initialize.longest.label}
ITERATE {longest.label.pass}
FUNCTION {begin.bib}
{ preamble$ empty$
'skip$
{ preamble$ write$ newline$ }
if$
"\begin{thebibliography}{" longest.label * "}" *
write$ newline$
}
EXECUTE {begin.bib}
EXECUTE {init.state.consts}
ITERATE {call.type$}
FUNCTION {end.bib}
{ newline$
"\end{thebibliography}" write$ newline$
}
EXECUTE {end.bib}
%% End of customized bst file
%%
%% End of file `Science.bst'.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment