flying

Travis build status AppVeyor build status Coveralls test coverage

The package provides methods for predicting flight range of birds based on their physiological characteristics. This is an R implementation of Flight program provided by Pennycuick.

Installation

Install the development version from GitHub with:

# install.packages("devtools")
devtools::install_github("BMasinde/flight")

Examples

Time-Marching computation

library(flying)
#> Welcome to package flying
## basic example code

## birds comes with the package
data("birds")

simulation <- migrate(data = birds,  method = "cmm", settings = list(airDensity = 0.905))

simulation$range
#>           Anser anser  Hydrobates pelagicus   Pachyptila desolata 
#>              3099.512              2711.612              3728.924 
#>       Regulus regulus      Calidris canutus     Aegypius monachus 
#>              1134.909              3845.427              3523.496 
#>      Limosa lapponica           Anas crecca       Hirundo rustica 
#>             11488.486              3406.054              2987.473 
#>         Cygnus cygnus          Sylvia borin     Luscinia luscinia 
#>              3097.141              2281.368              1892.490 
#>       Corvus monedula         Anas penelope   Fregata magnificens 
#>              2051.622              5206.999              9954.016 
#>      Larus ridibundus      Diomedea exulans   Phalacrocorax carbo 
#>              5359.893              5519.687              2613.821 
#>       Gyps rueppellii   Torgos tracheliotus         Ardeotis kori 
#>              6443.840              5800.438              3918.554 
#>      Sturnus vulgaris     Fringilla coelebs      Carduelis spinus 
#>              3603.239              2420.191              2262.704 
#>     Turdus philomelos Calidris tenuirostris     Buteo swainsoni M 
#>              2712.934              5689.756              5102.483 
#>     Buteo swainsoni F 
#>              6459.878

The function also returns the mechanical and chemical power during the simulation

Range estimation based on ODE

This function estimates the range based on Pennycuick (1975) Mechanics of Flight where Breguet set of equations are used.

## when estimating range of a single bird
birds_range <- flysim(data = birds,  settings = list(airDensity = 0.905))

birds_range$range
#>           Anser anser  Hydrobates pelagicus   Pachyptila desolata 
#>                3193.8                3252.9                4192.0 
#>       Regulus regulus      Calidris canutus     Aegypius monachus 
#>                1521.6                4240.6                3951.6 
#>      Limosa lapponica           Anas crecca       Hirundo rustica 
#>               11209.3                3797.8                3898.0 
#>         Cygnus cygnus          Sylvia borin     Luscinia luscinia 
#>                3296.0                2801.7                2301.9 
#>       Corvus monedula         Anas penelope   Fregata magnificens 
#>                2452.7                5428.0               10527.4 
#>      Larus ridibundus      Diomedea exulans   Phalacrocorax carbo 
#>                6113.1                5436.8                2918.8 
#>       Gyps rueppellii   Torgos tracheliotus         Ardeotis kori 
#>                6808.3                6334.7                4211.5 
#>      Sturnus vulgaris     Fringilla coelebs      Carduelis spinus 
#>                4197.4                3036.6                2926.6 
#>     Turdus philomelos Calidris tenuirostris     Buteo swainsoni M 
#>                3243.8                6053.5                5671.6 
#>     Buteo swainsoni F 
#>                6994.8

The data

birds definitions pulled from Flight program in-built datasets and fat mass randomly generated where initially zero. In addition, by default muscle mass was derived as 0.17 fraction of the all-up mass. Users’s data should have columns named appropriately. The package looks for columns named id, name or species.name, bodymass or allupmass, wingspan, ws, wingarea, ordo, order (which is a factored column with levels 1 or 2 passerines and non-passerines respectively) fatmass, fat.mass, fat_mass and lastly muscle_mass.

birds
#>          Scientific.name Empty.mass Wing.span Fat.mass Order Wing.area
#> 1            Anser anser    3.77000     1.600  0.84641     2   0.33100
#> 2   Hydrobates pelagicus    0.02580     0.355  0.00591     2   0.01610
#> 3    Pachyptila desolata    0.15500     0.637  0.03886     2   0.04710
#> 4        Regulus regulus    0.00542     0.156  0.00112     1   0.00525
#> 5       Calidris canutus    0.12700     0.538  0.03500     2   0.03320
#> 6      Aegypius monachus    9.90000     3.040  2.02565     2   1.40000
#> 7       Limosa lapponica    0.36700     0.748  0.20112     2   0.05680
#> 8            Anas crecca    0.23500     0.582  0.06562     2   0.04580
#> 9        Hirundo rustica    0.01900     0.318  0.00570     1   0.01320
#> 10         Cygnus cygnus   12.50000     2.560  2.50000     2   0.75600
#> 11          Sylvia borin    0.02200     0.240  0.00660     1   0.01100
#> 12     Luscinia luscinia    0.02700     0.263  0.00675     1   0.01300
#> 13       Corvus monedula    0.18100     0.600  0.03620     1   0.06180
#> 14         Anas penelope    0.77000     0.822  0.28607     2   0.08290
#> 15   Fregata magnificens    1.67000     2.140  0.55799     2   0.37200
#> 16      Larus ridibundus    0.28500     0.967  0.07881     2   0.09920
#> 17      Diomedea exulans    9.57000     3.060  2.12836     2   0.64400
#> 18   Phalacrocorax carbo    2.56000     1.350  0.50768     2   0.22400
#> 19       Gyps rueppellii    7.30000     2.500  2.52588     2   0.89200
#> 20   Torgos tracheliotus    6.60000     2.640  2.01454     2   1.03000
#> 21         Ardeotis kori   11.90000     2.470  3.45889     2   1.06000
#> 22      Sturnus vulgaris    0.08190     0.384  0.02973     1   0.02530
#> 23     Fringilla coelebs    0.02300     0.264  0.00690     1   0.01310
#> 24      Carduelis spinus    0.01120     0.212  0.00336     1   0.00785
#> 25     Turdus philomelos    0.07160     0.361  0.02148     1   0.02250
#> 26 Calidris tenuirostris    0.23300     0.587  0.08970     2   0.03960
#> 27     Buteo swainsoni M    0.77500     1.250  0.22248     2   0.21000
#> 28     Buteo swainsoni F    1.06000     1.330  0.37117     2   0.24000
#>    Muscle.mass
#> 1    0.6409000
#> 2    0.0043860
#> 3    0.0263500
#> 4    0.0009214
#> 5    0.0215900
#> 6    1.6829999
#> 7    0.0623900
#> 8    0.0399500
#> 9    0.0032300
#> 10   2.1250000
#> 11   0.0037400
#> 12   0.0045900
#> 13   0.0307700
#> 14   0.1309000
#> 15   0.2839000
#> 16   0.0484500
#> 17   1.6268999
#> 18   0.4352000
#> 19   1.2410000
#> 20   1.1220000
#> 21   2.0229999
#> 22   0.0139230
#> 23   0.0039100
#> 24   0.0019040
#> 25   0.0121720
#> 26   0.0396100
#> 27   0.1317500
#> 28   0.1802000