gender-conscious-routing

Routing along streets named after women rather than men

https://github.com/mpadge/gender-conscious-routing

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.2%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Routing along streets named after women rather than men

Basic Info
Statistics
  • Stars: 5
  • Watchers: 1
  • Forks: 1
  • Open Issues: 5
  • Releases: 0
Created about 7 years ago · Last pushed about 2 years ago
Metadata Files
Readme Codemeta

README.Rmd

---
output: github_document
---



```{r, include = FALSE}
knitr::opts_chunk$set (
    collapse = TRUE,
    comment = "#>",
    out.width = "100%"
)
```


[![R build status](https://github.com/mpadge/gender-conscious-routing/workflows/R-CMD-check/badge.svg)](https://github.com/mpadge/gender-conscious-routing/actions?query=workflow%3AR-CMD-check)
[![codecov](https://codecov.io/gh/mpadge/gender-conscious-routing/branch/master/graph/badge.svg)](https://codecov.io/gh/mpadge/gender-conscious-routing)
[![Project Status: Concept](http://www.repostatus.org/badges/latest/concept.svg)](http://www.repostatus.org/#concept)


# gender conscious routing

Routing along streets named after women rather than men.

## A note on gender

Where possible, gender is identified through wikidata entries, which
accommodate values of female, male, intersex, transgender female, and
transgender male. Street names which are not associated in Open Street Map with
wikidata entries are assigned genders using an internally-bundled library which
presumes that gender is binary. Which it is not. This package and its
developers neither endorse nor encourage viewing gender in binary terms. The
library nevertheless allows gender associations in a very wide variety of
languages, far more than any other equivalent library, and so allows the
functionality of this package to be applied to far greater regions of the world
that would other, non-binary alternatives. See the vignette for further detail
on the gender encoding system used here.

---

## Generating gender-conscious routes

The function `conscious_route()` calculates routes which preferentially
traverse streets named after women. Usage requires downloading a street
network, the simplest way of which is to use [the `dodgr`
package](https://github.com/atfutures/dodgr). It is good practice to save
networks locally, to avoid having to repeat calls to the Open Street Map
servers which deliver the data.

```{r, dodgr_streetnet_sc, eval = FALSE}
city <- "Aachen Germany"
net <- dodgr::dodgr_streetnet_sc (city)
saveRDS (net, "mynetwork.Rds")
```

The gender of all streets can then be appended to the network data with the
`gender_streetnet()` function, which also accepts an additional parameter,
`wt_profile`, used to specify the weighting profile from [the profiles of the
`dodgr`
package](https://atfutures.github.io/dodgr/reference/weighting_profiles.html).

```{r gender_streetnet, eval = FALSE}
library (genderconsciousrouting)
net <- gender_streetnet (dat, wt_profile = "foot")
```

Gender-conscious routes can then be generated by specifying start and end
points. The following example selects random points from the network vertices.

```{r verts, eval = FALSE}
v <- dodgr::dodgr_vertices (net)
set.seed (1)
start <- sample (v$id, size = 1L)
stop <- sample (v$id, size = 1L)
```

Those `id` values are the Open Street Map identifiers of two random vertices
(or "nodes" in Open Street Map terms) of the network. Finally, the following
code calculates the  path between them which traverses the greatest
proportional length along streets named after women:

```{r route-demo, echo = FALSE, eval = FALSE}
set.seed (6)
start <- sample (v$id, size = 1L)
stop <- sample (v$id, size = 1L)
conscious_route (net, start = start, stop = stop)
```


```{r route, eval = FALSE}
conscious_route (net, start = start, stop = stop)
#> $p_stats
#>         d_female  d_male    d_non  p_female     p_male     p_non path_length path_length_rel
#> default    0.000 190.454 8277.046 0.0000000 0.02249235 0.9775076     8467.50        1.000000
#> female  1826.583 335.371 8083.941 0.1782746 0.03273223 0.7889932    10245.89        1.210026
#>
#> $paths
#>      type                       geometry
#> 1 default LINESTRING (6.166698 50.812...
#> 2  female LINESTRING (6.166698 50.812...
# n>
#> $points
#>               x        y    colour
#> 25722  6.166698 50.81288 #44FF22FF
#> 137140 6.020574 50.75566 #FF4422FF
```

The function returns a list of the following three items:

1. `p_stats` providing statistics on absolute and relative distances along the
   types of ways (where "non" suffixes denote ways not named after people).
2. `paths` providing the path geometries, both of the gender-conscious route,
   and the "default" route which does not follow gender conscious paths; and
3. `points` with locations of the specified start and end points, along with
   colour codes which can be used to clearly indicate those points on
   interactive maps.

---

## Aggregate statistics for a whole city

Aggregate analyses of statistics on the gender of street names can be seen in
[the EqualStreetNames project](https://equalstreetnames.org/), which currently
provides interactive visualisations for 62 cities around the world. The results
are, however, static, and only quantify overall proportions regardless of where
streets are located. Many cities consciously name central avenues or boulevards
after men, while streets named after women may be placed in peripheral
locations rarely traversed by the general population. A more appropriate way to
quantify statistics on relative gender proportions is to weight gendered
streets by their importance within the spatially-explicit context of the entire
street network. The most direct way to do that is to weight each
gender-specific street segment by its corresponding network centrality, so that
central segments traversed by large numbers of people contribute more than
peripheral segments. The `genderconsciousrouting` package has an additional
function which performs these analyses for a given city.

The function works by tracing routes between randomly sampled points in a
network, with a default to calculate all possible paths between all pairs of
vertices in the street network. This function takes considerably more time to
calculate than the simple route function demonstrated above, and it is
recommended to first specify a value for the number of sampled points of around
1,000. The time taken can then be scaled by the default total number of points,
which is equal to `nrow(dodgr_vertices(net))`, to estimate how long a full
calculation might take.

```{r gcr_city, eval = FALSE}
dat <- gcr_city (net, n = 1000)
```

```{bash gcr_city-results, eval = FALSE, echo = TRUE}
▶ Contracting street network ...
✔ Contracted street network
▶ Calculating routes (1/2) ...
▶ Calculated routes (1/2)
✔ Calculating routes (2/2) ...
▶ Calculated routes (2/2)

print (dat)
#>    wt_profile           category  proportion
#> 1        foot          IS_FEMALE 0.003105508
#> 2        foot            IS_MALE 0.021219084
#> 3        foot         NOT_A_NAME 0.975675408
#> 4        foot          IS_A_NAME 0.024324592
#> 5        foot      IS_FEMALE_RAW 0.005513113
#> 6        foot        IS_MALE_RAW 0.021046446
#> 7        foot     NOT_A_NAME_RAW 0.973440441
#> 8        foot      IS_A_NAME_RAW 0.026559559
#> 9        foot         pedestrian 0.477930169
#> 10       foot     vehicular_foot 0.457210378
#> 11       foot     pedestrian_RAW 0.354288475
#> 12       foot vehicular_foot_RAW 0.584957718
```

The first 8 statistics (with capitalised values for `category`) are 
divided between "raw" and weighted statistics, where the former are simple
aggregate proportions of the type presented in
[EqualStreetNames](https://equalstreetnames.org/), while those without the
`_raw` suffix are weighted by network centrality, such that more central
streets contribute more.

The final four statistics quantify the proportions of journeys along dedicated
infrastructure, and are primarily intended to quantify the relative prominence
of dedicated pedestrian (for networks weighted using `wt_profile = "foot"`) and
bicycle (for networks weighted using `wt_profile = "bicycle"`) infrastructure
in cities. The network here was weighted for pedestrian (`"foot"`) routing, and
so `vehicular_foot` rows quantify the proportions of journeys or overall edge
lengths (`_RAW`) for which pedestrian infrastructure travels directly beside
vehicular ways, rather than on dedicated infrastructure.

Owner

  • Name: mark padgham
  • Login: mpadge
  • Kind: user
  • Location: Münster, Germany
  • Company: @rOpenSci

rOpenSci software review lead

CodeMeta (codemeta.json)

{
  "@context": "https://doi.org/10.5063/schema/codemeta-2.0",
  "@type": "SoftwareSourceCode",
  "identifier": "genderconsciousrouting",
  "description": "Gender-conscious routing along streets named after women rather than men.",
  "name": "genderconsciousrouting: Gender-Conscious Routing Along Streets Named After Women Rather\n    Than Men",
  "relatedLink": "https://mpadge.github.io/gender-conscious-routing/",
  "codeRepository": "https://github.com/mpadge/gender-conscious-routing",
  "issueTracker": "https://github.com/mpadge/gender-conscious-routing/issues",
  "license": "https://spdx.org/licenses/GPL-3.0",
  "version": "0.0.2.009",
  "programmingLanguage": {
    "@type": "ComputerLanguage",
    "name": "R",
    "url": "https://r-project.org"
  },
  "runtimePlatform": "R version 4.4.0 (2024-04-24)",
  "author": [
    {
      "@type": "Person",
      "givenName": "Mark",
      "familyName": "Padgham",
      "email": "mark.padgham@email.com"
    }
  ],
  "copyrightHolder": [
    {
      "@type": "Person",
      "givenName": "Jörg",
      "familyName": "Michael"
    }
  ],
  "maintainer": [
    {
      "@type": "Person",
      "givenName": "Mark",
      "familyName": "Padgham",
      "email": "mark.padgham@email.com"
    }
  ],
  "softwareSuggestions": [
    {
      "@type": "SoftwareApplication",
      "identifier": "dplyr",
      "name": "dplyr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=dplyr"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "knitr",
      "name": "knitr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=knitr"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "rmarkdown",
      "name": "rmarkdown",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=rmarkdown"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "testthat",
      "name": "testthat",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=testthat"
    }
  ],
  "softwareRequirements": {
    "1": {
      "@type": "SoftwareApplication",
      "identifier": "cli",
      "name": "cli",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=cli"
    },
    "2": {
      "@type": "SoftwareApplication",
      "identifier": "dodgr",
      "name": "dodgr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=dodgr"
    },
    "3": {
      "@type": "SoftwareApplication",
      "identifier": "httr",
      "name": "httr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=httr"
    },
    "4": {
      "@type": "SoftwareApplication",
      "identifier": "jsonlite",
      "name": "jsonlite",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=jsonlite"
    },
    "5": {
      "@type": "SoftwareApplication",
      "identifier": "methods",
      "name": "methods"
    },
    "6": {
      "@type": "SoftwareApplication",
      "identifier": "sf",
      "name": "sf",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=sf"
    },
    "SystemRequirements": {}
  },
  "fileSize": "12192.441KB",
  "readme": "https://github.com/mpadge/gender-conscious-routing/blob/main/README.md",
  "contIntegration": [
    "https://github.com/mpadge/gender-conscious-routing/actions?query=workflow%3AR-CMD-check",
    "https://codecov.io/gh/mpadge/gender-conscious-routing"
  ],
  "developmentStatus": "http://www.repostatus.org/#concept"
}

GitHub Events

Total
Last Year

Committers

Last synced: about 2 years ago

All Time
  • Total Commits: 98
  • Total Committers: 2
  • Avg Commits per committer: 49.0
  • Development Distribution Score (DDS): 0.01
Past Year
  • Commits: 8
  • Committers: 1
  • Avg Commits per committer: 8.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
mpadge m****m@e****m 97
cwdjankoski d****i@c****l 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: over 1 year ago

All Time
  • Total issues: 14
  • Total pull requests: 1
  • Average time to close issues: 9 months
  • Average time to close pull requests: about 1 hour
  • Total issue authors: 1
  • Total pull request authors: 1
  • Average comments per issue: 0.36
  • Average comments per pull request: 1.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 0
  • Average time to close issues: 10 minutes
  • Average time to close pull requests: N/A
  • Issue authors: 1
  • Pull request authors: 0
  • Average comments per issue: 1.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • mpadge (13)
Pull Request Authors
  • cwdjankoski (1)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

DESCRIPTION cran
  • cli * imports
  • dodgr * imports
  • httr * imports
  • jsonlite * imports
  • methods * imports
  • sf * imports
  • dplyr * suggests
  • knitr * suggests
  • rmarkdown * suggests
  • testthat * suggests
.github/workflows/R-CMD-check.yaml actions
  • actions/checkout v4 composite
  • r-lib/actions/check-r-package v2 composite
  • r-lib/actions/setup-pandoc v2 composite
  • r-lib/actions/setup-r v2 composite
  • r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/extra-OS-check.yaml actions
  • actions/checkout v2 composite
  • r-lib/actions/check-r-package v2 composite
  • r-lib/actions/setup-pandoc v2 composite
  • r-lib/actions/setup-r v2 composite
  • r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/pkgdown.yaml actions
  • JamesIves/github-pages-deploy-action v4.5.0 composite
  • actions/checkout v4 composite
  • r-lib/actions/setup-pandoc v2 composite
  • r-lib/actions/setup-r v2 composite
  • r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/test-coverage.yaml actions
  • actions/checkout v4 composite
  • actions/upload-artifact v4 composite
  • codecov/codecov-action v4 composite
  • r-lib/actions/setup-r v2 composite
  • r-lib/actions/setup-r-dependencies v2 composite
.hooks/description cran