Skip to content

Instantly share code, notes, and snippets.

@cth
Last active May 13, 2016 07:01
Show Gist options
  • Save cth/a2f14830bc88a668931b0c08a9c82ac7 to your computer and use it in GitHub Desktop.
Save cth/a2f14830bc88a668931b0c08a9c82ac7 to your computer and use it in GitHub Desktop.
Julia script to extract regions/individuals from imputed data in vcf format to a dosage table format convenient for asssociation analyses.

Extract Dosage Table

A Julia script to extract regions/individuals from imputed data in vcf format as produced by vcf-misc-tools to a dosage table format convenient for asssociation analyses.

The computionally/IO heavy parts are submitted via cluster grid engine via qsub.

Installation

To install type:

git clone https://gist.github.com/cth/a2f14830bc88a668931b0c08a9c82ac7 myworkdir

This depends on my other tools:

As well as some Julia packages: DataFrames, GZip and Glob

These are automatically installed by the script,.

The dependencies which are not automatically installed are

  • julia (>= 0.4)
  • vcftools (>= 0.1.15)
  • ruby (>= ver 1.9)

Running

Edit extract_dosage_table and change settings in the beginning of your file to fit your needs.

################################################################
### SETTINGS (you may need to change these)

# The library where the exomchup imputations reside
imputation_directory="/emc/cbmr/san7/fng514/imputation/exomchip"

# A bedfile containing all the regions/snps to extract
# Note that the output files will match the name of this 
# file, i.e., they will be called bp_snps.info and bp_snps.dosage
bedfile = "bp_snps.bed"

# List of individuals ids to keep in final files
individual_ids="health06_particids.txt"

################ END OF SETTINGS ###############################

within workdir run:

julia extract_dosage_table

or

nohup julia extract_dosage_table &

if you are not inclined to watch it finish (it may take a while since the script waits for queued jobs to finished before exiting).

1 10796866 10796866 rs880315
1 11850365 11850365 rs4846049
1 11862778 11862778 rs17367504
1 11905974 11905974 rs5068
1 113190807 113190807 rs17030613
1 113216543 113216543 rs2932538
1 204518842 204518842 rs4245739
1 230848702 230848702 rs2004776
2 26914364 26914364 rs1275988
2 164906820 164906820 rs16849225
2 164915208 164915208 rs13002573
2 164963486 164963486 rs1446468
2 165043460 165043460 rs6712094
2 183224127 183224127 rs16823124
3 11290122 11290122 rs347591
3 27537909 27537909 rs13082711
3 41877414 41877414 rs3774372
3 47927484 47927484 rs319690
3 48197614 48197614 rs6797587
3 163737250 163737250 rs16833934
3 169100886 169100886 rs419076
4 54799245 54799245 rs871606
4 81164723 81164723 rs1458038
4 103188709 103188709 rs13107325
4 111381638 111381638 rs6825911
4 156645513 156645513 rs13139571
5 32714270 32714270 rs1421811
5 32815028 32815028 rs1173771
5 157845402 157845402 rs11953630
6 26091179 26091179 rs1799945
6 31616366 31616366 rs805303
6 32628428 32628428 rs2854275
6 43280713 43280713 rs10948071
6 127115454 127115454 rs13209747
6 151004770 151004770 rs17080102
7 27337867 27337867 rs17428471
7 46008110 46008110 rs11977526
7 92264410 92264410 rs2282978
7 106411858 106411858 rs17477177
7 150690176 150690176 rs3918226
7 151415041 151415041 rs10224002
8 11433909 11433909 rs2898290
8 11452177 11452177 rs4841569
8 95103497 95103497 rs2446849
8 120435812 120435812 rs2071518
10 18419972 18419972 rs4373814
10 18707448 18707448 rs1813353
10 63467553 63467553 rs4590817
10 63524591 63524591 rs1530440
10 75855842 75855842 rs4746172
10 95895940 95895940 rs932764
10 104846178 104846178 rs11191548
10 115781527 115781527 rs2782980
10 115805056 115805056 rs1801253
11 1905292 1905292 rs661348
11 2016908 2016908 rs217727
11 10350538 10350538 rs7129220
11 16250183 16250183 rs1401454
11 16365282 16365282 rs2014408
11 16902268 16902268 rs381815
11 17351683 17351683 rs757081
11 65353906 65353906 rs4601790
11 65408937 65408937 rs3741378
11 100593538 100593538 rs633185
11 130273230 130273230 rs11222084
12 54443090 54443090 rs7297416
12 90060586 90060586 rs17249754
12 111884608 111884608 rs3184504
12 112817783 112817783 rs11066280
12 115352731 115352731 rs2384550
12 115387796 115387796 rs10850411
12 115552437 115552437 rs35444
15 48914926 48914926 rs1036477
15 75077367 75077367 rs1378942
15 91437388 91437388 rs2521501
16 69640217 69640217 rs33063
17 43208121 43208121 rs12946454
17 45013271 45013271 rs17608766
17 47402807 47402807 rs12940887
20 10969030 10969030 rs1327235
20 57751117 57751117 rs6015450
16 20365654 20365654 rs13333226
#!/home/fng514/bin/julia
# A Julia script to extract regions/individuals from imputed data in vcf format
# to a dosage table format convenient for asssociation analyses.
# The computionally/IO heavy parts are submitted via cluster grid engine via qsub.
#
# This depends on my other tools:
# vcf-misc-tools (https://github.com/cth/vcf-misc-tools)
# ClusterSubmitExternal (https://github.com/cth/ClusterSubmitExternal.jl)
#
# As well as some Julia packages: DataFrames, GZip and Glob
#
# These are automatically installed by the script,.
#
# The dependencies which are not automatically installed are
# - julia (>= 0.4)
# - vcftools (>= 0.1.15)
# - ruby (>= ver 1.9)
#
# Christian Theil Have, 2016.
################################################################
### SETTINGS (you may need to change these)
# The library where the exomchup imputations reside
imputation_directory="/emc/cbmr/san7/fng514/imputation/exomchip"
# A bedfile containing all the regions/snps to extract
# Note that the output files will match the name of this
# file, i.e., they will be called bp_snps.info and bp_snps.dosage
bedfile = "bp_snps.bed"
# List of individuals ids to keep in final files
individual_ids="health06_particids.txt"
################ END OF SETTINGS ###############################
# Make sure you have these packages installed
map(["DataFrames", "GZip","Glob"]) do pkg
if Pkg.installed(pkg) == nothing
Pkg.add(pkg)
end
end
# This one you have to install from github (for now, at least)
if Pkg.installed("ClusterSubmitExternal") == nothing
Pkg.clone("[email protected]:cth/ClusterSubmitExternal.jl.git")
end
# Load packages appropriately
using DataFrames
import GZip
using Glob
using ClusterSubmitExternal
# utility to print selected
echo(x) = (println(x); return(x))
# Read regions from bed file
regions=readtable(bedfile,header=false,separator='\t')
# Derive the set of snps and the set of chromosomes
chromosomes = Set(unique(regions[:x1]))
#for chr in chromosomes
# 1. extract relevant snps by positions
# 2. extract stratified individuals only
# 3. bgzip vcf
# 4. tabix indexing of vcf
jobs = map(chromosomes) do chr
`vcftools --gzvcf $imputation_directory/VCFs_by_chromosome/chr$chr.vcf.gz --bed $bedfile --recode --recode-INFO-all --out tmp.extract.$chr` &
`vcftools --vcf tmp.extract.$chr.recode.vcf --keep $individual_ids --recode --recode-INFO-all --out tmp.stratified.$chr` &
`bgzip tmp.stratified.$chr.recode.vcf` &
`tabix tmp.stratified.$chr.recode.vcf.gz` |> echo |> qsub
end
# Wait for queued jobs to finish
for job in jobs
qwait(job)
end
# Custom merge cause vcf-merge suxx and
using GZip
global first_vcf = true
open("tmp.merged.vcf", "w") do outvcf
for vcf in glob(glob"tmp.stratified.*.recode.vcf.gz")
GZip.open(vcf) do vcf
for line in eachline(vcf)
if first_vcf
write(outvcf,line)
elseif ismatch(r"^\d+",line)
write(outvcf,line)
end
end
end
global first_vcf = false
end
end
# Ensure that we have vcf-misc-tools installed:
if !isdir("vcf-misc-tools")
`git clone https://github.com/cth/vcf-misc-tools` |> echo |> run
end
# Convert the merged vcf to a dosage table:
input_prefix=match(r"^(.+)\.bed$", "bp_snps.bed")[1]
`vcf-misc-tools/vcf-to-dosage-table --vcf tmp.merged.vcf -i $input_prefix.info -d $input_prefix.dosage` |> echo |> qsub |> qwait
22x1
22x2
22x4
22x5
22x7
22x11
22x13
22x14
22x16
22x20
22x22
22x29
22x31
22x34
22x36
22x38
22x39
22x40
22x42
22x44
22x46
22x47
22x48
22x49
22x50
22x52
22x56
22x58
22x59
22x63
22x64
22x66
22x67
22x68
22x69
22x70
22x74
22x79
22x80
22x81
22x83
22x84
22x86
22x88
22x89
22x91
22x92
22x93
22x95
22x101
22x103
22x104
22x105
22x107
22x108
22x110
22x112
22x113
22x115
22x116
22x118
22x119
22x121
22x124
22x126
22x127
22x129
22x130
22x134
22x135
22x140
22x143
22x144
22x146
22x147
22x152
22x154
22x155
22x156
22x157
22x159
22x162
22x164
22x166
22x168
22x171
22x173
22x178
22x182
22x184
22x185
22x189
22x192
22x195
22x200
22x204
22x206
22x208
22x210
22x212
22x214
22x215
22x216
22x218
22x220
22x222
22x227
22x229
22x232
22x233
22x236
22x240
22x242
22x244
22x245
22x247
22x248
22x249
22x256
22x267
22x273
22x276
22x278
22x280
22x281
22x282
22x283
22x285
22x287
22x288
22x291
22x292
22x293
22x295
22x300
22x306
22x310
22x314
22x315
22x316
22x321
22x322
22x323
22x324
22x327
22x328
22x329
22x330
22x332
22x335
22x336
22x339
22x340
22x344
22x345
22x346
22x348
22x349
22x350
22x352
22x355
22x356
22x357
22x359
22x360
22x361
22x363
22x365
22x367
22x368
22x370
22x374
22x376
22x379
22x382
22x383
22x384
22x387
22x392
22x393
22x395
22x396
22x398
22x403
22x406
22x408
22x409
22x411
22x412
22x418
22x421
22x422
22x423
22x425
22x426
22x428
22x429
22x432
22x436
22x442
22x443
22x445
22x448
22x453
22x455
22x459
22x470
22x472
22x474
22x475
22x477
22x479
22x486
22x489
22x491
22x492
22x495
22x497
22x498
22x499
22x500
22x501
22x502
22x511
22x519
22x520
22x524
22x528
22x529
22x535
22x538
22x539
22x543
22x544
22x547
22x549
22x550
22x554
22x555
22x558
22x559
22x563
22x564
22x566
22x574
22x575
22x576
22x577
22x580
22x583
22x588
22x591
22x593
22x595
22x596
22x597
22x598
22x601
22x603
22x606
22x607
22x609
22x610
22x612
22x613
22x616
22x617
22x622
22x623
22x624
22x632
22x636
22x640
22x642
22x644
22x648
22x650
22x651
22x655
22x656
22x658
22x659
22x660
22x661
22x665
22x666
22x668
22x669
22x670
22x675
22x676
22x678
22x681
22x682
22x683
22x684
22x686
22x687
22x688
22x692
22x694
22x695
22x700
22x701
22x703
22x706
22x708
22x709
22x711
22x712
22x713
22x714
22x716
22x719
22x720
22x724
22x725
22x727
22x729
22x731
22x735
22x736
22x740
22x742
22x744
22x746
22x747
22x749
22x750
22x751
22x752
22x753
22x754
22x755
22x756
22x757
22x762
22x764
22x769
22x771
22x775
22x782
22x783
22x785
22x789
22x790
22x793
22x794
22x796
22x798
22x799
22x800
22x806
22x809
22x810
22x812
22x814
22x816
22x819
22x821
22x825
22x826
22x828
22x831
22x834
22x836
22x837
22x840
22x841
22x842
22x845
22x846
22x850
22x851
22x853
22x856
22x858
22x862
22x863
22x864
22x867
22x869
22x871
22x872
22x875
22x883
22x885
22x887
22x889
22x890
22x892
22x893
22x896
22x902
22x904
22x905
22x910
22x911
22x912
22x914
22x919
22x927
22x930
22x932
22x934
22x935
22x936
22x942
22x944
22x946
22x947
22x949
22x954
22x957
22x963
22x966
22x968
22x969
22x970
22x974
22x975
22x979
22x980
22x983
22x990
22x994
22x996
22x999
22x1002
22x1006
22x1009
22x1010
22x1012
22x1014
22x1016
22x1020
22x1022
22x1023
22x1027
22x1028
22x1030
22x1032
22x1035
22x1038
22x1040
22x1042
22x1045
22x1050
22x1051
22x1054
22x1060
22x1061
22x1062
22x1065
22x1066
22x1067
22x1069
22x1072
22x1074
22x1075
22x1077
22x1078
22x1079
22x1080
22x1082
22x1083
22x1086
22x1089
22x1090
22x1096
22x1098
22x1104
22x1108
22x1116
22x1117
22x1119
22x1121
22x1123
22x1124
22x1126
22x1128
22x1131
22x1134
22x1135
22x1137
22x1140
22x1141
22x1145
22x1148
22x1150
22x1157
22x1158
22x1159
22x1160
22x1161
22x1162
22x1168
22x1171
22x1173
22x1174
22x1175
22x1178
22x1184
22x1186
22x1190
22x1192
22x1193
22x1194
22x1196
22x1197
22x1198
22x1200
22x1203
22x1205
22x1206
22x1210
22x1211
22x1215
22x1219
22x1226
22x1230
22x1232
22x1233
22x1234
22x1235
22x1236
22x1237
22x1238
22x1239
22x1241
22x1242
22x1243
22x1244
22x1247
22x1250
22x1255
22x1256
22x1257
22x1258
22x1263
22x1265
22x1266
22x1268
22x1269
22x1272
22x1274
22x1277
22x1280
22x1285
22x1286
22x1288
22x1290
22x1292
22x1293
22x1294
22x1296
22x1298
22x1301
22x1307
22x1310
22x1312
22x1315
22x1319
22x1324
22x1326
22x1328
22x1330
22x1334
22x1339
22x1343
22x1344
22x1349
22x1350
22x1352
22x1355
22x1356
22x1360
22x1362
22x1364
22x1368
22x1370
22x1374
22x1375
22x1376
22x1377
22x1378
22x1381
22x1384
22x1385
22x1387
22x1394
22x1397
22x1398
22x1400
22x1402
22x1403
22x1404
22x1405
22x1406
22x1408
22x1411
22x1413
22x1414
22x1416
22x1418
22x1419
22x1420
22x1423
22x1424
22x1426
22x1429
22x1430
22x1431
22x1436
22x1437
22x1438
22x1441
22x1442
22x1444
22x1445
22x1450
22x1451
22x1452
22x1453
22x1455
22x1456
22x1457
22x1458
22x1459
22x1462
22x1464
22x1469
22x1477
22x1480
22x1482
22x1483
22x1484
22x1486
22x1490
22x1491
22x1493
22x1503
22x1507
22x1508
22x1512
22x1519
22x1520
22x1526
22x1530
22x1531
22x1534
22x1537
22x1538
22x1546
22x1548
22x1549
22x1553
22x1556
22x1562
22x1563
22x1566
22x1567
22x1571
22x1575
22x1576
22x1578
22x1580
22x1582
22x1584
22x1586
22x1588
22x1590
22x1592
22x1598
22x1600
22x1603
22x1604
22x1614
22x1615
22x1616
22x1620
22x1621
22x1622
22x1625
22x1627
22x1628
22x1629
22x1631
22x1633
22x1636
22x1638
22x1639
22x1640
22x1641
22x1642
22x1648
22x1650
22x1651
22x1652
22x1654
22x1659
22x1665
22x1670
22x1674
22x1675
22x1676
22x1678
22x1680
22x1682
22x1683
22x1685
22x1686
22x1687
22x1692
22x1693
22x1694
22x1700
22x1702
22x1704
22x1706
22x1711
22x1719
22x1721
22x1726
22x1728
22x1730
22x1734
22x1735
22x1736
22x1740
22x1743
22x1745
22x1746
22x1748
22x1749
22x1752
22x1754
22x1755
22x1758
22x1761
22x1762
22x1765
22x1766
22x1767
22x1771
22x1772
22x1774
22x1779
22x1780
22x1781
22x1782
22x1783
22x1784
22x1787
22x1788
22x1791
22x1793
22x1795
22x1799
22x1800
22x1801
22x1802
22x1804
22x1807
22x1808
22x1809
22x1811
22x1813
22x1818
22x1822
22x1828
22x1830
22x1832
22x1834
22x1836
22x1837
22x1840
22x1842
22x1844
22x1845
22x1846
22x1847
22x1848
22x1850
22x1854
22x1856
22x1858
22x1862
22x1863
22x1865
22x1866
22x1868
22x1874
22x1875
22x1876
22x1880
22x1884
22x1886
22x1889
22x1890
22x1892
22x1894
22x1895
22x1896
22x1902
22x1904
22x1905
22x1906
22x1907
22x1908
22x1910
22x1915
22x1916
22x1920
22x1921
22x1922
22x1924
22x1929
22x1930
22x1931
22x1933
22x1935
22x1938
22x1939
22x1940
22x1946
22x1947
22x1948
22x1951
22x1952
22x1954
22x1959
22x1960
22x1964
22x1966
22x1968
22x1969
22x1971
22x1973
22x1974
22x1975
22x1976
22x1977
22x1981
22x1982
22x1983
22x1992
22x1996
22x1998
22x2002
22x2004
22x2005
22x2006
22x2008
22x2010
22x2011
22x2016
22x2019
22x2021
22x2022
22x2024
22x2026
22x2029
22x2032
22x2033
22x2034
22x2036
22x2039
22x2044
22x2046
22x2047
22x2051
22x2052
22x2057
22x2059
22x2061
22x2062
22x2063
22x2065
22x2066
22x2067
22x2068
22x2069
22x2070
22x2074
22x2079
22x2085
22x2088
22x2089
22x2090
22x2091
22x2094
22x2095
22x2098
22x2099
22x2102
22x2103
22x2104
22x2108
22x2117
22x2120
22x2122
22x2123
22x2129
22x2130
22x2134
22x2139
22x2140
22x2143
22x2144
22x2145
22x2147
22x2150
22x2152
22x2153
22x2154
22x2155
22x2156
22x2157
22x2159
22x2163
22x2164
22x2165
22x2166
22x2174
22x2176
22x2180
22x2181
22x2187
22x2188
22x2189
22x2190
22x2194
22x2196
22x2197
22x2205
22x2210
22x2213
22x2214
22x2216
22x2220
22x2221
22x2225
22x2226
22x2230
22x2235
22x2241
22x2242
22x2244
22x2248
22x2251
22x2258
22x2259
22x2260
22x2261
22x2262
22x2269
22x2270
22x2274
22x2276
22x2277
22x2281
22x2282
22x2284
22x2285
22x2287
22x2290
22x2297
22x2298
22x2305
22x2312
22x2315
22x2316
22x2317
22x2318
22x2320
22x2322
22x2328
22x2331
22x2332
22x2334
22x2337
22x2338
22x2340
22x2343
22x2344
22x2347
22x2348
22x2353
22x2354
22x2355
22x2361
22x2362
22x2365
22x2366
22x2367
22x2369
22x2371
22x2373
22x2376
22x2380
22x2386
22x2390
22x2391
22x2395
22x2400
22x2402
22x2409
22x2410
22x2411
22x2413
22x2416
22x2417
22x2418
22x2420
22x2421
22x2422
22x2424
22x2430
22x2431
22x2432
22x2435
22x2436
22x2438
22x2439
22x2440
22x2441
22x2442
22x2444
22x2446
22x2452
22x2455
22x2457
22x2458
22x2461
22x2466
22x2467
22x2471
22x2473
22x2474
22x2476
22x2477
22x2480
22x2482
22x2483
22x2484
22x2486
22x2487
22x2493
22x2499
22x2501
22x2506
22x2510
22x2512
22x2513
22x2517
22x2518
22x2527
22x2528
22x2531
22x2535
22x2537
22x2539
22x2549
22x2552
22x2554
22x2557
22x2558
22x2560
22x2561
22x2563
22x2564
22x2565
22x2567
22x2571
22x2572
22x2573
22x2574
22x2576
22x2581
22x2583
22x2584
22x2590
22x2592
22x2593
22x2594
22x2603
22x2605
22x2606
22x2611
22x2613
22x2614
22x2619
22x2620
22x2622
22x2623
22x2624
22x2625
22x2630
22x2636
22x2642
22x2643
22x2649
22x2652
22x2654
22x2656
22x2658
22x2659
22x2660
22x2664
22x2665
22x2666
22x2667
22x2668
22x2674
22x2675
22x2677
22x2678
22x2682
22x2683
22x2686
22x2688
22x2696
22x2701
22x2702
22x2706
22x2707
22x2709
22x2716
22x2717
22x2718
22x2719
22x2720
22x2722
22x2724
22x2727
22x2730
22x2732
22x2733
22x2734
22x2735
22x2742
22x2743
22x2744
22x2749
22x2755
22x2756
22x2760
22x2761
22x2762
22x2772
22x2773
22x2774
22x2776
22x2778
22x2779
22x2782
22x2787
22x2788
22x2794
22x2796
22x2797
22x2801
22x2802
22x2803
22x2804
22x2805
22x2806
22x2811
22x2813
22x2816
22x2823
22x2824
22x2826
22x2827
22x2829
22x2835
22x2841
22x2842
22x2847
22x2848
22x2852
22x2855
22x2856
22x2858
22x2861
22x2867
22x2868
22x2869
22x2872
22x2877
22x2878
22x2879
22x2882
22x2884
22x2888
22x2893
22x2894
22x2895
22x2896
22x2897
22x2899
22x2901
22x2902
22x2904
22x2905
22x2909
22x2910
22x2911
22x2913
22x2915
22x2919
22x2921
22x2922
22x2932
22x2934
22x2935
22x2937
22x2938
22x2940
22x2943
22x2944
22x2945
22x2947
22x2948
22x2949
22x2953
22x2957
22x2965
22x2967
22x2968
22x2970
22x2973
22x2976
22x2978
22x2979
22x2982
22x2984
22x2987
22x2988
22x2990
22x2991
22x2992
22x2996
22x2997
22x3000
22x3005
22x3008
22x3009
22x3010
22x3011
22x3012
22x3013
22x3017
22x3019
22x3021
22x3023
22x3031
22x3034
22x3035
22x3037
22x3038
22x3044
22x3049
22x3051
22x3052
22x3053
22x3056
22x3057
22x3060
22x3064
22x3065
22x3066
22x3067
22x3068
22x3070
22x3074
22x3078
22x3079
22x3081
22x3083
22x3087
22x3088
22x3090
22x3095
22x3097
22x3099
22x3102
22x3103
22x3106
22x3107
22x3108
22x3109
22x3112
22x3114
22x3119
22x3122
22x3123
22x3125
22x3126
22x3128
22x3129
22x3130
22x3133
22x3134
22x3135
22x3136
22x3138
22x3142
22x3148
22x3156
22x3159
22x3167
22x3168
22x3169
22x3171
22x3172
22x3173
22x3174
22x3177
22x3178
22x3180
22x3183
22x3184
22x3189
22x3190
22x3191
22x3192
22x3197
22x3199
22x3200
22x3203
22x3204
22x3207
22x3208
22x3209
22x3210
22x3212
22x3214
22x3221
22x3222
22x3224
22x3225
22x3226
22x3227
22x3230
22x3231
22x3232
22x3234
22x3236
22x3237
22x3242
22x3244
22x3245
22x3246
22x3248
22x3249
22x3253
22x3254
22x3255
22x3260
22x3262
22x3263
22x3265
22x3268
22x3273
22x3274
22x3275
22x3276
22x3281
22x3286
22x3287
22x3290
22x3291
22x3292
22x3295
22x3297
22x3298
22x3300
22x3303
22x3304
22x3305
22x3312
22x3316
22x3321
22x3323
22x3326
22x3330
22x3331
22x3332
22x3336
22x3339
22x3341
22x3342
22x3344
22x3345
22x3349
22x3351
22x3352
22x3354
22x3363
22x3364
22x3366
22x3375
22x3377
22x3381
22x3383
22x3385
22x3386
22x3388
22x3391
22x3395
22x3396
22x3397
22x3398
22x3402
22x3414
22x3418
22x3419
22x3421
22x3432
22x3434
22x3441
22x3449
22x3450
22x3451
22x3452
22x3456
22x3457
22x3461
22x3465
22x3466
22x3474
22x3476
22x3477
22x3479
22x3480
22x3481
22x3488
22x3495
22x3500
22x3503
22x3509
22x3510
22x3511
22x3514
22x3530
22x3533
22x3535
22x3537
22x3541
22x3542
22x3543
22x3544
22x3547
22x3550
22x3551
22x3552
22x3554
22x3556
22x3561
22x3564
22x3572
22x3574
22x3578
22x3580
22x3581
22x3587
22x3592
22x3594
22x3597
22x3606
22x3608
22x3614
22x3617
22x3618
22x3621
22x3626
22x3627
22x3630
22x3631
22x3633
22x3635
22x3638
22x3639
22x3641
22x3642
22x3648
22x3650
22x3651
22x3654
22x3657
22x3660
22x3661
22x3662
22x3665
22x3670
22x3673
22x3675
22x3676
22x3679
22x3682
22x3688
22x3690
22x3692
22x3693
22x3694
22x3701
22x3702
22x3706
22x3707
22x3710
22x3711
22x3712
22x3716
22x3717
22x3722
22x3724
22x3725
22x3729
22x3731
22x3734
22x3736
22x3737
22x3738
22x3747
22x3751
22x3753
22x3754
22x3757
22x3758
22x3759
22x3762
22x3766
22x3768
22x3769
22x3776
22x3778
22x3780
22x3786
22x3790
22x3794
22x3795
22x3797
22x3802
22x3803
22x3805
22x3806
22x3807
22x3812
22x3814
22x3816
22x3817
22x3819
22x3821
22x3825
22x3830
22x3832
22x3834
22x3839
22x3841
22x3842
22x3843
22x3845
22x3846
22x3850
22x3852
22x3853
22x3858
22x3863
22x3864
22x3869
22x3876
22x3877
22x3878
22x3879
22x3880
22x3882
22x3885
22x3886
22x3888
22x3891
22x3893
22x3894
22x3899
22x3900
22x3903
22x3904
22x3905
22x3908
22x3912
22x3914
22x3917
22x3918
22x3921
22x3924
22x3926
22x3934
22x3937
22x3938
22x3940
22x3942
22x3946
22x3951
22x3952
22x3956
22x3958
22x3959
22x3961
22x3962
22x3964
22x3967
22x3968
22x3971
22x3973
22x3974
22x3976
22x3979
22x3980
22x3982
22x3983
22x3985
22x3986
22x3987
22x3990
22x3994
22x3997
22x4000
22x4003
22x4006
22x4007
22x4012
22x4018
22x4021
22x4023
22x4024
22x4026
22x4034
22x4036
22x4038
22x4039
22x4040
22x4042
22x4043
22x4044
22x4045
22x4046
22x4049
22x4053
22x4054
22x4056
22x4057
22x4058
22x4059
22x4060
22x4062
22x4065
22x4067
22x4069
22x4072
22x4079
22x4082
22x4083
22x4086
22x4088
22x4090
22x4091
22x4092
22x4094
22x4098
22x4099
22x4102
22x4109
22x4110
22x4111
22x4112
22x4114
22x4122
22x4124
22x4128
22x4130
22x4132
22x4138
22x4139
22x4141
22x4146
22x4147
22x4149
22x4151
22x4154
22x4155
22x4156
22x4157
22x4158
22x4161
22x4162
22x4166
22x4167
22x4171
22x4172
22x4173
22x4180
22x4187
22x4189
22x4190
22x4197
22x4199
22x4201
22x4203
22x4204
22x4207
22x4208
22x4210
22x4215
22x4216
22x4217
22x4218
22x4220
22x4221
22x4223
22x4225
22x4228
22x4229
22x4230
22x4232
22x4235
22x4238
22x4242
22x4243
22x4245
22x4246
22x4247
22x4250
22x4253
22x4256
22x4257
22x4258
22x4259
22x4261
22x4262
22x4267
22x4268
22x4272
22x4276
22x4279
22x4280
22x4281
22x4282
22x4284
22x4287
22x4289
22x4291
22x4296
22x4300
22x4302
22x4304
22x4308
22x4311
22x4313
22x4315
22x4316
22x4317
22x4322
22x4324
22x4327
22x4328
22x4330
22x4331
22x4334
22x4336
22x4337
22x4338
22x4342
22x4343
22x4344
22x4346
22x4347
22x4349
22x4353
22x4355
22x4358
22x4359
22x4363
22x4364
22x4368
22x4370
22x4371
22x4374
22x4380
22x4381
22x4382
22x4393
22x4396
22x4397
22x4398
22x4400
22x4404
22x4406
22x4410
22x4412
22x4418
22x4421
22x4422
22x4427
22x4428
22x4429
22x4434
22x4435
22x4437
22x4438
22x4443
22x4446
22x4448
22x4450
22x4453
22x4455
22x4465
22x4468
22x4471
22x4475
22x4476
22x4479
22x4485
22x4486
22x4489
22x4490
22x4492
22x4493
22x4494
22x4495
22x4496
22x4498
22x4499
22x4502
22x4504
22x4508
22x4509
22x4513
22x4517
22x4519
22x4520
22x4524
22x4525
22x4526
22x4527
22x4528
22x4529
22x4530
22x4533
22x4536
22x4541
22x4542
22x4546
22x4548
22x4550
22x4552
22x4555
22x4556
22x4557
22x4558
22x4561
22x4562
22x4564
22x4570
22x4571
22x4572
22x4574
22x4581
22x4583
22x4585
22x4586
22x4589
22x4591
22x4592
22x4593
22x4594
22x4596
22x4597
22x4602
22x4604
22x4608
22x4610
22x4611
22x4613
22x4614
22x4616
22x4618
22x4620
22x4623
22x4627
22x4629
22x4630
22x4634
22x4638
22x4640
22x4641
22x4644
22x4645
22x4646
22x4647
22x4651
22x4652
22x4659
22x4662
22x4665
22x4670
22x4674
22x4679
22x4680
22x4681
22x4682
22x4685
22x4686
22x4687
22x4688
22x4690
22x4696
22x4697
22x4698
22x4701
22x4704
22x4705
22x4707
22x4709
22x4710
22x4712
22x4715
22x4716
22x4717
22x4719
22x4720
22x4727
22x4730
22x4731
22x4732
22x4738
22x4739
22x4742
22x4745
22x4747
22x4750
22x4752
22x4756
22x4758
22x4763
22x4764
22x4765
22x4767
22x4769
22x4771
22x4772
22x4774
22x4776
22x4780
22x4781
22x4782
22x4783
22x4785
22x4787
22x4788
22x4789
22x4791
22x4793
22x4794
22x4795
22x4796
22x4797
22x4798
22x4802
22x4805
22x4808
22x4812
22x4813
22x4818
22x4822
22x4824
22x4826
22x4832
22x4835
22x4837
22x4838
22x4839
22x4845
22x4847
22x4850
22x4852
22x4855
22x4856
22x4857
22x4858
22x4859
22x4861
22x4863
22x4865
22x4869
22x4872
22x4876
22x4878
22x4880
22x4881
22x4884
22x4885
22x4887
22x4888
22x4890
22x4893
22x4894
22x4895
22x4896
22x4898
22x4899
22x4901
22x4902
22x4903
22x4904
22x4907
22x4908
22x4914
22x4915
22x4917
22x4922
22x4924
22x4928
22x4929
22x4931
22x4932
22x4933
22x4935
22x4940
22x4941
22x4942
22x4946
22x4950
22x4951
22x4952
22x4953
22x4957
22x4961
22x4967
22x4968
22x4969
22x4970
22x4972
22x4973
22x4979
22x4980
22x4986
22x4988
22x4990
22x4991
22x4994
22x5000
22x5004
22x5006
22x5008
22x5012
22x5015
22x5016
22x5020
22x5023
22x5025
22x5026
22x5027
22x5028
22x5029
22x5030
22x5031
22x5036
22x5038
22x5043
22x5044
22x5052
22x5054
22x5058
22x5059
22x5060
22x5062
22x5063
22x5065
22x5066
22x5067
22x5070
22x5072
22x5073
22x5076
22x5078
22x5082
22x5083
22x5087
22x5091
22x5093
22x5096
22x5098
22x5099
22x5100
22x5102
22x5104
22x5106
22x5107
22x5108
22x5114
22x5116
22x5117
22x5118
22x5123
22x5129
22x5130
22x5133
22x5134
22x5136
22x5138
22x5145
22x5146
22x5147
22x5148
22x5149
22x5152
22x5157
22x5158
22x5160
22x5162
22x5166
22x5174
22x5176
22x5179
22x5180
22x5181
22x5187
22x5190
22x5192
22x5193
22x5202
22x5203
22x5206
22x5211
22x5213
22x5217
22x5218
22x5220
22x5224
22x5228
22x5229
22x5232
22x5234
22x5236
22x5237
22x5240
22x5241
22x5242
22x5243
22x5244
22x5247
22x5253
22x5258
22x5259
22x5263
22x5264
22x5266
22x5268
22x5269
22x5270
22x5272
22x5273
22x5274
22x5275
22x5276
22x5278
22x5281
22x5283
22x5284
22x5286
22x5287
22x5288
22x5290
22x5291
22x5295
22x5296
22x5298
22x5300
22x5303
22x5304
22x5305
22x5308
22x5311
22x5313
22x5314
22x5315
22x5316
22x5317
22x5325
22x5326
22x5328
22x5331
22x5336
22x5337
22x5339
22x5340
22x5341
22x5342
22x5343
22x5344
22x5346
22x5347
22x5349
22x5350
22x5351
22x5353
22x5354
22x5355
22x5357
22x5359
22x5360
22x5363
22x5364
22x5366
22x5368
22x5369
22x5371
22x5373
22x5376
22x5379
22x5380
22x5381
22x5386
22x5388
22x5391
22x5392
22x5393
22x5394
22x5398
22x5399
22x5401
22x5403
22x5404
22x5405
22x5407
22x5409
22x5412
22x5416
22x5417
22x5418
22x5421
22x5422
22x5426
22x5431
22x5432
22x5436
22x5438
22x5440
22x5442
22x5443
22x5448
22x5450
22x5455
22x5461
22x5469
22x5470
22x5473
22x5475
22x5476
22x5477
22x5479
22x5484
22x5487
22x5491
22x5492
22x5494
22x5495
22x5498
22x5503
22x5517
22x5519
22x5520
22x5524
22x5528
22x5529
22x5531
22x5534
22x5535
22x5542
22x5543
22x5544
22x5545
22x5546
22x5547
22x5550
22x5551
22x5553
22x5554
22x5556
22x5561
22x5563
22x5564
22x5566
22x5567
22x5571
22x5576
22x5577
22x5578
22x5579
22x5580
22x5585
22x5587
22x5588
22x5595
22x5596
22x5597
22x5598
22x5600
22x5602
22x5603
22x5604
22x5606
22x5607
22x5608
22x5610
22x5613
22x5616
22x5618
22x5625
22x5627
22x5628
22x5630
22x5631
22x5634
22x5636
22x5642
22x5649
22x5650
22x5653
22x5657
22x5658
22x5661
22x5664
22x5667
22x5673
22x5678
22x5680
22x5682
22x5685
22x5686
22x5689
22x5690
22x5692
22x5694
22x5696
22x5698
22x5702
22x5708
22x5710
22x5711
22x5714
22x5717
22x5719
22x5720
22x5722
22x5723
22x5724
22x5725
22x5728
22x5731
22x5732
22x5733
22x5734
22x5735
22x5745
22x5746
22x5748
22x5752
22x5757
22x5761
22x5764
22x5766
22x5768
22x5774
22x5775
22x5776
22x5777
22x5778
22x5779
22x5781
22x5782
22x5788
22x5790
22x5794
22x5796
22x5797
22x5798
22x5800
22x5804
22x5807
22x5809
22x5810
22x5815
22x5816
22x5821
22x5823
22x5824
22x5827
22x5828
22x5830
22x5832
22x5833
22x5835
22x5839
22x5841
22x5842
22x5845
22x5846
22x5848
22x5850
22x5851
22x5853
22x5855
22x5860
22x5861
22x5862
22x5863
22x5870
22x5871
22x5872
22x5873
22x5874
22x5876
22x5877
22x5879
22x5881
22x5884
22x5887
22x5890
22x5892
22x5893
22x5897
22x5898
22x5899
22x5904
22x5907
22x5908
22x5914
22x5916
22x5918
22x5919
22x5922
22x5926
22x5934
22x5937
22x5938
22x5939
22x5941
22x5942
22x5944
22x5948
22x5949
22x5955
22x5957
22x5958
22x5960
22x5963
22x5970
22x5974
22x5979
22x5982
22x5985
22x5986
22x5991
22x5992
22x5994
22x5995
22x6002
22x6004
22x6013
22x6015
22x6016
22x6019
22x6020
22x6021
22x6022
22x6033
22x6042
22x6056
22x6058
22x6063
22x6066
22x6067
22x6069
22x6072
22x6075
22x6079
22x6080
22x6082
22x6083
22x6085
22x6087
22x6089
22x6090
22x6094
22x6096
22x6097
22x6099
22x6104
22x6105
22x6106
22x6108
22x6112
22x6118
22x6119
22x6120
22x6122
22x6123
22x6124
22x6126
22x6129
22x6132
22x6134
22x6137
22x6138
22x6139
22x6141
22x6142
22x6148
22x6149
22x6154
22x6156
22x6157
22x6159
22x6163
22x6164
22x6168
22x6170
22x6172
22x6179
22x6182
22x6183
22x6184
22x6193
22x6196
22x6198
22x6202
22x6207
22x6209
22x6211
22x6212
22x6215
22x6224
22x6226
22x6229
22x6233
22x6234
22x6238
22x6239
22x6241
22x6245
22x6247
22x6252
22x6257
22x6258
22x6260
22x6262
22x6263
22x6264
22x6266
22x6267
22x6270
22x6272
22x6275
22x6281
22x6282
22x6285
22x6288
22x6289
22x6290
22x6295
22x6296
22x6303
22x6304
22x6308
22x6312
22x6313
22x6314
22x6315
22x6324
22x6326
22x6330
22x6332
22x6333
22x6334
22x6335
22x6336
22x6337
22x6338
22x6340
22x6345
22x6346
22x6347
22x6348
22x6353
22x6359
22x6362
22x6363
22x6366
22x6368
22x6370
22x6377
22x6380
22x6382
22x6389
22x6390
22x6391
22x6393
22x6396
22x6399
22x6400
22x6404
22x6405
22x6406
22x6408
22x6409
22x6410
22x6411
22x6419
22x6421
22x6425
22x6427
22x6428
22x6431
22x6432
22x6433
22x6436
22x6438
22x6439
22x6447
22x6449
22x6451
22x6453
22x6456
22x6458
22x6460
22x6463
22x6470
22x6474
22x6477
22x6478
22x6480
22x6482
22x6483
22x6486
22x6488
22x6493
22x6494
22x6497
22x6506
22x6508
22x6511
22x6515
22x6517
22x6523
22x6524
22x6525
22x6527
22x6528
22x6529
22x6532
22x6533
22x6536
22x6540
22x6546
22x6550
22x6554
22x6555
22x6556
22x6558
22x6561
22x6563
22x6566
22x6567
22x6569
22x6570
22x6572
22x6574
22x6576
22x6577
22x6578
22x6580
22x6582
22x6589
22x6592
22x6594
22x6595
22x6598
22x6601
22x6602
22x6608
22x6611
22x6617
22x6618
22x6626
22x6629
22x6632
22x6634
22x6641
22x6642
22x6644
22x6647
22x6648
22x6650
22x6658
22x6661
22x6662
22x6663
22x6665
22x6666
22x6676
22x6678
22x6680
22x6681
22x6683
22x6685
22x6688
22x6691
22x6695
22x6696
22x6698
22x6699
22x6700
22x6705
22x6706
22x6708
22x6711
22x6713
22x6714
22x6715
22x6716
22x6724
22x6725
22x6726
22x6727
22x6729
22x6730
22x6731
22x6732
22x6735
22x6736
22x6738
22x6741
22x6742
22x6744
22x6746
22x6747
22x6749
22x6751
22x6752
22x6754
22x6757
22x6759
22x6760
22x6762
22x6765
22x6768
22x6769
22x6771
22x6772
22x6773
22x6775
22x6777
22x6782
22x6787
22x6788
22x6790
22x6793
22x6797
22x6799
22x6802
22x6806
22x6807
22x6809
22x6817
22x6831
22x6832
22x6835
22x6838
22x6844
22x6845
22x6846
22x6847
22x6848
22x6849
22x6850
22x6851
22x6860
22x6861
22x6866
22x6872
22x6882
22x6884
22x6887
22x6888
22x6890
22x6891
22x6895
22x6903
22x6906
22x6908
22x6909
22x6911
22x6922
22x6925
22x6930
22x6931
22x6936
22x6939
22x6940
22x6941
22x6943
22x6944
22x6945
22x6946
22x6950
22x6951
22x6952
22x6960
22x6962
22x6963
22x6964
22x6966
22x6967
22x6968
22x6976
22x6982
22x6983
22x6986
22x6989
22x6991
22x6995
22x6996
22x6998
22x7000
22x7001
22x7003
22x7004
22x7008
22x7009
22x7010
22x7011
22x7014
22x7018
22x7020
22x7022
22x7032
22x7035
22x7038
22x7042
22x7047
22x7050
22x7052
22x7053
22x7054
22x7059
22x7060
22x7062
22x7063
22x7065
22x7066
22x7070
22x7071
22x7073
22x7076
22x7077
22x7081
22x7085
22x7086
22x7088
22x7091
22x7093
22x7094
22x7095
22x7097
22x7098
22x7099
22x7101
22x7105
22x7106
22x7111
22x7112
22x7113
22x7116
22x7117
22x7120
22x7121
22x7124
22x7126
22x7127
22x7129
22x7132
22x7135
22x7136
22x7137
22x7138
22x7139
22x7142
22x7145
22x7150
22x7154
22x7155
22x7156
22x7158
22x7159
22x7161
22x7162
22x7164
22x7165
22x7167
22x7169
22x7170
22x7180
22x7181
22x7184
22x7186
22x7191
22x7194
22x7199
22x7200
22x7206
22x7210
22x7211
22x7213
22x7216
22x7218
22x7222
22x7225
22x7232
22x7235
22x7236
22x7239
22x7241
22x7242
22x7243
22x7244
22x7246
22x7247
22x7250
22x7254
22x7258
22x7261
22x7262
22x7264
22x7271
22x7272
22x7273
22x7274
22x7276
22x7277
22x7279
22x7280
22x7282
22x7285
22x7288
22x7289
22x7290
22x7291
22x7295
22x7296
22x7300
22x7305
22x7307
22x7309
22x7310
22x7314
22x7315
22x7316
22x7320
22x7324
22x7330
22x7334
22x7337
22x7338
22x7340
22x7342
22x7345
22x7346
22x7350
22x7351
22x7354
22x7357
22x7359
22x7360
22x7362
22x7364
22x7365
22x7369
22x7372
22x7373
22x7374
22x7375
22x7380
22x7385
22x7390
22x7396
22x7404
22x7408
22x7410
22x7419
22x7420
22x7421
22x7422
22x7423
22x7426
22x7428
22x7432
22x7437
22x7441
22x7442
22x7443
22x7444
22x7452
22x7455
22x7456
22x7458
22x7459
22x7463
22x7465
22x7470
22x7476
22x7477
22x7479
22x7482
22x7483
22x7486
22x7487
22x7497
22x7498
22x7501
22x7502
22x7518
22x7519
22x7523
22x7524
22x7526
22x7527
22x7529
22x7531
22x7535
22x7538
22x7540
22x7542
22x7543
22x7545
22x7548
22x7550
22x7551
22x7552
22x7556
22x7560
22x7568
22x7571
22x7574
22x7576
22x7577
22x7578
22x7581
22x7583
22x7584
22x7586
22x7588
22x7589
22x7590
22x7596
22x7600
22x7602
22x7604
22x7606
22x7607
22x7609
22x7612
22x7615
22x7619
22x7623
22x7626
22x7628
22x7630
22x7631
22x7634
22x7635
22x7636
22x7638
22x7639
22x7640
22x7642
22x7645
22x7646
22x7649
22x7652
22x7656
22x7658
22x7662
22x7664
22x7667
22x7670
22x7675
22x7677
22x7678
22x7679
22x7680
22x7681
22x7682
22x7683
22x7685
22x7693
22x7694
22x7696
22x7697
22x7699
22x7702
22x7703
22x7708
22x7709
22x7712
22x7714
22x7718
22x7719
22x7720
22x7723
22x7724
22x7730
22x7731
22x7732
22x7733
22x7738
22x7740
22x7745
22x7748
22x7752
22x7754
22x7755
22x7758
22x7763
22x7765
22x7769
22x7771
22x7774
22x7775
22x7777
22x7778
22x7779
22x7781
22x7782
22x7786
22x7788
22x7789
22x7791
22x7792
22x7798
22x7800
22x7801
22x7805
22x7806
22x7808
22x7811
22x7814
22x7818
22x7820
22x7822
22x7823
22x7826
22x7829
22x7830
22x7831
22x7838
22x7839
22x7842
22x7843
22x7850
22x7855
22x7856
22x7860
22x7863
22x7864
22x7865
22x7866
22x7871
22x7873
22x7874
22x7876
22x7884
22x7885
22x7888
22x7889
22x7893
22x7894
22x7896
22x7897
22x7899
22x7904
22x7905
22x7908
22x7910
22x7918
22x7919
22x7922
22x7925
22x7930
22x7932
22x7936
22x7940
22x7944
22x7949
22x7951
22x7965
22x7969
22x7972
22x7973
22x7982
22x7983
22x7984
22x7989
22x7991
22x7995
22x7999
22x8000
22x8003
22x8011
22x8013
22x8014
22x8015
22x8016
22x8018
22x8020
22x8022
22x8026
22x8029
22x8033
22x8036
22x8041
22x8046
22x8049
22x8051
22x8052
22x8054
22x8056
22x8057
22x8058
22x8060
22x8064
22x8066
22x8067
22x8068
22x8069
22x8070
22x8075
22x8076
22x8080
22x8082
22x8093
22x8097
22x8098
22x8101
22x8104
22x8105
22x8106
22x8109
22x8111
22x8114
22x8120
22x8123
22x8128
22x8129
22x8130
22x8131
22x8132
22x8133
22x8134
22x8136
22x8139
22x8140
22x8143
22x8145
22x8153
22x8155
22x8159
22x8160
22x8161
22x8162
22x8163
22x8165
22x8172
22x8173
22x8174
22x8178
22x8183
22x8184
22x8186
22x8188
22x8192
22x8193
22x8194
22x8195
22x8196
22x8197
22x8199
22x8200
22x8204
22x8206
22x8207
22x8208
22x8210
22x8211
22x8213
22x8217
22x8218
22x8221
22x8222
22x8224
22x8225
22x8226
22x8229
22x8232
22x8234
22x8235
22x8236
22x8239
22x8245
22x8246
22x8247
22x8248
22x8250
22x8254
22x8255
22x8256
22x8258
22x8261
22x8262
22x8263
22x8265
22x8266
22x8268
22x8269
22x8276
22x8277
22x8278
22x8280
22x8284
22x8287
22x8288
22x8289
22x8290
22x8298
22x8299
22x8300
22x8301
22x8302
22x8304
22x8306
22x8309
22x8322
22x8323
22x8325
22x8328
22x8330
22x8332
22x8333
22x8335
22x8336
22x8339
22x8342
22x8344
22x8346
22x8353
22x8358
22x8359
22x8361
22x8368
22x8369
22x8377
22x8380
22x8388
22x8391
22x8392
22x8394
22x8398
22x8399
22x8400
22x8401
22x8406
22x8408
22x8409
22x8411
22x8414
22x8416
22x8417
22x8418
22x8419
22x8422
22x8429
22x8430
22x8432
22x8436
22x8438
22x8439
22x8442
22x8444
22x8447
22x8448
22x8450
22x8452
22x8453
22x8454
22x8457
22x8458
22x8459
22x8462
22x8464
22x8468
22x8469
22x8471
22x8472
22x8476
22x8481
22x8483
22x8484
22x8485
22x8492
22x8494
22x8498
22x8507
22x8510
22x8512
22x8514
22x8515
22x8518
22x8521
22x8522
22x8523
22x8524
22x8526
22x8529
22x8532
22x8536
22x8542
22x8543
22x8546
22x8550
22x8555
22x8556
22x8560
22x8564
22x8567
22x8569
22x8570
22x8572
22x8579
22x8580
22x8582
22x8584
22x8587
22x8588
22x8590
22x8592
22x8594
22x8601
22x8602
22x8603
22x8607
22x8621
22x8625
22x8628
22x8630
22x8636
22x8641
22x8645
22x8650
22x8651
22x8652
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment