magnusdv / forrel

Forensic pedigree analysis and relatedness inference
GNU General Public License v2.0
10 stars 0 forks source link

readFam contd #33

Closed thoree closed 4 years ago

thoree commented 4 years ago

Previous example now runs. Here's an example probably best ignored. readFam fails for an old version of Familias (3.1.9), but works if the file is saved as most recent Familias version (3.2.9). Here are the runs in turn:

x = forrel::readFam("http://familias.name/BookKEP/Solution3_5.fam") # version 3.1.9, fails
#> Familias version: 3.1.9 (DVI)
#> Read DVI: Yes
#> 
#> Number of individuals (excluding 'extras'): 100
#>   Individual 'Sister1': Genotypes for 22 markers read
#>   Individual 'Sister2': Genotypes for 22 markers read
#>   Individual 'Sister3': Genotypes for 22 markers read
#>   Individual 'Sister4': Genotypes for 22 markers read
#>   Individual 'Sister5': Genotypes for 22 markers read
#>   Individual 'Sister6': Genotypes for 22 markers read
#>   Individual 'Sister7': Genotypes for 22 markers read
#>   Individual 'Sister8': Genotypes for 22 markers read
#>   Individual 'Sister9': Genotypes for 22 markers read
#>   Individual 'Sister10': Genotypes for 22 markers read
#>   Individual 'Sister11': Genotypes for 22 markers read
#>   Individual 'Sister12': Genotypes for 22 markers read
#>   Individual 'Sister13': Genotypes for 22 markers read
#>   Individual 'Sister14': Genotypes for 22 markers read
#>   Individual 'Sister15': Genotypes for 22 markers read
#>   Individual 'Sister16': Genotypes for 22 markers read
#>   Individual 'Sister17': Genotypes for 22 markers read
#>   Individual 'Sister18': Genotypes for 22 markers read
#>   Individual 'Sister19': Genotypes for 22 markers read
#>   Individual 'Sister20': Genotypes for 22 markers read
#>   Individual 'Sister21': Genotypes for 22 markers read
#>   Individual 'Sister22': Genotypes for 22 markers read
#>   Individual 'Sister23': Genotypes for 22 markers read
#>   Individual 'Sister24': Genotypes for 22 markers read
#>   Individual 'Sister25': Genotypes for 22 markers read
#>   Individual 'Sister26': Genotypes for 22 markers read
#>   Individual 'Sister27': Genotypes for 22 markers read
#>   Individual 'Sister28': Genotypes for 22 markers read
#>   Individual 'Sister29': Genotypes for 22 markers read
#>   Individual 'Sister30': Genotypes for 22 markers read
#>   Individual 'Sister31': Genotypes for 22 markers read
#>   Individual 'Sister32': Genotypes for 22 markers read
#>   Individual 'Sister33': Genotypes for 22 markers read
#>   Individual 'Sister34': Genotypes for 22 markers read
#>   Individual 'Sister35': Genotypes for 22 markers read
#>   Individual 'Sister36': Genotypes for 22 markers read
#>   Individual 'Sister37': Genotypes for 22 markers read
#>   Individual 'Sister38': Genotypes for 22 markers read
#>   Individual 'Sister39': Genotypes for 22 markers read
#>   Individual 'Sister40': Genotypes for 22 markers read
#>   Individual 'Sister41': Genotypes for 22 markers read
#>   Individual 'Sister42': Genotypes for 22 markers read
#>   Individual 'Sister43': Genotypes for 22 markers read
#>   Individual 'Sister44': Genotypes for 22 markers read
#>   Individual 'Sister45': Genotypes for 22 markers read
#>   Individual 'Sister46': Genotypes for 22 markers read
#>   Individual 'Sister47': Genotypes for 22 markers read
#>   Individual 'Sister48': Genotypes for 22 markers read
#>   Individual 'Sister49': Genotypes for 22 markers read
#>   Individual 'Sister50': Genotypes for 22 markers read
#>   Individual 'Sister51': Genotypes for 22 markers read
#>   Individual 'Sister52': Genotypes for 22 markers read
#>   Individual 'Sister53': Genotypes for 22 markers read
#>   Individual 'Sister54': Genotypes for 22 markers read
#>   Individual 'Sister55': Genotypes for 22 markers read
#>   Individual 'Sister56': Genotypes for 22 markers read
#>   Individual 'Sister57': Genotypes for 22 markers read
#>   Individual 'Sister58': Genotypes for 22 markers read
#>   Individual 'Sister59': Genotypes for 22 markers read
#>   Individual 'Sister60': Genotypes for 22 markers read
#>   Individual 'Sister61': Genotypes for 22 markers read
#>   Individual 'Sister62': Genotypes for 22 markers read
#>   Individual 'Sister63': Genotypes for 22 markers read
#>   Individual 'Sister64': Genotypes for 22 markers read
#>   Individual 'Sister65': Genotypes for 22 markers read
#>   Individual 'Sister66': Genotypes for 22 markers read
#>   Individual 'Sister67': Genotypes for 22 markers read
#>   Individual 'Sister68': Genotypes for 22 markers read
#>   Individual 'Sister69': Genotypes for 22 markers read
#>   Individual 'Sister70': Genotypes for 22 markers read
#>   Individual 'Sister71': Genotypes for 22 markers read
#>   Individual 'Sister72': Genotypes for 22 markers read
#>   Individual 'Sister73': Genotypes for 22 markers read
#>   Individual 'Sister74': Genotypes for 22 markers read
#>   Individual 'Sister75': Genotypes for 22 markers read
#>   Individual 'Sister76': Genotypes for 22 markers read
#>   Individual 'Sister77': Genotypes for 22 markers read
#>   Individual 'Sister78': Genotypes for 22 markers read
#>   Individual 'Sister79': Genotypes for 22 markers read
#>   Individual 'Sister80': Genotypes for 22 markers read
#>   Individual 'Sister81': Genotypes for 22 markers read
#>   Individual 'Sister82': Genotypes for 22 markers read
#>   Individual 'Sister83': Genotypes for 22 markers read
#>   Individual 'Sister84': Genotypes for 22 markers read
#>   Individual 'Sister85': Genotypes for 22 markers read
#>   Individual 'Sister86': Genotypes for 22 markers read
#>   Individual 'Sister87': Genotypes for 22 markers read
#>   Individual 'Sister88': Genotypes for 22 markers read
#>   Individual 'Sister89': Genotypes for 22 markers read
#>   Individual 'Sister90': Genotypes for 22 markers read
#>   Individual 'Sister91': Genotypes for 22 markers read
#>   Individual 'Sister92': Genotypes for 22 markers read
#>   Individual 'Sister93': Genotypes for 22 markers read
#>   Individual 'Sister94': Genotypes for 22 markers read
#>   Individual 'Sister95': Genotypes for 22 markers read
#>   Individual 'Sister96': Genotypes for 22 markers read
#>   Individual 'Sister97': Genotypes for 22 markers read
#>   Individual 'Sister98': Genotypes for 22 markers read
#>   Individual 'Sister99': Genotypes for 22 markers read
#>   Individual 'Sister100': Genotypes for 22 markers read
#> 
#> Number of pedigrees: 0
#> 
#> Database: Norwegian database
#> Number of loci: 22
#>   D3S1358: 11 alleles, model = equal, rate = 0 (unisex)
#>   TH01: 8 alleles, model = equal, rate = 0 (unisex)
#>   D21S11: 19 alleles, model = equal, rate = 0 (unisex)
#>   D18S51: 20 alleles, model = equal, rate = 0 (unisex)
#>   PENTA_E: 18 alleles, model = equal, rate = 0 (unisex)
#>   D5S818: 9 alleles, model = equal, rate = 0 (unisex)
#>   D13S317: 9 alleles, model = equal, rate = 0 (unisex)
#>   D7S820: 15 alleles, model = equal, rate = 0 (unisex)
#>   D16S539: 9 alleles, model = equal, rate = 0 (unisex)
#>   CSF1PO: 10 alleles, model = equal, rate = 0 (unisex)
#>   PENTA_D: 16 alleles, model = equal, rate = 0 (unisex)
#>   VWA: 12 alleles, model = equal, rate = 0 (unisex)
#>   D8S1179: 10 alleles, model = equal, rate = 0 (unisex)
#>   TPOX: 8 alleles, model = equal, rate = 0 (unisex)
#>   FGA: 21 alleles, model = equal, rate = 0 (unisex)
#>   D12S391: 19 alleles, model = equal, rate = 0 (unisex)
#>   SE33: 50 alleles, model = equal, rate = 0 (unisex)
#>   D10S1248: 7 alleles, model = equal, rate = 0 (unisex)
#>   D1S1656: 14 alleles, model = equal, rate = 0 (unisex)
#>   D2S1338: 11 alleles, model = equal, rate = 0 (unisex)
#>   D22S1045: 8 alleles, model = equal, rate = 0 (unisex)
#>   D2S441: 9 alleles, model = equal, rate = 0 (unisex)
#> 
#> *** Reading DVI section ***
#> Unidentified persons: 100
#> Error in asFamiliasPedigree(as.character(id), 0, 0, as.integer(sex)): 'list' object cannot be coerced to type 'integer'

Created on 2020-02-12 by the reprex package (v0.3.0)

x =forrel::readFam("http://familias.name/BookKEP/Solution3_5-3.2.9.fam") 
#> Familias version: 3.2.9 (DVI)
#> Read DVI: Yes
#> 
#> Number of individuals (excluding 'extras'): 0
#> 
#> Number of pedigrees: 0
#> 
#> Database: Norwegian database
#> Number of loci: 22
#>   D3S1358: 11 alleles, model = equal, rate = 0 (unisex)
#>   TH01: 8 alleles, model = equal, rate = 0 (unisex)
#>   D21S11: 19 alleles, model = equal, rate = 0 (unisex)
#>   D18S51: 20 alleles, model = equal, rate = 0 (unisex)
#>   PENTA_E: 18 alleles, model = equal, rate = 0 (unisex)
#>   D5S818: 9 alleles, model = equal, rate = 0 (unisex)
#>   D13S317: 9 alleles, model = equal, rate = 0 (unisex)
#>   D7S820: 15 alleles, model = equal, rate = 0 (unisex)
#>   D16S539: 9 alleles, model = equal, rate = 0 (unisex)
#>   CSF1PO: 10 alleles, model = equal, rate = 0 (unisex)
#>   PENTA_D: 16 alleles, model = equal, rate = 0 (unisex)
#>   VWA: 12 alleles, model = equal, rate = 0 (unisex)
#>   D8S1179: 10 alleles, model = equal, rate = 0 (unisex)
#>   TPOX: 8 alleles, model = equal, rate = 0 (unisex)
#>   FGA: 21 alleles, model = equal, rate = 0 (unisex)
#>   D12S391: 19 alleles, model = equal, rate = 0 (unisex)
#>   SE33: 50 alleles, model = equal, rate = 0 (unisex)
#>   D10S1248: 7 alleles, model = equal, rate = 0 (unisex)
#>   D1S1656: 14 alleles, model = equal, rate = 0 (unisex)
#>   D2S1338: 11 alleles, model = equal, rate = 0 (unisex)
#>   D22S1045: 8 alleles, model = equal, rate = 0 (unisex)
#>   D2S441: 9 alleles, model = equal, rate = 0 (unisex)
#> 
#> *** Reading DVI section ***
#> Unidentified persons: 100
#>   Sister1
#>   Sister2
#>   Sister3
#>   Sister4
#>   Sister5
#>   Sister6
#>   Sister7
#>   Sister8
#>   Sister9
#>   Sister10
#>   Sister11
#>   Sister12
#>   Sister13
#>   Sister14
#>   Sister15
#>   Sister16
#>   Sister17
#>   Sister18
#>   Sister19
#>   Sister20
#>   Sister21
#>   Sister22
#>   Sister23
#>   Sister24
#>   Sister25
#>   Sister26
#>   Sister27
#>   Sister28
#>   Sister29
#>   Sister30
#>   Sister31
#>   Sister32
#>   Sister33
#>   Sister34
#>   Sister35
#>   Sister36
#>   Sister37
#>   Sister38
#>   Sister39
#>   Sister40
#>   Sister41
#>   Sister42
#>   Sister43
#>   Sister44
#>   Sister45
#>   Sister46
#>   Sister47
#>   Sister48
#>   Sister49
#>   Sister50
#>   Sister51
#>   Sister52
#>   Sister53
#>   Sister54
#>   Sister55
#>   Sister56
#>   Sister57
#>   Sister58
#>   Sister59
#>   Sister60
#>   Sister61
#>   Sister62
#>   Sister63
#>   Sister64
#>   Sister65
#>   Sister66
#>   Sister67
#>   Sister68
#>   Sister69
#>   Sister70
#>   Sister71
#>   Sister72
#>   Sister73
#>   Sister74
#>   Sister75
#>   Sister76
#>   Sister77
#>   Sister78
#>   Sister79
#>   Sister80
#>   Sister81
#>   Sister82
#>   Sister83
#>   Sister84
#>   Sister85
#>   Sister86
#>   Sister87
#>   Sister88
#>   Sister89
#>   Sister90
#>   Sister91
#>   Sister92
#>   Sister93
#>   Sister94
#>   Sister95
#>   Sister96
#>   Sister97
#>   Sister98
#>   Sister99
#>   Sister100
#> 
#> Reference families: 100
#>   Family1 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family2 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family3 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family4 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family5 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family6 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family7 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family8 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family9 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family10 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family11 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family12 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family13 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family14 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family15 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family16 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family17 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family18 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family19 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family20 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family21 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family22 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family23 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family24 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family25 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family26 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family27 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family28 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family29 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family30 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family31 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family32 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family33 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family34 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family35 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family36 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family37 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family38 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family39 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family40 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family41 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family42 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family43 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family44 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family45 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family46 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family47 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family48 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family49 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family50 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family51 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family52 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family53 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family54 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family55 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family56 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family57 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family58 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family59 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family60 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family61 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family62 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family63 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family64 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family65 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family66 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family67 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family68 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family69 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family70 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family71 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family72 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family73 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family74 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family75 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family76 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family77 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family78 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family79 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family80 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family81 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family82 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family83 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family84 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family85 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family86 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family87 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family88 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family89 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family90 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family91 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family92 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family93 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family94 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family95 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family96 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family97 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family98 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family99 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#>   Family100 (3 persons, 2 pedigrees)
#>     Reference pedigree
#>     Missing person
#> 
#> Converting to `ped` format
#> *** Finished DVI section ***

Created on 2020-02-12 by the reprex package (v0.3.0)

Created on 2020-02-12 by the reprex package (v0.3.0)

magnusdv commented 4 years ago

Thanks again (sorry for closing the previous issue - feel free to re-open when issues are closely related!)

This was caused by missing "Gender" fields in the DVI section in the old file. I've safeguarded against this now, so the two versions are the same:

library(forrel)
#> Loading required package: pedtools

old = readFam("http://familias.name/BookKEP/Solution3_5.fam", verbose = F)
new = readFam("http://familias.name/BookKEP/Solution3_5-3.2.9.fam", verbose = F)

all.equal(old, new)
#> [1] TRUE

Created on 2020-02-12 by the reprex package (v0.3.0)

thoree commented 4 years ago

Great!