Citing Landlab

If you use any portion of Landlab, please cite the following papers:

Hobley, D. E. J., Adams, J. M., Nudurupati, S. S., Hutton, E. W. H., Gasparini, N. M., Istanbulluoglu, E. and Tucker, G. E., 2017, Creative computing with Landlab: an open-source toolkit for building, coupling, and exploring two-dimensional numerical models of Earth-surface dynamics, Earth Surface Dynamics, 5(1), p 21-46, doi:10.5194/esurf-5-21-2017.

Barnhart, K. R., Hutton, E. W. H., Tucker, G. E., Gasparini, N. M., Istanbulluoglu, E., Hobley, D. E. J., Lyons, N. J., Mouchene, M., Nudurupati, S. S., Adams, J. M., and Bandaragoda, C., 2020, Short communication: Landlab v2.0: A software package for Earth surface dynamics, Earth Surf. Dynam., 8(2), p 379-397, doi:10.5194/esurf-8-379-2020.

Hutton, E., Barnhart, K., Hobley, D., Tucker, G., Nudurupati, S., Adams, J., Gasparini, N., Shobe, C., Strauch, R., Knuth, J., Mouchene, M., Lyons, N., Litwin, D., Glade, R., Giuseppecipolla95, Manaster, A., Abby, L., Thyng, K., & Rengers, F. (2020). landlab [Computer software], doi:10.5281/zenodo.595872.

@article{hobley2017creative,
  title={
    Creative computing with Landlab: an open-source toolkit for building,
    coupling, and exploring two-dimensional numerical models of
    Earth-surface dynamics
  },
  author={
    Hobley, Daniel EJ and Adams, Jordan M and Nudurupati, Sai Siddhartha and
    Hutton, Eric WH and Gasparini, Nicole M and Istanbulluoglu, Erkan and
    Tucker, Gregory E
  },
  journal={Earth Surface Dynamics},
  volume={5},
  number={1},
  pages={21--46},
  year={2017},
  publisher={Copernicus GmbH},
  url={https://esurf.copernicus.org/articles/5/21/2017/},
  doi={10.5194/esurf-5-21-2017}
}

@article{barnhart2020landlab,
  title={Landlab v2. 0: a software package for Earth surface dynamics},
  author={
    Barnhart, Katherine R and Hutton, Eric WH and Tucker, Gregory E and
    Gasparini, Nicole M and Istanbulluoglu, Erkan and Hobley, Daniel EJ and
    Lyons, Nathan J and Mouchene, Margaux and Nudurupati, Sai Siddhartha and
    Adams, Jordan M and others
  },
  journal={Earth Surface Dynamics},
  volume={8},
  number={2},
  pages={379--397},
  year={2020},
  publisher={Copernicus GmbH},
  url={https://esurf.copernicus.org/articles/8/379/2020/},
  doi={10.5194/esurf-8-379-2020}
}

@software{Hutton_landlab_2020,
  author={
    Hutton, Eric and Barnhart, Katy and Hobley, Dan and Tucker, Greg
    and Nudurupati, Sai and Adams, Jordan and Gasparini, Nicole
    and Shobe, Charlie and Strauch, Ronda and Knuth, Jenny
    and Mouchene, Margaux and Lyons, Nathan and Litwin, David
    and Glade, Rachel and {Giuseppecipolla95} and Manaster, Amanda
    and Abby, Langston and Thyng, Kristen and Rengers, Francis
  },
  doi={10.5281/zenodo.595872},
  license={MIT},
  month={4},
  title={{landlab}},
  url={https://github.com/landlab/landlab},
  year={2020}
}

Citing Landlab Components

If you are working with Landlab components and utilities, many of them have their own publication. Please cite it to acknowledge the component authors.

Citation information for each component can be found as follows:

  • Where relevant, software citation and general references, are listed in the Component API documentation under the References section.

  • Software citations are included in component metadata. We have created a tool called the “Citation Registry” that creates a .bib file for software citations used in an application. See example usage below.

Landlab Citation Registry

Registry of landlab components being used.

The landlab registry keeps track of landlab components that have be instantiated by a user. A user can then get a list of all the components in use and then print a list of citations for all of the components they have used.

Examples

>>> from landlab import registry
>>> registry.registered
('landlab',)
>>> print(registry.format_citations())
# Citations
## landlab
    @article{hobley2017creative,
    title={Creative computing with Landlab: an open-source toolkit
        for building, coupling, and exploring two-dimensional
        numerical models of Earth-surface dynamics},
    author={Hobley, Daniel EJ and Adams, Jordan M and Nudurupati,
        Sai Siddhartha and Hutton, Eric WH and Gasparini, Nicole M and
        Istanbulluoglu, Erkan and Tucker, Gregory E},
    journal={Earth Surface Dynamics},
    volume={5},
    number={1},
    pages={21},
    year={2017},
    publisher={Copernicus GmbH}
    }
    @article{barnhart2020short,
    author = {Barnhart, K. R. and Hutton, E. W. H. and Tucker, G. E.
        and Gasparini, N. M. and Istanbulluoglu, E. and Hobley,
        D. E. J. and Lyons, N. J. and Mouchene, M. and Nudurupati,
        S. S. and Adams, J. M. and Bandaragoda, C.},
    title = {Short communication: Landlab v2.0: A software package
        for Earth surface dynamics},
    journal = {Earth Surface Dynamics Discussions},
    volume = {2020},
    year = {2020},
    pages = {1--25},
    url = {https://www.earth-surf-dynam-discuss.net/esurf-2020-12/},
    doi = {10.5194/esurf-2020-12}
    }

When a component contains citation information, and the component has been instantiated (not just imported) the component citation is also included.

>>> from landlab import RasterModelGrid
>>> from landlab.components import Flexure
>>> grid = RasterModelGrid((4, 5))
>>> _ = grid.add_zeros("lithosphere__overlying_pressure_increment", at="node")
>>> _ = grid.add_zeros("lithosphere_surface__elevation_increment", at="node")
>>> flexure = Flexure(grid)
>>> print(registry.format_citations())
# Citations
## landlab
    @article{hobley2017creative,
    title={Creative computing with Landlab: an open-source toolkit
        for building, coupling, and exploring two-dimensional
        numerical models of Earth-surface dynamics},
    author={Hobley, Daniel EJ and Adams, Jordan M and Nudurupati,
        Sai Siddhartha and Hutton, Eric WH and Gasparini, Nicole M and
        Istanbulluoglu, Erkan and Tucker, Gregory E},
    journal={Earth Surface Dynamics},
    volume={5},
    number={1},
    pages={21},
    year={2017},
    publisher={Copernicus GmbH}
    }
    @article{barnhart2020short,
    author = {Barnhart, K. R. and Hutton, E. W. H. and Tucker, G. E.
        and Gasparini, N. M. and Istanbulluoglu, E. and Hobley,
        D. E. J. and Lyons, N. J. and Mouchene, M. and Nudurupati,
        S. S. and Adams, J. M. and Bandaragoda, C.},
    title = {Short communication: Landlab v2.0: A software package
        for Earth surface dynamics},
    journal = {Earth Surface Dynamics Discussions},
    volume = {2020},
    year = {2020},
    pages = {1--25},
    url = {https://www.earth-surf-dynam-discuss.net/esurf-2020-12/},
    doi = {10.5194/esurf-2020-12}
    }

## Flexure
    @article{hutton2008sedflux,
    title={Sedflux 2.0: An advanced process-response model that
        generates three-dimensional stratigraphy},
    author={Hutton, Eric WH and Syvitski, James PM},
    journal={Computers \& Geosciences},
    volume={34},
    number={10},
    pages={1319--1337},
    year={2008},
    publisher={Pergamon}
    }

Finally, the component’s citation information is accessible through an attribute called cite_as:

>>> print(Flexure.cite_as)
    @article{hutton2008sedflux,
    title={Sedflux 2.0: An advanced process-response model that
        generates three-dimensional stratigraphy},
    author={Hutton, Eric WH and Syvitski, James PM},
    journal={Computers \& Geosciences},
    volume={34},
    number={10},
    pages={1319--1337},
    year={2008},
    publisher={Pergamon}
    }
class ComponentRegistry[source]

Bases: object

A registry for instantiated landlab components.

__init__(objs=None)[source]
__new__(**kwargs)
add(cls)[source]

Add a class to the registry.

Parameters:

cls (Component) – A landlab component to register as used.

static format_citation(obj)[source]

Format a single citation.

Parameters:

obj (Component) – A landlab component class or instance.

Returns:

The formatted citation, or “None” if there is no citation given.

Return type:

str

Examples

>>> from landlab._registry import ComponentRegistry
>>> registry = ComponentRegistry()
>>> class DoNothingComponent(object):
...     pass
...
>>> print(registry.format_citation(DoNothingComponent))
## DoNothingComponent
    None
>>> class SorterAndSearcher(object):
...     _cite_as = '''
... @book{knuth1998art,
... title={The art of computer programming: sorting and searching},
... author={Knuth, Donald Ervin},
... volume={3},
... year={1998},
... publisher={Pearson Education}
... }'''
...
>>> print(registry.format_citation(SorterAndSearcher))
## SorterAndSearcher
    @book{knuth1998art,
    title={The art of computer programming: sorting and searching},
    author={Knuth, Donald Ervin},
    volume={3},
    year={1998},
    publisher={Pearson Education}
    }
format_citations()[source]

Format citations for all registered components.

Returns:

The formatted citations.

Return type:

str

Examples

>>> from landlab._registry import ComponentRegistry
>>> registry = ComponentRegistry()
>>> class HolyGrailFinder(object):
...     _name = "Monty Python"
...     _cite_as = [
...         '''@book{python2000holy,
...         title={the Holy Grail},
...         author={Python, Monty and Chapman, Graham and Cleese, John and Gilliam, Terry and Jones, Terry and Idle, Eric and Palin, Michael},
...         year={2000},
...         publisher={EMI Records}
...         }''',
...         '''@book{chapman1989complete,
...         title={The Complete Monty Python's Flying Circus: All the Words. Volume one},
...         author={Chapman, Graham and Python, Monty},
...         volume={1},
...         year={1989},
...         publisher={Pantheon}
...         }''',
...     ]
...
>>> class Evolution(object):
...     _cite_as = '''
...         @book{darwin1859origin,
...         title={On the origin of species},
...         author={Darwin, Charles},
...         year={1859},
...         publisher={Lulu. com}
...         }'''
...
>>> registry.add(HolyGrailFinder)
>>> registry.add(Evolution)
>>> print(registry.format_citations())
# Citations
## Monty Python
    @book{python2000holy,
    title={the Holy Grail},
    author={Python, Monty and Chapman, Graham and Cleese, John and
        Gilliam, Terry and Jones, Terry and Idle, Eric and Palin,
        Michael},
    year={2000},
    publisher={EMI Records}
    }
    @book{chapman1989complete,
    title={The Complete Monty Python's Flying Circus: All the Words.
        Volume one},
    author={Chapman, Graham and Python, Monty},
    volume={1},
    year={1989},
    publisher={Pantheon}
    }

## Evolution
    @book{darwin1859origin,
    title={On the origin of species},
    author={Darwin, Charles},
    year={1859},
    publisher={Lulu. com}
    }
static get_citations(obj)[source]

Get a list of citations from an object.

static get_name(obj)[source]

Get the display name for an object.

Examples

>>> from landlab._registry import ComponentRegistry
>>> class MontyPython(object):
...     name = "Eric Idle"
...
>>> ComponentRegistry.get_name(MontyPython)
'Eric Idle'
>>> class MontyPython(object):
...     _name = "Graham Chapman"
...
>>> ComponentRegistry.get_name(MontyPython)
'Graham Chapman'
>>> class MontyPython(object):
...     pass
...
>>> ComponentRegistry.get_name(MontyPython)
'MontyPython'
property registered

All registered classes.

Returns:

The components in the registry.

Return type:

tuple

Examples

>>> from landlab._registry import ComponentRegistry
>>> registry = ComponentRegistry()
>>> registry.registered
()
>>> class FooBar(object):
...     pass
...
>>> registry.add(FooBar)
>>> registry.registered
('FooBar',)