Created
June 20, 2018 21:56
-
-
Save lcolladotor/657aaae9d16aff3ce468f44f8780a317 to your computer and use it in GitHub Desktop.
L. Collado-Torres scilifelab 2017 entry
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@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} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
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 file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%% | |
%% 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