From 4f0026b2126886bbfe3a8e8584c1f3f9de29237a Mon Sep 17 00:00:00 2001 From: "Benjamin J. Cairns" Date: Mon, 29 Jul 2019 10:07:21 +0100 Subject: [PATCH 1/5] Ignore local test scripts in meta/ --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index a126660..000d6b5 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ README.html tests/test-data +meta From 648b9a3b80fef77c78028823b7f3dc33adec34e4 Mon Sep 17 00:00:00 2001 From: "Benjamin J. Cairns" Date: Fri, 2 Aug 2019 15:25:20 +0100 Subject: [PATCH 2/5] Added new field property tables --- R/sysdata.rda | Bin 1268 -> 2014 bytes R/tidy-schemas.R | 25 +++++++++--- data-raw/aux_tables.R | 69 ++++++++++++++++++++++++++++++++++ data-raw/internal-variables.R | 30 +++------------ inst/sql/ukb-schemas.sql | 38 ++++++++++++++----- 5 files changed, 122 insertions(+), 40 deletions(-) create mode 100644 data-raw/aux_tables.R diff --git a/R/sysdata.rda b/R/sysdata.rda index 7c3fdc27c2d8bec9df5caa0cd18fa3dd97ee3c4e..dd6a7f1b9aeba5f41e927bab26733f483e33eda2 100644 GIT binary patch literal 2014 zcmV<42O;=ET4*^jL0KkKSxp6&MF0fPf5rd*|0m7o|9-#k-{}AU|KLCX00;qqA`jpQ zA3WDaz>2pO6>Wt|b)f865|cqqQ`<^qJv}rUDADQ+fCh#j00z_=2AMrZKs_`B8YWEw zOhPBMG@2Vx>J1G500E!?27qV)WB}j+rkVf@fB*)700w{n82|v#&;cSMCMJR>h^L6u z^*sd9pcvF*4GjU10009fjWiAb8fl;a$N&In003wJ0gwO<4FD1-1QDSOj9gK98nx3L=0Gs7L-!b z&}6_?#$-@r!@Kz~#T!~Gu5TnCGV1a6bN2Da217~rc&QVw3qPtnMYi_&kd9{zE;f#f z4>_c|&3c)I|98d20Cw71gv2F>d40@ql5OWmgMh2MvZv*a*jnt?m6(-`s2k@02Lz~P zA&DU_lM)DGOO{9IE-pXrG4vL6JNk11=ziCCXPG`hwM99mo##Irpo-aD{gX67JqT0| z&m_cjT?IUctp5u5Gt<9>V$AuV_x3|{G(~1&$+6DIt~byKxgjRdAZY-M!vR1hh5*D6 z&E|@*1YptxHUd;>AtR>YqqxvRLO{fVq7fyveUlg`KBD6|wrsGVs`f%Lmm`#Wg9IUbi>F(H9%RhCrw~0Lqv&~sT`o+P*^l_1<3fB!K$4sfe=9>5eYI> zuz;|uc#xQ3p!mvm+M*Al$Vz3Q9)A+LZ((Vpk`KWW)rp2jG-f%IH#C^dk)CX1h*7&_rW8@ z;jrS7gtqg6Ot4!ah$`*e3YFfmc#{#TL9vZ$O7Qv^3b~~TFC|5E5$*0Xbi~%o!s4y# zYoX9KasM{Ir&kL5{JlRLJcz?m>7mZjO|ef;swN$J@G48IVbR3T4Z|l6*xp>#f5~y~ ztWrB6Y0!jz+RyXl@%8b7=3qOrPdL!AuCx=*df-t|R#aCBsCC0&Ft#$;-x!o#EV6LX zzF5;9Wi`uAq;pCND-)7PqS=&tk@sf3hc9B>#J6p?G2smp%4tD=a4+p{EV(st$X~a` zP>lw?ZKsT5V;S<#(QMYl)vcF3Pl}gMU|xS?*^Z;`Xnj+G_n>hsBs>$Jlhdt;V^e5X zXt?(%@Px|1=Cr+&2NqL0a`$CER$i!=rJzhKg}vG+1~zb9tKJDj_Aq4g+YZGfOgA-| z4;ok=CT!5>e9U?55wWN;u!5sHq`6CcS_x^@jEbX{iPFH5ifKrm*)>>#u;=yR% zAdmFK$cGnOT-MRaxi&Iz8H9Lsk)fz29D8;WAAZIco7T>E8E9asc0eXmQi;%E2|K|W zg4Nu-TpmX`=`<@fXp}U(E4y5|t4m@V--7ABvF2_8wXy8L%49Gb-69RaC@}K4@D`*k zhi|gVhD`p3x{Uun*drrfhA60{4CxYaP~p&KWi=%D2?@RSo46t*(BPUm=}?r2lHE8? zPHIHxQ-2`(Sv@*s4*OSvmBGf3yAI{Z(p1r7Gj@pL=}g@_TW&ftUFsxP&egdisS4aQ zWLq2cI_rXPEWqcN?q#L@Zq|b3M2(5ujV7ywqcNy9TD{!LUW(^R=vU66ii|ds6DBr> zpe}_sYpOfL7{(Q|6l)g)*wE=&RE(vgah7W=lGv*$OfVTZGJ{sAM=JtcsrovG?zt6Kjo2}AY6a*s!~E|nOR4Fw*JoRZQ~^bz;7 z@84-mi5%i6*E6ocx}yQ8$to15Of%%Lw|EpwQ0)!;RTR-{n;=)zxK|wG5{BJ#4&Bi+ zhd9L8svEg)^^8f*Z`Bs0vN3S%$)UOhQ%#2Fx`;vVH20EEI3z$Py`}=6f{s31^OWHir5SaxMq7mJYod`uE6($$voI&dPa1Y{~v7r23tXugZzSqp<1*9yw^ zWrZP8`^wZ{%9lkYM~0PF7L1LSO%dUt6@is?6Xfm#$nhz5POAotC~yu<(jLX@fmkxw zpe+u*oj>7ZGax|C#UM#pm8zdXZ4OAVRqCft|K;Czz-^zyT*n+4A5&5YZSv7aGnW%> z{u6Wa`V`{8BJrLkf+`E}icu1y>A0=WhmaOLYz5{>5xnCd@m(_#h|JWGm{JltqGb1? zWQaGJq$eCm4iq-flt|$qim?KG%1Bi%o)L+N9JwtnrWke=oGWl(IK?1@aKGv%z(uTG#ItDKZc-y0OWGQa%YposGwxfAjCdQHY z?Q))DA}K>d33B=6_dQjWS&(gGJFU9-42I<{ma+N$GU$zy-Kzz=L$1?_b}GbM>R5#2 zTPaCWWXU}*rULTaUP~a#lDg+@Jk?EWhd!T^Ezo|SxjTCkcO%IS^#HOJx zIwg6Qn1Qi!7xmHdqbz{?aC#jRyo5ejw%c@zkcj7kJ22#{c6 zdXTMD38rDJ^!$A8Sq+k^K-ZePo&q!-7?KM^vuKHlEm@6!*oMFT;gDH{qisV-N zyBFPYnegGd^q9}RFfX?+COxYL3y{u?48})I*wxXObZw=lJnMu_kzc9Li#cOTrmV^^ zvzts8morW;$ZX0mKL#}gT%-=S0X)5i-0@FtQ&H;lkt5mtsyrv>b$kMPa zGu7DN=USxABPERSpwsc;&r4)Zo@Bco6JC;wXc?wFEVSqFQMAn!h8*xas^&%1qKKKg ek&#E5x2kMUDb5==e8dDF_`8xR!i0knl*526a8*eF diff --git a/R/tidy-schemas.R b/R/tidy-schemas.R index f757c28..1d34bcf 100644 --- a/R/tidy-schemas.R +++ b/R/tidy-schemas.R @@ -8,18 +8,31 @@ # Add the missing valuetypes table sch <- - sch %>% append(list(valuetypes=VALUE_TYPES)) - if (!silent) cat("... Added table `valuetypes`\n") + sch %>% append( + list( + valuetypes = VALUE_TYPES, + stability = STABILITY, + itemtypes = ITEM_TYPES, + strata = STRATA, + sexed = SEXED + ) + ) + if (!silent) cat("... Added property type tables\n") # Rename columns as needed sch$fields <- sch$fields %>% - dplyr::rename(value_type_id = .data$value_type) + dplyr::rename( + value_type_id = .data$value_type, + stability_id = .data$stability, + item_type_id = .data$item_type, + strata_id = .data$strata, + sexed_id = .data$sexed, + category_id = .data$main_category + ) sch$encodings <- sch$encodings %>% dplyr::rename(value_type_id = .data$coded_as) - sch$fields <- sch$fields %>% - dplyr::rename(category_id = .data$main_category) if (!silent) { - cat("... Rename to value_type_id in tables ") + cat("... Rename coded properties in tables ") cat("`fields` and `encodings` \n") } diff --git a/data-raw/aux_tables.R b/data-raw/aux_tables.R new file mode 100644 index 0000000..0276584 --- /dev/null +++ b/data-raw/aux_tables.R @@ -0,0 +1,69 @@ +# Value types from +# http://biobank.ctsu.ox.ac.uk/crystal/help.cgi?cd=value_type +# Note that the IDs for "Binary object" and "Records" have been set arbitrarily. +# The value_type_id 0 has been added for consistency with the coded_as column +# of `encodings`. +# +# Last update: 2019-03-16 +VALUE_TYPES <- tibble::tribble( + ~value_type_id, ~title, ~description, + 0L, "", "", + 11L, "Integer", "whole numbers, for example the age of a participant on a particular date", + 21L, "Categorical (single)", "a single answer selected from a coded list or tree of mutually exclusive options, for example a yes/no choice", + 22L, "Categorical (multiple)", "sets of answers selected from a coded list or tree of options, for instance concurrent medications", + 31L, "Continuous", "floating-point numbers, for example the height of a participant", + 41L, "Text", "data composed of alphanumeric characters, for example the first line of an address", + 51L, "Date", "a calendar date, for example 14th October 2010", + 61L, "Time", "a time, for example 13:38:05 on 14th October 2010", + 101L, "Compound", "a set of values required as a whole to describe some compound property, for example an ECG trace", + 998L, "Binary object", "a complex dataset (blob), for example an image", + 999L, "Records", "a summary showing the volume of records data available via the secure portal" +) + +# Stability from +# https://biobank.ctsu.ox.ac.uk/crystal/help.cgi?cd=stability +# Note that the ID for "Obsolete" has been set arbitrarily. +# +# Last update: 2019-08-02 +STABILITY <- tibble::tribble( + ~stability_id, ~title, ~description, + 0L, "Complete", "all data has been collected and will never change, an example would be the date at which a participant joined UK Biobank", + 1L, "Updateable", "all data has been collected, but the values may change over time, an example would be the volume of the initial blood samples collected by UKB which will decrease as new analyses are performed using them", + 2L, "Accruing", "data is still being gathered", + 3L, "Ongoing", "data is still being gathered and the values already held may change over time", + 4L, "Obsolete", "data which has been superceded by other fields and is not recommended for use" +) + +# Item types from +# https://biobank.ctsu.ox.ac.uk/crystal/help.cgi?cd=item_type +# +# Last update: 2019-08-02 +ITEM_TYPES <- tibble::tribble( + ~item_type_id, ~title, ~description, + 0L, "Data", "data values, of elementary types or with simple structures", + 10L, "Samples", "inventory information corresponding to biological samples held by UK Biobank", + 20L, "Bulk", "large complex objects, typically binary files (blobs) which cannot be decomposed into smaller chunks", + 30L, "Records", "inventory information describing the number of (records) held" +) + +# Strata from +# https://biobank.ctsu.ox.ac.uk/crystal/help.cgi?cd=strata +# +# Last update: 2019-08-02 +STRATA <- tibble::tribble( + ~strata_id, ~title, ~description, + 0L, "Primary", "the key clinically/scientifically relevant data-fields", + 3L, "Derived", "data which has been constructed by combining/processing values from one or more other data-fields", + 1L, "Supporting", "data which is clinical/scientific in nature, but largely superceded by a Primary data-field", + 2L, "Auxiliary", "data which describes the systems or processes used to acquire the data" +) + +# Sexed from +# +# Last update: 2019-08-02 +SEXED <- tibble::tribble( + ~sexed_id, ~title, ~description, + 0L, "Unisex", "for example height", + 1L, "Males only", "for example prostate cancer history", + 2L, "Females only", "for example age at menopause" +) diff --git a/data-raw/internal-variables.R b/data-raw/internal-variables.R index 0cf4825..54e1132 100644 --- a/data-raw/internal-variables.R +++ b/data-raw/internal-variables.R @@ -30,29 +30,6 @@ ids <- as.integer(c(1:14, 999)) SCHEMA_FILENAMES <- tibble::tibble(id = ids, filename = filenames) -# Value types from -# http://biobank.ctsu.ox.ac.uk/crystal/help.cgi?cd=value_type -# Note that the IDs for "Binary object" and "Records" have been set arbitrarily. -# The value_type_id 0 has been added for consistency with the coded_as column -# of `encodings`. -# -# Last update: 2019-03-16 -VALUE_TYPES <- tibble::tribble( - ~value_type_id, ~title, ~description, - 0L, "", "", - 11L, "Integer", "whole numbers, for example the age of a participant on a particular date", - 21L, "Categorical (single)", "a single answer selected from a coded list or tree of mutually exclusive options, for example a yes/no choice", - 22L, "Categorical (multiple)", "sets of answers selected from a coded list or tree of options, for instance concurrent medications", - 31L, "Continuous", "floating-point numbers, for example the height of a participant", - 41L, "Text", "data composed of alphanumeric characters, for example the first line of an address", - 51L, "Date", "a calendar date, for example 14th October 2010", - 61L, "Time", "a time, for example 13:38:05 on 14th October 2010", - 101L, "Compound", "a set of values required as a whole to describe some compound property, for example an ECG trace", - 998L, "Binary object", "a complex dataset (blob), for example an image", - 999L, "Records", "a summary showing the volume of records data available via the secure portal" -) - - # Errors UKBSCHEMAS_ERRORS <- list( OVERWRITE = "Will not overwrite existing file without 'overwrite=TRUE'", @@ -65,10 +42,13 @@ UKBSCHEMAS_ERRORS <- list( WARN_DB_CONNECTED = "Database object is already connected" ) +# Additional tables to add to the schemas +source("data-raw/aux_tables.R") + # Export to R/sysdata.rda usethis::use_data( - UKB_SCHEMAS_URL, UKB_URL_PREFIX, SCHEMA_FILENAMES, VALUE_TYPES, - UKBSCHEMAS_ERRORS, + VALUE_TYPES, STABILITY, ITEM_TYPES, STRATA, SEXED, + UKB_SCHEMAS_URL, UKB_URL_PREFIX, SCHEMA_FILENAMES, UKBSCHEMAS_ERRORS, internal = TRUE, overwrite = TRUE ) diff --git a/inst/sql/ukb-schemas.sql b/inst/sql/ukb-schemas.sql index 7c60b5e..1462e3d 100644 --- a/inst/sql/ukb-schemas.sql +++ b/inst/sql/ukb-schemas.sql @@ -2,15 +2,15 @@ CREATE TABLE fields( "field_id" INTEGER PRIMARY KEY, "title" TEXT, "availability" INTEGER, - "stability" INTEGER, + "stability_id" INTEGER, "private" INTEGER, "value_type_id" INTEGER, /* In the original table this column is called "value_type" */ "base_type" INTEGER, - "item_type" INTEGER, - "strata" INTEGER, + "item_type_id" INTEGER, + "strata_id" INTEGER, "instanced" INTEGER, "arrayed" INTEGER, - "sexed" INTEGER, + "sexed_id" INTEGER, "units" TEXT, "category_id" INTEGER, "encoding_id" INTEGER, @@ -69,11 +69,6 @@ CREATE TABLE recommended( "category_id" INTEGER, "field_id" INTEGER ); -CREATE TABLE valuetypes( - "value_type_id" INTEGER PRIMARY KEY, - "title" TEXT, - "description" TEXT -); CREATE TABLE encvalues( "encoding_id" INTEGER, "code_id" INTEGER, @@ -91,3 +86,28 @@ CREATE TABLE schema( "descript" TEXT, "notes" TEXT ); +CREATE TABLE valuetypes( + "value_type_id" INTEGER PRIMARY KEY, + "title" TEXT, + "description" TEXT +); +CREATE TABLE stability( + "stability_id" INTEGER PRIMARY KEY, + "title" TEXT, + "description" TEXT +); +CREATE TABLE itemtypes( + "item_type_id" INTEGER PRIMARY KEY, + "title" TEXT, + "description" TEXT +); +CREATE TABLE strata( + "strata_id" INTEGER PRIMARY KEY, + "title" TEXT, + "description" TEXT +); +CREATE TABLE sexed( + "sexed_id" INTEGER PRIMARY KEY, + "title" TEXT, + "description" TEXT +); From b7ce71ed7efc5c6af516c9412ff56040a0a6533a Mon Sep 17 00:00:00 2001 From: "Benjamin J. Cairns" Date: Sat, 3 Aug 2019 15:03:16 +0100 Subject: [PATCH 3/5] Update README --- README.Rmd | 8 ++++++-- README.md | 29 +++++++++++++++++++++++------ 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/README.Rmd b/README.Rmd index dbcc39a..0181267 100644 --- a/README.Rmd +++ b/README.Rmd @@ -76,6 +76,8 @@ db <- ukbschemas_db(path = tempdir(), overwrite = TRUE, as_is = TRUE) The `overwrite` option allows the database file to be overwritten (if `TRUE`), or prevents this (`FALSE`), or if not specified and the session is interactive (`interactive() == TRUE`) then the user is prompted to decide. +**Note:** If you have created a schemas database with an earlier version of ukbschemas, it should be possible to load that database with the latest version of `load_db()`, which (currently) should load any SQLite database, regardless of contents. + #### Load-Save workflow The second approach is to download the schemas and store them in memory in a list, and save them to a database only as requried. @@ -98,10 +100,12 @@ This package was originally written in bash (a Unix shell scripting language). H * All the encoding value tables (`esimpint`, `esimpstring`, `esimpreal`, `esimpdate`, `ehierint`, `ehierstring`) have been harmonised and combined into a single table `encvalues`. The `value` column in `encvalues` has type `TEXT`, but a `type` column has been added in case the value is not clear from context. The original type-specific tables have been deleted. * To avoid redunancy, category parent-child relationships have been moved to table `categories`, as column `parent_id`, from table `catbrowse` (which has been deleted). * Reference to the category to which a field belongs is in the `main_category` column in the `fields` schema, but has been renamed to `category_id` for consistency with the `categories` schema. -* The value types described [on the UKB Showcase](http://biobank.ctsu.ox.ac.uk/crystal/help.cgi?cd=value_type) have been added manually to a table `valuetypes` and appropriate ID references have been renamed to `value_type_id` in tables `fields` and `encodings`. +* Details of several of the field properties (`value_type`, `stability`, `item_type`, `strata` and `sexed`) are available elsewhere on the Data Showcase. These have been added manually to tables `valuetypes`, `stability`, `itemtypes`, `strata` and `sexed`, and appropriate ID references have been renamed with the `_id` suffix in tables `fields` and `encodings`. +* There are several columns in the tables which are not well-documented (e.g. `base_type` in fields, `availability` in `encodings` and `categories`, and others). Additional tables documenting these encoded values may be included in future versions (and suggestions are welcome). #### Known code issues -* The UK Biobank data schemas are regularly updated as new data are added to the system. ukbschemas does not currently include a facility for updating the database; it is necessary to create a new database. +* The UK Biobank data schemas are regularly updated as new data are added to the system. ukbschemas does not currently include a facility for updating the database; it is necessary to create a new database. +* Because `readr::read_csv()` reads whole numbers as type `double`, not `integer` (allowing 64-bit integers without loss of information), column types in schemas loaded in R will differ depending on whether the schemas are loaded directly to R or first saved to a database. This should make little or no difference for most applications. * Any [other issues](https://github.com/bjcairns/ukbschemas/issues). diff --git a/README.md b/README.md index 5dc530c..72f88e7 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ By default, the database is named `ukb-schemas-YYYY-MM-DD.sqlite` (where `YYYY-MM-DD` is the current date) and placed in the current working directory. (`path = tempdir()` in the above example puts it in the current temporary directory instead.) At the most recent compilation of -the database (19 July 2019), the size of the .sqlite database file +the database (03 August 2019), the size of the .sqlite database file produced by `ukbschemas_db()` was approximately 10.1MB. Note that without further arguments, `ukbschemas_db()` tidies up the @@ -66,6 +66,11 @@ The `overwrite` option allows the database file to be overwritten (if is interactive (`interactive() == TRUE`) then the user is prompted to decide. +**Note:** If you have created a schemas database with an earlier version +of ukbschemas, it should be possible to load that database with the +latest version of `load_db()`, which (currently) should load any SQLite +database, regardless of contents. + #### Load-Save workflow The second approach is to download the schemas and store them in memory @@ -104,11 +109,17 @@ software (not even SQLite). - Reference to the category to which a field belongs is in the `main_category` column in the `fields` schema, but has been renamed to `category_id` for consistency with the `categories` schema. - - The value types described [on the UKB - Showcase](http://biobank.ctsu.ox.ac.uk/crystal/help.cgi?cd=value_type) - have been added manually to a table `valuetypes` and appropriate ID - references have been renamed to `value_type_id` in tables `fields` - and `encodings`. + - Details of several of the field properties (`value_type`, + `stability`, `item_type`, `strata` and `sexed`) are available + elsewhere on the Data Showcase. These have been added manually to + tables `valuetypes`, `stability`, `itemtypes`, `strata` and `sexed`, + and appropriate ID references have been renamed with the `_id` + suffix in tables `fields` and `encodings`. + - There are several columns in the tables which are not + well-documented (e.g. `base_type` in fields, `availability` in + `encodings` and `categories`, and others). Additional tables + documenting these encoded values may be included in future versions + (and suggestions are welcome). #### Known code issues @@ -116,4 +127,10 @@ software (not even SQLite). added to the system. ukbschemas does not currently include a facility for updating the database; it is necessary to create a new database. + - Because `readr::read_csv()` reads whole numbers as type `double`, + not `integer` (allowing 64-bit integers without loss of + information), column types in schemas loaded in R will differ + depending on whether the schemas are loaded directly to R or first + saved to a database. This should make little or no difference for + most applications. - Any [other issues](https://github.com/bjcairns/ukbschemas/issues). From 8226d0b33cefe1ae093a339e72aff12aa233ff65 Mon Sep 17 00:00:00 2001 From: "Benjamin J. Cairns" Date: Sat, 3 Aug 2019 15:04:44 +0100 Subject: [PATCH 4/5] Sort STRATA tibble by id --- R/sysdata.rda | Bin 2014 -> 2016 bytes data-raw/aux_tables.R | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/R/sysdata.rda b/R/sysdata.rda index dd6a7f1b9aeba5f41e927bab26733f483e33eda2..194bad10ebc0ef90bb36832e66bc869e531ea00b 100644 GIT binary patch delta 2008 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 q6`op^aMa802*na z0Ds5;0B8UJXaE6_01XWQ5-0=_p*>XdRC;MPri^7Cqd>v{0jH<{0002V=`JZc7-bs* z)Plvv<21_+NmQaFg;Y#aEJz$t93(^xSdA8xQqs_5z*fd&P-Mfq`7p&BS}Lw@Bp)*B z@%D4}@y7;3N%wfE6R!(Dsys!u_W6*GXMYSXHjaxAIi$MHdYOg)cg4g2cG_Bm#3hG$ zeavu@ZRbdXfUCQ*r{#{=TI|-9n3asE8|ME91gK>pi6JhN5(r{TmPhC=EAtR>YqqxvR zLO{fVq7fyveUlg`KBD6|wrsGVs`f%Lmm`#Wg9IUbi>F(H9%Rh zCrw~0Lqv&~sT`o+P*^l_1<3fB!GEfqEP)U~BM}KQRIq@st9X!@VW9ZRcG{v3qRG=9 zm17E1aD{72SsZQ<5TmcjQH(XN0er`p@UV3eU^-@Va>1bbnhO@O*jeDw_EAAo z3qqz=HK1lzZDtd-(u|=anmDJJfO`(e&IGpPfw~Q9eVI8ORHhg#Lo@GCl1)&T-ATcaqg^AJ0WS%gnru3^X2jN@q*@H zJF-tW(6O$x6V7_zQBYP?SAPkpb;DpVwldk@7?fQsvT)J9SkoS5HOo$B3Y}Ulp zt(QGdikDAdUVmfRj-&2qeN%z=pm8iDJQJUj)2)bOQ)pLcxc4aVgn!Dw=Cr+&2NqL0 za`$CER$i!=rJzhKg}vG+1~zb9tKJDj_Aq4g+YZGfOgA-|4;ok=CT!5>e9U?55wWN; zu!5sHq`6CcS_x^@jEbX{iPFH5ifKrm*)>>#uKM>**Z18 zG`uUjT)C@DVjJIr>Atb%ZUMEi?7+%oFdN+>4Z$cd^0@F8q%DVUvdV@`{)W1Y|3BCx zBVUFnsH6<(5`S?};m~GfH6-{63BC54xFRIb;F>wLgdr)wv_73fwegTO0K{>w<7Bz~`6l zWu^UY)`I0kjfvciCaZ;`F{n0Lz1+%Piswq`SI(h|jDI$h6DBr>pe}_sYpOfL7{(Q| z6l)g)*wE=&RE(vgah7W=lGv*$OfVTZGJ{sAM=Jtcswi%l3+}lUR*l#(s>DZSlyZ+pwJwzylnn(QjhvFwQuGn`v+v(&Oo<%gDAzNt z!MdXXsL3i6r%W^Cu(x;=OHl0%{8bduYnvcf)VNn1;}VA5a}M3nGlw|D*s2@3Z}p5x z&TrKgq_Qz^?8%|J1>>FuMX14R-%EUyh#1(@4Sy55D4{e6aec2jmhPrg#k|RZO-}gR zvnhIvS7^AJBg9cvn9!Z?qs_+8V<2d9W(OFU!l6dn8kse{1G%VtH00r>N0SJbAu%mX z#thtMnh@QY@>M!o^&7mF!k`!#&2Sd&6oPm3#ND5h3Sc%R6vmE;zD8EeX;pky=!cNH z8Gq1z69L3~+~gS!+V2uyNKa%nJ6aMf6s>OC07{p&Xv6Uq(MJY0wT-*dtQ2c6_>My6 zU}QRyF$;@{sLmkeu@EnCJPt%$i-NT+12R!#4Kp({#ywp)b&JdJnWZED4dG7y062GH zDFdU%1VYr6;BA7!l5GVw8MSEQ7_&uWUO$PVnJP+OLsG`gN-CMugqG_@ofZw~QJAdr o>Q%#2Fx`;vVH20EEI3z$Py`}=6f{s31^ Date: Sat, 3 Aug 2019 16:17:51 +0100 Subject: [PATCH 5/5] Version bump and add NEWS.md --- DESCRIPTION | 2 +- NEWS.md | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 NEWS.md diff --git a/DESCRIPTION b/DESCRIPTION index 7efefa9..d33d0e9 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: ukbschemas Type: Package Title: Download the UK Biobank data schemas to an SQLite database -Version: 0.2.0 +Version: 0.2.1 Author: Benjamin J. Cairns Maintainer: Benjamin J. Cairns Description: ukbschema downloads the UK Biobank data dictionaries (schemas) from the UK Biobank Data Showcase and stores them in an SQLite database. The database can be loaded back into R, or queried using sqlite3 or any of a wide range of computing packages. diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 0000000..2b148b5 --- /dev/null +++ b/NEWS.md @@ -0,0 +1,10 @@ +# ukbschemas 0.2.1 + +* Added further tables with information about field properties `stability`, `item_type`, `strata` and `sexed` +* Minor additions to `README.md` +* Added a `NEWS.md` file to track changes to the package. + +# ukbschemas 0.2.0 + +* First public release +* Create a database containing a curated set of tables storing the UK Biobank data schemas \ No newline at end of file