# Copyright (C) 2021  Peter van Heusden <pvh@sanbi.ac.za>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
from .. import Location, doc_inherit
from io import StringIO
import requests

from ..region_list import RegionList, bed_to_regions


# noinspection PyPep8Naming
class FarhatLab_RLC_Regions(RegionList):
    url = "https://raw.githubusercontent.com/farhat-lab/mtb-illumina-wgs-evaluation/main/Results/A_Manuscript_AdditionalFiles/AF13_RLC_Regions.H37Rv.bed"
    name = "FarhatLab_RLC"
    description = "Refined Low Confidence regions from Farhat Lab"
    # these regions are in the AF13_RLC_Regions.H37Rv.bed supplementary file in the publication
    project_url = "https://doi.org/10.1093/bioinformatics/btac023"
    regions = [
        Location(locus="region1", start=24720, end=24738, strand=1),
        Location(locus="region2", start=39029, end=39030, strand=1),
        Location(locus="region3", start=55548, end=55647, strand=1),
        Location(locus="region4", start=71464, end=71584, strand=1),
        Location(locus="region5", start=79569, end=83035, strand=1),
        Location(locus="region6", start=86778, end=86779, strand=1),
        Location(locus="region7", start=86780, end=86782, strand=1),
        Location(locus="region8", start=103749, end=104811, strand=1),
        Location(locus="region9", start=104813, end=104962, strand=1),
        Location(locus="region10", start=131928, end=131979, strand=1),
        Location(locus="region11", start=131980, end=131982, strand=1),
        Location(locus="region12", start=131992, end=131993, strand=1),
        Location(locus="region13", start=132077, end=132079, strand=1),
        Location(locus="region14", start=132159, end=132189, strand=1),
        Location(locus="region15", start=132518, end=132684, strand=1),
        Location(locus="region16", start=149499, end=149526, strand=1),
        Location(locus="region17", start=149911, end=150890, strand=1),
        Location(locus="region18", start=154138, end=154186, strand=1),
        Location(locus="region19", start=154191, end=154239, strand=1),
        Location(locus="region20", start=171456, end=171457, strand=1),
        Location(locus="region21", start=171778, end=171779, strand=1),
        Location(locus="region22", start=192336, end=192398, strand=1),
        Location(locus="region23", start=198936, end=199007, strand=1),
        Location(locus="region24", start=206494, end=206519, strand=1),
        Location(locus="region25", start=234446, end=234492, strand=1),
        Location(locus="region26", start=279558, end=279560, strand=1),
        Location(locus="region27", start=308321, end=308413, strand=1),
        Location(locus="region28", start=333436, end=336310, strand=1),
        Location(locus="region29", start=336379, end=336380, strand=1),
        Location(locus="region30", start=336399, end=336400, strand=1),
        Location(locus="region31", start=336402, end=336403, strand=1),
        Location(locus="region32", start=336404, end=336405, strand=1),
        Location(locus="region33", start=336496, end=336497, strand=1),
        Location(locus="region34", start=336503, end=336504, strand=1),
        Location(locus="region35", start=336534, end=336535, strand=1),
        Location(locus="region36", start=336536, end=336537, strand=1),
        Location(locus="region37", start=336539, end=336540, strand=1),
        Location(locus="region38", start=336545, end=336546, strand=1),
        Location(locus="region39", start=336552, end=337173, strand=1),
        Location(locus="region40", start=337265, end=337381, strand=1),
        Location(locus="region41", start=337714, end=338963, strand=1),
        Location(locus="region42", start=338983, end=338998, strand=1),
        Location(locus="region43", start=340429, end=340470, strand=1),
        Location(locus="region44", start=340472, end=340484, strand=1),
        Location(locus="region45", start=361798, end=361800, strand=1),
        Location(locus="region46", start=361806, end=361814, strand=1),
        Location(locus="region47", start=361815, end=361973, strand=1),
        Location(locus="region48", start=361987, end=362010, strand=1),
        Location(locus="region49", start=362620, end=362748, strand=1),
        Location(locus="region50", start=362751, end=362764, strand=1),
        Location(locus="region51", start=362769, end=362916, strand=1),
        Location(locus="region52", start=362960, end=363020, strand=1),
        Location(locus="region53", start=366149, end=372764, strand=1),
        Location(locus="region54", start=373295, end=373333, strand=1),
        Location(locus="region55", start=374840, end=374842, strand=1),
        Location(locus="region56", start=400362, end=401474, strand=1),
        Location(locus="region57", start=401483, end=401494, strand=1),
        Location(locus="region58", start=410552, end=410570, strand=1),
        Location(locus="region59", start=425240, end=425254, strand=1),
        Location(locus="region60", start=425293, end=425353, strand=1),
        Location(locus="region61", start=426581, end=426592, strand=1),
        Location(locus="region62", start=426619, end=426628, strand=1),
        Location(locus="region63", start=426648, end=426680, strand=1),
        Location(locus="region64", start=426775, end=426785, strand=1),
        Location(locus="region65", start=426942, end=426967, strand=1),
        Location(locus="region66", start=427088, end=427089, strand=1),
        Location(locus="region67", start=427098, end=427110, strand=1),
        Location(locus="region68", start=427310, end=427325, strand=1),
        Location(locus="region69", start=427359, end=427374, strand=1),
        Location(locus="region70", start=456207, end=456210, strand=1),
        Location(locus="region71", start=456211, end=456212, strand=1),
        Location(locus="region72", start=496254, end=496354, strand=1),
        Location(locus="region73", start=531556, end=531558, strand=1),
        Location(locus="region74", start=531559, end=531562, strand=1),
        Location(locus="region75", start=569820, end=569876, strand=1),
        Location(locus="region76", start=569896, end=569897, strand=1),
        Location(locus="region77", start=569899, end=569901, strand=1),
        Location(locus="region78", start=569917, end=569978, strand=1),
        Location(locus="region79", start=577285, end=577496, strand=1),
        Location(locus="region80", start=580581, end=580808, strand=1),
        Location(locus="region81", start=595373, end=595374, strand=1),
        Location(locus="region82", start=606696, end=606698, strand=1),
        Location(locus="region83", start=606702, end=607781, strand=1),
        Location(locus="region84", start=607793, end=607798, strand=1),
        Location(locus="region85", start=623230, end=624417, strand=1),
        Location(locus="region86", start=663428, end=663429, strand=1),
        Location(locus="region87", start=672009, end=672011, strand=1),
        Location(locus="region88", start=672014, end=672070, strand=1),
        Location(locus="region89", start=672104, end=672108, strand=1),
        Location(locus="region90", start=672161, end=672246, strand=1),
        Location(locus="region91", start=672265, end=672274, strand=1),
        Location(locus="region92", start=672443, end=672462, strand=1),
        Location(locus="region93", start=672477, end=672524, strand=1),
        Location(locus="region94", start=672532, end=672563, strand=1),
        Location(locus="region95", start=672648, end=672805, strand=1),
        Location(locus="region96", start=672827, end=672919, strand=1),
        Location(locus="region97", start=672945, end=672951, strand=1),
        Location(locus="region98", start=672955, end=672959, strand=1),
        Location(locus="region99", start=673102, end=673134, strand=1),
        Location(locus="region100", start=673135, end=673623, strand=1),
        Location(locus="region101", start=673635, end=673637, strand=1),
        Location(locus="region102", start=673647, end=673668, strand=1),
        Location(locus="region103", start=673989, end=673991, strand=1),
        Location(locus="region104", start=673992, end=673995, strand=1),
        Location(locus="region105", start=674121, end=674132, strand=1),
        Location(locus="region106", start=674142, end=674163, strand=1),
        Location(locus="region107", start=674218, end=674220, strand=1),
        Location(locus="region108", start=674227, end=674233, strand=1),
        Location(locus="region109", start=674240, end=674272, strand=1),
        Location(locus="region110", start=674311, end=674319, strand=1),
        Location(locus="region111", start=674343, end=674358, strand=1),
        Location(locus="region112", start=674434, end=674507, strand=1),
        Location(locus="region113", start=674546, end=674556, strand=1),
        Location(locus="region114", start=674780, end=675029, strand=1),
        Location(locus="region115", start=675034, end=675405, strand=1),
        Location(locus="region116", start=699610, end=699640, strand=1),
        Location(locus="region117", start=725208, end=725233, strand=1),
        Location(locus="region118", start=735079, end=735081, strand=1),
        Location(locus="region119", start=742596, end=742634, strand=1),
        Location(locus="region120", start=767365, end=767366, strand=1),
        Location(locus="region121", start=767367, end=767371, strand=1),
        Location(locus="region122", start=806193, end=806194, strand=1),
        Location(locus="region123", start=806195, end=806199, strand=1),
        Location(locus="region124", start=806202, end=806219, strand=1),
        Location(locus="region125", start=831965, end=832028, strand=1),
        Location(locus="region126", start=832980, end=833508, strand=1),
        Location(locus="region127", start=833514, end=833517, strand=1),
        Location(locus="region128", start=833529, end=833539, strand=1),
        Location(locus="region129", start=835700, end=838052, strand=1),
        Location(locus="region130", start=838450, end=840856, strand=1),
        Location(locus="region131", start=844884, end=844888, strand=1),
        Location(locus="region132", start=846903, end=846905, strand=1),
        Location(locus="region133", start=888762, end=891269, strand=1),
        Location(locus="region134", start=891281, end=891287, strand=1),
        Location(locus="region135", start=908408, end=909107, strand=1),
        Location(locus="region136", start=909122, end=909128, strand=1),
        Location(locus="region137", start=925370, end=926393, strand=1),
        Location(locus="region138", start=926626, end=927518, strand=1),
        Location(locus="region139", start=928675, end=928791, strand=1),
        Location(locus="region140", start=928868, end=928936, strand=1),
        Location(locus="region141", start=929015, end=929360, strand=1),
        Location(locus="region142", start=929367, end=929373, strand=1),
        Location(locus="region143", start=929463, end=929470, strand=1),
        Location(locus="region144", start=929476, end=929605, strand=1),
        Location(locus="region145", start=929666, end=929961, strand=1),
        Location(locus="region146", start=960216, end=960217, strand=1),
        Location(locus="region147", start=964633, end=964660, strand=1),
        Location(locus="region148", start=964679, end=964707, strand=1),
        Location(locus="region149", start=964776, end=964893, strand=1),
        Location(locus="region150", start=964931, end=965006, strand=1),
        Location(locus="region151", start=969615, end=969752, strand=1),
        Location(locus="region152", start=973762, end=973786, strand=1),
        Location(locus="region153", start=976897, end=976913, strand=1),
        Location(locus="region154", start=1000741, end=1000799, strand=1),
        Location(locus="region155", start=1025867, end=1025899, strand=1),
        Location(locus="region156", start=1025901, end=1025904, strand=1),
        Location(locus="region157", start=1056823, end=1056824, strand=1),
        Location(locus="region158", start=1056825, end=1056829, strand=1),
        Location(locus="region159", start=1064072, end=1064074, strand=1),
        Location(locus="region160", start=1064079, end=1064083, strand=1),
        Location(locus="region161", start=1064091, end=1064099, strand=1),
        Location(locus="region162", start=1066998, end=1067002, strand=1),
        Location(locus="region163", start=1070325, end=1070330, strand=1),
        Location(locus="region164", start=1090782, end=1090783, strand=1),
        Location(locus="region165", start=1090788, end=1090789, strand=1),
        Location(locus="region166", start=1090790, end=1090793, strand=1),
        Location(locus="region167", start=1090803, end=1090814, strand=1),
        Location(locus="region168", start=1090938, end=1090940, strand=1),
        Location(locus="region169", start=1090957, end=1091137, strand=1),
        Location(locus="region170", start=1091147, end=1091152, strand=1),
        Location(locus="region171", start=1091362, end=1091368, strand=1),
        Location(locus="region172", start=1091373, end=1091379, strand=1),
        Location(locus="region173", start=1091388, end=1091846, strand=1),
        Location(locus="region174", start=1091888, end=1092021, strand=1),
        Location(locus="region175", start=1092056, end=1092089, strand=1),
        Location(locus="region176", start=1092102, end=1092104, strand=1),
        Location(locus="region177", start=1092246, end=1092263, strand=1),
        Location(locus="region178", start=1093755, end=1094257, strand=1),
        Location(locus="region179", start=1095623, end=1095871, strand=1),
        Location(locus="region180", start=1095947, end=1096415, strand=1),
        Location(locus="region181", start=1096469, end=1096470, strand=1),
        Location(locus="region182", start=1096486, end=1096487, strand=1),
        Location(locus="region183", start=1133280, end=1133283, strand=1),
        Location(locus="region184", start=1145287, end=1145317, strand=1),
        Location(locus="region185", start=1164832, end=1165521, strand=1),
        Location(locus="region186", start=1169504, end=1170502, strand=1),
        Location(locus="region187", start=1170525, end=1170526, strand=1),
        Location(locus="region188", start=1188524, end=1188557, strand=1),
        Location(locus="region189", start=1188561, end=1188908, strand=1),
        Location(locus="region190", start=1188949, end=1188955, strand=1),
        Location(locus="region191", start=1188972, end=1189045, strand=1),
        Location(locus="region192", start=1189073, end=1189075, strand=1),
        Location(locus="region193", start=1189081, end=1189157, strand=1),
        Location(locus="region194", start=1189158, end=1189900, strand=1),
        Location(locus="region195", start=1190864, end=1190865, strand=1),
        Location(locus="region196", start=1190877, end=1190881, strand=1),
        Location(locus="region197", start=1190969, end=1191112, strand=1),
        Location(locus="region198", start=1191248, end=1191277, strand=1),
        Location(locus="region199", start=1191287, end=1191681, strand=1),
        Location(locus="region200", start=1200523, end=1200544, strand=1),
        Location(locus="region201", start=1203334, end=1203396, strand=1),
        Location(locus="region202", start=1211559, end=1213863, strand=1),
        Location(locus="region203", start=1216951, end=1217162, strand=1),
        Location(locus="region204", start=1217167, end=1217181, strand=1),
        Location(locus="region205", start=1217416, end=1217422, strand=1),
        Location(locus="region206", start=1217423, end=1218426, strand=1),
        Location(locus="region207", start=1218436, end=1218676, strand=1),
        Location(locus="region208", start=1218702, end=1218703, strand=1),
        Location(locus="region209", start=1218968, end=1218970, strand=1),
        Location(locus="region210", start=1224338, end=1224340, strand=1),
        Location(locus="region211", start=1224341, end=1224345, strand=1),
        Location(locus="region212", start=1224348, end=1224350, strand=1),
        Location(locus="region213", start=1224356, end=1224357, strand=1),
        Location(locus="region214", start=1276380, end=1276424, strand=1),
        Location(locus="region215", start=1276431, end=1276432, strand=1),
        Location(locus="region216", start=1276770, end=1276771, strand=1),
        Location(locus="region217", start=1276773, end=1276774, strand=1),
        Location(locus="region218", start=1276785, end=1277869, strand=1),
        Location(locus="region219", start=1277870, end=1278555, strand=1),
        Location(locus="region220", start=1283487, end=1283493, strand=1),
        Location(locus="region221", start=1283512, end=1283548, strand=1),
        Location(locus="region222", start=1283554, end=1283562, strand=1),
        Location(locus="region223", start=1305494, end=1305556, strand=1),
        Location(locus="region224", start=1305592, end=1305654, strand=1),
        Location(locus="region225", start=1313129, end=1313134, strand=1),
        Location(locus="region226", start=1313384, end=1313385, strand=1),
        Location(locus="region227", start=1313389, end=1313394, strand=1),
        Location(locus="region228", start=1335476, end=1335507, strand=1),
        Location(locus="region229", start=1335508, end=1335513, strand=1),
        Location(locus="region230", start=1340656, end=1340657, strand=1),
        Location(locus="region231", start=1340666, end=1340667, strand=1),
        Location(locus="region232", start=1341517, end=1342651, strand=1),
        Location(locus="region233", start=1363470, end=1363471, strand=1),
        Location(locus="region234", start=1385096, end=1385437, strand=1),
        Location(locus="region235", start=1385572, end=1385580, strand=1),
        Location(locus="region236", start=1385586, end=1385667, strand=1),
        Location(locus="region237", start=1385669, end=1385672, strand=1),
        Location(locus="region238", start=1386008, end=1386036, strand=1),
        Location(locus="region239", start=1386073, end=1386081, strand=1),
        Location(locus="region240", start=1386112, end=1386113, strand=1),
        Location(locus="region241", start=1386118, end=1386121, strand=1),
        Location(locus="region242", start=1386125, end=1386129, strand=1),
        Location(locus="region243", start=1386136, end=1386140, strand=1),
        Location(locus="region244", start=1414620, end=1414621, strand=1),
        Location(locus="region245", start=1414628, end=1414629, strand=1),
        Location(locus="region246", start=1414643, end=1414644, strand=1),
        Location(locus="region247", start=1414652, end=1414653, strand=1),
        Location(locus="region248", start=1443427, end=1443428, strand=1),
        Location(locus="region249", start=1445086, end=1445117, strand=1),
        Location(locus="region250", start=1445118, end=1445121, strand=1),
        Location(locus="region251", start=1451778, end=1451995, strand=1),
        Location(locus="region252", start=1468425, end=1469402, strand=1),
        Location(locus="region253", start=1480944, end=1480945, strand=1),
        Location(locus="region254", start=1480947, end=1481670, strand=1),
        Location(locus="region255", start=1488082, end=1488126, strand=1),
        Location(locus="region256", start=1488383, end=1488410, strand=1),
        Location(locus="region257", start=1488413, end=1488420, strand=1),
        Location(locus="region258", start=1488429, end=1488757, strand=1),
        Location(locus="region259", start=1488760, end=1488766, strand=1),
        Location(locus="region260", start=1488776, end=1488788, strand=1),
        Location(locus="region261", start=1488791, end=1488794, strand=1),
        Location(locus="region262", start=1488807, end=1488810, strand=1),
        Location(locus="region263", start=1488813, end=1488839, strand=1),
        Location(locus="region264", start=1488843, end=1488848, strand=1),
        Location(locus="region265", start=1488896, end=1489512, strand=1),
        Location(locus="region266", start=1524571, end=1524574, strand=1),
        Location(locus="region267", start=1541946, end=1543431, strand=1),
        Location(locus="region268", start=1543453, end=1543457, strand=1),
        Location(locus="region269", start=1543462, end=1543480, strand=1),
        Location(locus="region270", start=1568059, end=1568087, strand=1),
        Location(locus="region271", start=1572184, end=1572482, strand=1),
        Location(locus="region272", start=1572499, end=1572621, strand=1),
        Location(locus="region273", start=1572744, end=1573416, strand=1),
        Location(locus="region274", start=1612620, end=1612621, strand=1),
        Location(locus="region275", start=1612623, end=1612624, strand=1),
        Location(locus="region276", start=1612647, end=1612648, strand=1),
        Location(locus="region277", start=1618208, end=1619684, strand=1),
        Location(locus="region278", start=1630814, end=1630825, strand=1),
        Location(locus="region279", start=1630827, end=1630837, strand=1),
        Location(locus="region280", start=1630839, end=1630872, strand=1),
        Location(locus="region281", start=1630874, end=1630875, strand=1),
        Location(locus="region282", start=1630996, end=1631066, strand=1),
        Location(locus="region283", start=1631391, end=1631908, strand=1),
        Location(locus="region284", start=1631936, end=1631955, strand=1),
        Location(locus="region285", start=1632218, end=1632220, strand=1),
        Location(locus="region286", start=1632231, end=1632289, strand=1),
        Location(locus="region287", start=1632355, end=1632775, strand=1),
        Location(locus="region288", start=1632790, end=1632795, strand=1),
        Location(locus="region289", start=1632856, end=1632858, strand=1),
        Location(locus="region290", start=1633191, end=1634631, strand=1),
        Location(locus="region291", start=1634632, end=1634633, strand=1),
        Location(locus="region292", start=1636003, end=1638229, strand=1),
        Location(locus="region293", start=1638234, end=1638235, strand=1),
        Location(locus="region294", start=1638237, end=1638238, strand=1),
        Location(locus="region295", start=1644361, end=1644362, strand=1),
        Location(locus="region296", start=1655670, end=1655721, strand=1),
        Location(locus="region297", start=1655814, end=1655815, strand=1),
        Location(locus="region298", start=1656096, end=1656098, strand=1),
        Location(locus="region299", start=1656099, end=1656208, strand=1),
        Location(locus="region300", start=1779266, end=1789687, strand=1),
        Location(locus="region301", start=1789712, end=1789713, strand=1),
        Location(locus="region302", start=1789794, end=1789795, strand=1),
        Location(locus="region303", start=1789797, end=1789798, strand=1),
        Location(locus="region304", start=1828812, end=1828831, strand=1),
        Location(locus="region305", start=1828832, end=1828843, strand=1),
        Location(locus="region306", start=1863481, end=1863575, strand=1),
        Location(locus="region307", start=1863723, end=1863733, strand=1),
        Location(locus="region308", start=1864008, end=1864112, strand=1),
        Location(locus="region309", start=1864256, end=1864323, strand=1),
        Location(locus="region310", start=1864394, end=1864468, strand=1),
        Location(locus="region311", start=1864554, end=1864567, strand=1),
        Location(locus="region312", start=1864568, end=1864580, strand=1),
        Location(locus="region313", start=1864702, end=1864872, strand=1),
        Location(locus="region314", start=1864885, end=1864924, strand=1),
        Location(locus="region315", start=1879425, end=1879426, strand=1),
        Location(locus="region316", start=1879494, end=1879503, strand=1),
        Location(locus="region317", start=1879504, end=1879619, strand=1),
        Location(locus="region318", start=1879631, end=1879638, strand=1),
        Location(locus="region319", start=1879650, end=1879659, strand=1),
        Location(locus="region320", start=1895352, end=1895498, strand=1),
        Location(locus="region321", start=1914970, end=1914986, strand=1),
        Location(locus="region322", start=1914987, end=1914995, strand=1),
        Location(locus="region323", start=1914998, end=1914999, strand=1),
        Location(locus="region324", start=1955581, end=1955615, strand=1),
        Location(locus="region325", start=1955638, end=1955672, strand=1),
        Location(locus="region326", start=1981613, end=1984775, strand=1),
        Location(locus="region327", start=1987701, end=1989057, strand=1),
        Location(locus="region328", start=1989982, end=1990093, strand=1),
        Location(locus="region329", start=1990109, end=1990114, strand=1),
        Location(locus="region330", start=1990322, end=1990823, strand=1),
        Location(locus="region331", start=1991181, end=1991432, strand=1),
        Location(locus="region332", start=1991569, end=1992029, strand=1),
        Location(locus="region333", start=1992055, end=1992058, strand=1),
        Location(locus="region334", start=1996100, end=1998415, strand=1),
        Location(locus="region335", start=2001205, end=2001716, strand=1),
        Location(locus="region336", start=2002029, end=2002036, strand=1),
        Location(locus="region337", start=2002125, end=2002328, strand=1),
        Location(locus="region338", start=2002405, end=2002406, strand=1),
        Location(locus="region339", start=2025567, end=2025585, strand=1),
        Location(locus="region340", start=2025587, end=2025612, strand=1),
        Location(locus="region341", start=2025615, end=2025847, strand=1),
        Location(locus="region342", start=2025892, end=2026163, strand=1),
        Location(locus="region343", start=2028425, end=2028971, strand=1),
        Location(locus="region344", start=2045048, end=2045107, strand=1),
        Location(locus="region345", start=2045963, end=2045964, strand=1),
        Location(locus="region346", start=2045969, end=2045970, strand=1),
        Location(locus="region347", start=2046100, end=2046195, strand=1),
        Location(locus="region348", start=2061412, end=2061430, strand=1),
        Location(locus="region349", start=2061431, end=2062159, strand=1),
        Location(locus="region350", start=2074435, end=2074840, strand=1),
        Location(locus="region351", start=2088461, end=2088499, strand=1),
        Location(locus="region352", start=2088773, end=2088933, strand=1),
        Location(locus="region353", start=2088946, end=2088949, strand=1),
        Location(locus="region354", start=2096825, end=2096840, strand=1),
        Location(locus="region355", start=2096843, end=2096849, strand=1),
        Location(locus="region356", start=2133474, end=2133475, strand=1),
        Location(locus="region357", start=2146058, end=2146132, strand=1),
        Location(locus="region358", start=2162931, end=2167311, strand=1),
        Location(locus="region359", start=2181376, end=2181412, strand=1),
        Location(locus="region360", start=2193009, end=2193021, strand=1),
        Location(locus="region361", start=2196149, end=2196474, strand=1),
        Location(locus="region362", start=2196714, end=2196715, strand=1),
        Location(locus="region363", start=2244992, end=2245020, strand=1),
        Location(locus="region364", start=2262251, end=2262252, strand=1),
        Location(locus="region365", start=2262256, end=2262269, strand=1),
        Location(locus="region366", start=2262278, end=2262963, strand=1),
        Location(locus="region367", start=2262972, end=2262973, strand=1),
        Location(locus="region368", start=2262979, end=2262982, strand=1),
        Location(locus="region369", start=2266486, end=2266487, strand=1),
        Location(locus="region370", start=2266507, end=2266508, strand=1),
        Location(locus="region371", start=2266516, end=2266517, strand=1),
        Location(locus="region372", start=2266549, end=2266550, strand=1),
        Location(locus="region373", start=2266552, end=2266553, strand=1),
        Location(locus="region374", start=2266582, end=2266583, strand=1),
        Location(locus="region375", start=2266597, end=2266598, strand=1),
        Location(locus="region376", start=2266603, end=2266604, strand=1),
        Location(locus="region377", start=2266623, end=2266624, strand=1),
        Location(locus="region378", start=2268721, end=2268725, strand=1),
        Location(locus="region379", start=2299384, end=2299386, strand=1),
        Location(locus="region380", start=2299390, end=2299928, strand=1),
        Location(locus="region381", start=2301702, end=2301704, strand=1),
        Location(locus="region382", start=2301707, end=2302099, strand=1),
        Location(locus="region383", start=2302112, end=2302120, strand=1),
        Location(locus="region384", start=2302125, end=2302227, strand=1),
        Location(locus="region385", start=2302230, end=2302231, strand=1),
        Location(locus="region386", start=2302272, end=2302275, strand=1),
        Location(locus="region387", start=2302283, end=2302285, strand=1),
        Location(locus="region388", start=2305466, end=2306065, strand=1),
        Location(locus="region389", start=2306447, end=2306452, strand=1),
        Location(locus="region390", start=2317128, end=2317129, strand=1),
        Location(locus="region391", start=2317135, end=2317136, strand=1),
        Location(locus="region392", start=2329858, end=2330072, strand=1),
        Location(locus="region393", start=2338206, end=2338215, strand=1),
        Location(locus="region394", start=2338216, end=2338217, strand=1),
        Location(locus="region395", start=2338415, end=2338416, strand=1),
        Location(locus="region396", start=2338421, end=2338422, strand=1),
        Location(locus="region397", start=2338424, end=2338425, strand=1),
        Location(locus="region398", start=2338427, end=2338428, strand=1),
        Location(locus="region399", start=2338430, end=2338431, strand=1),
        Location(locus="region400", start=2338433, end=2338434, strand=1),
        Location(locus="region401", start=2338456, end=2338457, strand=1),
        Location(locus="region402", start=2338676, end=2338677, strand=1),
        Location(locus="region403", start=2338678, end=2338679, strand=1),
        Location(locus="region404", start=2338691, end=2338692, strand=1),
        Location(locus="region405", start=2338700, end=2338702, strand=1),
        Location(locus="region406", start=2338703, end=2338704, strand=1),
        Location(locus="region407", start=2338706, end=2338707, strand=1),
        Location(locus="region408", start=2338715, end=2338716, strand=1),
        Location(locus="region409", start=2338719, end=2338720, strand=1),
        Location(locus="region410", start=2339512, end=2339573, strand=1),
        Location(locus="region411", start=2339888, end=2340051, strand=1),
        Location(locus="region412", start=2347407, end=2347613, strand=1),
        Location(locus="region413", start=2356873, end=2356918, strand=1),
        Location(locus="region414", start=2356927, end=2356933, strand=1),
        Location(locus="region415", start=2357181, end=2357185, strand=1),
        Location(locus="region416", start=2357249, end=2357268, strand=1),
        Location(locus="region417", start=2357291, end=2357297, strand=1),
        Location(locus="region418", start=2357314, end=2357321, strand=1),
        Location(locus="region419", start=2357417, end=2357420, strand=1),
        Location(locus="region420", start=2357426, end=2357607, strand=1),
        Location(locus="region421", start=2360650, end=2360660, strand=1),
        Location(locus="region422", start=2360730, end=2360740, strand=1),
        Location(locus="region423", start=2361908, end=2361909, strand=1),
        Location(locus="region424", start=2363680, end=2363682, strand=1),
        Location(locus="region425", start=2365410, end=2366766, strand=1),
        Location(locus="region426", start=2366768, end=2366772, strand=1),
        Location(locus="region427", start=2366889, end=2366967, strand=1),
        Location(locus="region428", start=2367028, end=2367060, strand=1),
        Location(locus="region429", start=2372549, end=2372560, strand=1),
        Location(locus="region430", start=2380217, end=2380261, strand=1),
        Location(locus="region431", start=2387281, end=2387659, strand=1),
        Location(locus="region432", start=2401824, end=2401869, strand=1),
        Location(locus="region433", start=2401883, end=2401927, strand=1),
        Location(locus="region434", start=2423424, end=2423425, strand=1),
        Location(locus="region435", start=2423526, end=2423687, strand=1),
        Location(locus="region436", start=2423705, end=2423775, strand=1),
        Location(locus="region437", start=2423789, end=2424293, strand=1),
        Location(locus="region438", start=2430113, end=2430116, strand=1),
        Location(locus="region439", start=2431471, end=2431474, strand=1),
        Location(locus="region440", start=2449219, end=2449221, strand=1),
        Location(locus="region441", start=2461325, end=2461382, strand=1),
        Location(locus="region442", start=2461398, end=2461401, strand=1),
        Location(locus="region443", start=2461402, end=2461425, strand=1),
        Location(locus="region444", start=2462528, end=2462594, strand=1),
        Location(locus="region445", start=2466995, end=2467029, strand=1),
        Location(locus="region446", start=2470043, end=2470086, strand=1),
        Location(locus="region447", start=2522186, end=2522192, strand=1),
        Location(locus="region448", start=2522194, end=2522219, strand=1),
        Location(locus="region449", start=2523189, end=2523219, strand=1),
        Location(locus="region450", start=2531897, end=2532244, strand=1),
        Location(locus="region451", start=2550008, end=2551371, strand=1),
        Location(locus="region452", start=2631598, end=2631599, strand=1),
        Location(locus="region453", start=2631619, end=2631620, strand=1),
        Location(locus="region454", start=2632922, end=2636977, strand=1),
        Location(locus="region455", start=2638985, end=2639613, strand=1),
        Location(locus="region456", start=2651435, end=2651440, strand=1),
        Location(locus="region457", start=2651445, end=2651447, strand=1),
        Location(locus="region458", start=2693239, end=2693589, strand=1),
        Location(locus="region459", start=2693609, end=2693854, strand=1),
        Location(locus="region460", start=2700488, end=2700489, strand=1),
        Location(locus="region461", start=2700496, end=2700498, strand=1),
        Location(locus="region462", start=2700501, end=2700502, strand=1),
        Location(locus="region463", start=2704885, end=2704886, strand=1),
        Location(locus="region464", start=2721012, end=2721013, strand=1),
        Location(locus="region465", start=2724201, end=2724221, strand=1),
        Location(locus="region466", start=2729618, end=2729620, strand=1),
        Location(locus="region467", start=2729832, end=2729834, strand=1),
        Location(locus="region468", start=2740574, end=2740601, strand=1),
        Location(locus="region469", start=2785969, end=2785974, strand=1),
        Location(locus="region470", start=2795376, end=2795395, strand=1),
        Location(locus="region471", start=2795561, end=2795578, strand=1),
        Location(locus="region472", start=2795854, end=2795868, strand=1),
        Location(locus="region473", start=2795872, end=2795941, strand=1),
        Location(locus="region474", start=2795948, end=2795950, strand=1),
        Location(locus="region475", start=2795958, end=2795972, strand=1),
        Location(locus="region476", start=2795976, end=2795977, strand=1),
        Location(locus="region477", start=2796483, end=2796488, strand=1),
        Location(locus="region478", start=2796490, end=2796492, strand=1),
        Location(locus="region479", start=2796747, end=2796761, strand=1),
        Location(locus="region480", start=2801405, end=2801452, strand=1),
        Location(locus="region481", start=2801456, end=2801471, strand=1),
        Location(locus="region482", start=2801822, end=2802329, strand=1),
        Location(locus="region483", start=2802330, end=2802331, strand=1),
        Location(locus="region484", start=2802743, end=2802850, strand=1),
        Location(locus="region485", start=2802853, end=2803103, strand=1),
        Location(locus="region486", start=2803112, end=2803113, strand=1),
        Location(locus="region487", start=2803467, end=2803712, strand=1),
        Location(locus="region488", start=2803721, end=2803725, strand=1),
        Location(locus="region489", start=2803726, end=2803773, strand=1),
        Location(locus="region490", start=2803777, end=2803783, strand=1),
        Location(locus="region491", start=2803863, end=2803883, strand=1),
        Location(locus="region492", start=2804375, end=2804706, strand=1),
        Location(locus="region493", start=2804720, end=2804723, strand=1),
        Location(locus="region494", start=2804746, end=2804750, strand=1),
        Location(locus="region495", start=2804813, end=2804823, strand=1),
        Location(locus="region496", start=2804906, end=2805754, strand=1),
        Location(locus="region497", start=2822573, end=2822586, strand=1),
        Location(locus="region498", start=2822617, end=2822669, strand=1),
        Location(locus="region499", start=2828709, end=2828711, strand=1),
        Location(locus="region500", start=2828729, end=2829758, strand=1),
        Location(locus="region501", start=2829764, end=2829777, strand=1),
        Location(locus="region502", start=2866550, end=2866551, strand=1),
        Location(locus="region503", start=2866568, end=2866569, strand=1),
        Location(locus="region504", start=2866577, end=2866578, strand=1),
        Location(locus="region505", start=2866579, end=2866580, strand=1),
        Location(locus="region506", start=2866606, end=2866607, strand=1),
        Location(locus="region507", start=2866646, end=2866647, strand=1),
        Location(locus="region508", start=2866670, end=2866671, strand=1),
        Location(locus="region509", start=2866676, end=2866677, strand=1),
        Location(locus="region510", start=2866862, end=2866863, strand=1),
        Location(locus="region511", start=2866875, end=2866876, strand=1),
        Location(locus="region512", start=2866879, end=2866880, strand=1),
        Location(locus="region513", start=2866881, end=2867786, strand=1),
        Location(locus="region514", start=2880155, end=2880261, strand=1),
        Location(locus="region515", start=2887448, end=2887449, strand=1),
        Location(locus="region516", start=2922097, end=2922119, strand=1),
        Location(locus="region517", start=2922181, end=2922254, strand=1),
        Location(locus="region518", start=2922357, end=2922373, strand=1),
        Location(locus="region519", start=2922436, end=2922459, strand=1),
        Location(locus="region520", start=2922725, end=2922835, strand=1),
        Location(locus="region521", start=2922867, end=2922930, strand=1),
        Location(locus="region522", start=2922937, end=2922960, strand=1),
        Location(locus="region523", start=2943754, end=2943801, strand=1),
        Location(locus="region524", start=2944205, end=2944970, strand=1),
        Location(locus="region525", start=2945003, end=2945004, strand=1),
        Location(locus="region526", start=2960226, end=2960592, strand=1),
        Location(locus="region527", start=2960877, end=2960880, strand=1),
        Location(locus="region528", start=2960929, end=2961063, strand=1),
        Location(locus="region529", start=2961069, end=2961071, strand=1),
        Location(locus="region530", start=2961078, end=2961083, strand=1),
        Location(locus="region531", start=2961085, end=2961231, strand=1),
        Location(locus="region532", start=2961334, end=2961341, strand=1),
        Location(locus="region533", start=2961355, end=2961356, strand=1),
        Location(locus="region534", start=2961366, end=2961401, strand=1),
        Location(locus="region535", start=2961409, end=2961412, strand=1),
        Location(locus="region536", start=2961446, end=2961938, strand=1),
        Location(locus="region537", start=2961961, end=2961962, strand=1),
        Location(locus="region538", start=2972105, end=2972108, strand=1),
        Location(locus="region539", start=2973463, end=2973466, strand=1),
        Location(locus="region540", start=2980970, end=2980998, strand=1),
        Location(locus="region541", start=2983159, end=2983631, strand=1),
        Location(locus="region542", start=2989950, end=2989952, strand=1),
        Location(locus="region543", start=2996003, end=2996054, strand=1),
        Location(locus="region544", start=3026262, end=3026284, strand=1),
        Location(locus="region545", start=3054576, end=3054577, strand=1),
        Location(locus="region546", start=3054578, end=3054941, strand=1),
        Location(locus="region547", start=3054952, end=3055236, strand=1),
        Location(locus="region548", start=3059799, end=3059811, strand=1),
        Location(locus="region549", start=3059812, end=3059829, strand=1),
        Location(locus="region550", start=3105013, end=3105014, strand=1),
        Location(locus="region551", start=3112312, end=3112313, strand=1),
        Location(locus="region552", start=3112459, end=3112460, strand=1),
        Location(locus="region553", start=3119560, end=3119563, strand=1),
        Location(locus="region554", start=3119566, end=3122702, strand=1),
        Location(locus="region555", start=3122810, end=3122918, strand=1),
        Location(locus="region556", start=3122931, end=3122942, strand=1),
        Location(locus="region557", start=3122948, end=3122954, strand=1),
        Location(locus="region558", start=3123027, end=3123283, strand=1),
        Location(locus="region559", start=3123316, end=3123353, strand=1),
        Location(locus="region560", start=3123422, end=3123424, strand=1),
        Location(locus="region561", start=3135953, end=3135985, strand=1),
        Location(locus="region562", start=3147107, end=3147108, strand=1),
        Location(locus="region563", start=3147110, end=3147119, strand=1),
        Location(locus="region564", start=3155882, end=3155936, strand=1),
        Location(locus="region565", start=3155978, end=3156089, strand=1),
        Location(locus="region566", start=3162806, end=3162923, strand=1),
        Location(locus="region567", start=3163500, end=3163548, strand=1),
        Location(locus="region568", start=3163615, end=3163617, strand=1),
        Location(locus="region569", start=3163619, end=3163693, strand=1),
        Location(locus="region570", start=3163709, end=3164033, strand=1),
        Location(locus="region571", start=3192198, end=3192251, strand=1),
        Location(locus="region572", start=3194705, end=3194708, strand=1),
        Location(locus="region573", start=3194791, end=3194794, strand=1),
        Location(locus="region574", start=3232506, end=3232870, strand=1),
        Location(locus="region575", start=3239470, end=3239525, strand=1),
        Location(locus="region576", start=3239564, end=3239587, strand=1),
        Location(locus="region577", start=3247864, end=3247869, strand=1),
        Location(locus="region578", start=3248283, end=3248335, strand=1),
        Location(locus="region579", start=3253733, end=3253738, strand=1),
        Location(locus="region580", start=3258342, end=3258404, strand=1),
        Location(locus="region581", start=3266035, end=3266081, strand=1),
        Location(locus="region582", start=3281221, end=3281240, strand=1),
        Location(locus="region583", start=3307727, end=3307761, strand=1),
        Location(locus="region584", start=3336528, end=3336650, strand=1),
        Location(locus="region585", start=3336704, end=3336705, strand=1),
        Location(locus="region586", start=3336737, end=3336791, strand=1),
        Location(locus="region587", start=3348513, end=3348515, strand=1),
        Location(locus="region588", start=3369930, end=3369931, strand=1),
        Location(locus="region589", start=3369937, end=3369942, strand=1),
        Location(locus="region590", start=3376515, end=3376543, strand=1),
        Location(locus="region591", start=3378094, end=3378269, strand=1),
        Location(locus="region592", start=3379375, end=3380708, strand=1),
        Location(locus="region593", start=3381512, end=3382562, strand=1),
        Location(locus="region594", start=3415197, end=3415211, strand=1),
        Location(locus="region595", start=3463548, end=3463559, strand=1),
        Location(locus="region596", start=3481551, end=3481554, strand=1),
        Location(locus="region597", start=3481568, end=3482541, strand=1),
        Location(locus="region598", start=3482553, end=3482560, strand=1),
        Location(locus="region599", start=3482563, end=3482566, strand=1),
        Location(locus="region600", start=3482568, end=3482572, strand=1),
        Location(locus="region601", start=3484186, end=3484858, strand=1),
        Location(locus="region602", start=3484859, end=3484860, strand=1),
        Location(locus="region603", start=3501334, end=3501335, strand=1),
        Location(locus="region604", start=3502182, end=3502183, strand=1),
        Location(locus="region605", start=3502185, end=3502186, strand=1),
        Location(locus="region606", start=3502194, end=3502195, strand=1),
        Location(locus="region607", start=3502199, end=3502200, strand=1),
        Location(locus="region608", start=3502227, end=3502228, strand=1),
        Location(locus="region609", start=3502230, end=3502231, strand=1),
        Location(locus="region610", start=3502236, end=3502237, strand=1),
        Location(locus="region611", start=3502251, end=3502252, strand=1),
        Location(locus="region612", start=3528083, end=3528084, strand=1),
        Location(locus="region613", start=3528086, end=3528087, strand=1),
        Location(locus="region614", start=3528098, end=3528099, strand=1),
        Location(locus="region615", start=3528101, end=3528102, strand=1),
        Location(locus="region616", start=3528116, end=3528117, strand=1),
        Location(locus="region617", start=3528118, end=3528120, strand=1),
        Location(locus="region618", start=3528128, end=3528129, strand=1),
        Location(locus="region619", start=3528139, end=3528140, strand=1),
        Location(locus="region620", start=3528143, end=3528144, strand=1),
        Location(locus="region621", start=3528157, end=3528159, strand=1),
        Location(locus="region622", start=3528164, end=3528165, strand=1),
        Location(locus="region623", start=3528191, end=3528192, strand=1),
        Location(locus="region624", start=3528197, end=3528198, strand=1),
        Location(locus="region625", start=3528674, end=3528971, strand=1),
        Location(locus="region626", start=3528974, end=3529181, strand=1),
        Location(locus="region627", start=3537803, end=3537820, strand=1),
        Location(locus="region628", start=3551226, end=3552585, strand=1),
        Location(locus="region629", start=3552587, end=3554067, strand=1),
        Location(locus="region630", start=3558759, end=3558794, strand=1),
        Location(locus="region631", start=3590644, end=3590647, strand=1),
        Location(locus="region632", start=3590653, end=3590658, strand=1),
        Location(locus="region633", start=3590662, end=3590663, strand=1),
        Location(locus="region634", start=3590667, end=3590678, strand=1),
        Location(locus="region635", start=3590685, end=3590686, strand=1),
        Location(locus="region636", start=3594288, end=3594343, strand=1),
        Location(locus="region637", start=3594400, end=3594455, strand=1),
        Location(locus="region638", start=3595987, end=3596005, strand=1),
        Location(locus="region639", start=3617102, end=3617103, strand=1),
        Location(locus="region640", start=3663727, end=3663889, strand=1),
        Location(locus="region641", start=3707616, end=3707622, strand=1),
        Location(locus="region642", start=3710381, end=3712611, strand=1),
        Location(locus="region643", start=3730518, end=3730519, strand=1),
        Location(locus="region644", start=3730578, end=3730582, strand=1),
        Location(locus="region645", start=3730583, end=3732792, strand=1),
        Location(locus="region646", start=3735635, end=3736072, strand=1),
        Location(locus="region647", start=3736074, end=3736087, strand=1),
        Location(locus="region648", start=3736098, end=3736102, strand=1),
        Location(locus="region649", start=3736107, end=3736108, strand=1),
        Location(locus="region650", start=3737092, end=3737207, strand=1),
        Location(locus="region651", start=3737268, end=3737497, strand=1),
        Location(locus="region652", start=3737804, end=3737808, strand=1),
        Location(locus="region653", start=3737814, end=3737818, strand=1),
        Location(locus="region654", start=3737828, end=3737836, strand=1),
        Location(locus="region655", start=3737992, end=3738961, strand=1),
        Location(locus="region656", start=3738977, end=3738985, strand=1),
        Location(locus="region657", start=3739052, end=3739056, strand=1),
        Location(locus="region658", start=3739131, end=3739133, strand=1),
        Location(locus="region659", start=3739159, end=3739163, strand=1),
        Location(locus="region660", start=3739194, end=3739202, strand=1),
        Location(locus="region661", start=3739207, end=3739839, strand=1),
        Location(locus="region662", start=3739841, end=3739845, strand=1),
        Location(locus="region663", start=3739857, end=3739864, strand=1),
        Location(locus="region664", start=3739866, end=3739883, strand=1),
        Location(locus="region665", start=3739886, end=3739887, strand=1),
        Location(locus="region666", start=3740065, end=3740083, strand=1),
        Location(locus="region667", start=3740088, end=3740107, strand=1),
        Location(locus="region668", start=3740120, end=3740131, strand=1),
        Location(locus="region669", start=3740138, end=3740140, strand=1),
        Location(locus="region670", start=3740161, end=3740208, strand=1),
        Location(locus="region671", start=3740214, end=3740229, strand=1),
        Location(locus="region672", start=3740302, end=3740322, strand=1),
        Location(locus="region673", start=3740338, end=3740574, strand=1),
        Location(locus="region674", start=3740592, end=3740604, strand=1),
        Location(locus="region675", start=3740617, end=3740620, strand=1),
        Location(locus="region676", start=3740630, end=3740632, strand=1),
        Location(locus="region677", start=3740644, end=3740655, strand=1),
        Location(locus="region678", start=3740659, end=3740666, strand=1),
        Location(locus="region679", start=3740681, end=3740698, strand=1),
        Location(locus="region680", start=3740702, end=3740904, strand=1),
        Location(locus="region681", start=3740915, end=3740927, strand=1),
        Location(locus="region682", start=3741172, end=3741178, strand=1),
        Location(locus="region683", start=3741286, end=3741394, strand=1),
        Location(locus="region684", start=3741502, end=3741604, strand=1),
        Location(locus="region685", start=3741624, end=3741633, strand=1),
        Location(locus="region686", start=3741681, end=3741914, strand=1),
        Location(locus="region687", start=3741942, end=3742247, strand=1),
        Location(locus="region688", start=3742250, end=3742256, strand=1),
        Location(locus="region689", start=3742316, end=3742371, strand=1),
        Location(locus="region690", start=3743710, end=3753184, strand=1),
        Location(locus="region691", start=3753413, end=3754169, strand=1),
        Location(locus="region692", start=3754194, end=3754208, strand=1),
        Location(locus="region693", start=3766851, end=3766852, strand=1),
        Location(locus="region694", start=3779545, end=3779766, strand=1),
        Location(locus="region695", start=3779809, end=3779899, strand=1),
        Location(locus="region696", start=3779936, end=3779981, strand=1),
        Location(locus="region697", start=3780156, end=3780175, strand=1),
        Location(locus="region698", start=3794868, end=3796415, strand=1),
        Location(locus="region699", start=3802134, end=3803827, strand=1),
        Location(locus="region700", start=3820406, end=3820407, strand=1),
        Location(locus="region701", start=3820428, end=3820429, strand=1),
        Location(locus="region702", start=3820504, end=3820505, strand=1),
        Location(locus="region703", start=3820507, end=3820508, strand=1),
        Location(locus="region704", start=3820522, end=3820523, strand=1),
        Location(locus="region705", start=3820544, end=3820545, strand=1),
        Location(locus="region706", start=3841661, end=3841663, strand=1),
        Location(locus="region707", start=3842145, end=3842437, strand=1),
        Location(locus="region708", start=3842471, end=3842551, strand=1),
        Location(locus="region709", start=3843353, end=3843354, strand=1),
        Location(locus="region710", start=3843355, end=3843356, strand=1),
        Location(locus="region711", start=3843360, end=3843363, strand=1),
        Location(locus="region712", start=3843519, end=3843520, strand=1),
        Location(locus="region713", start=3843530, end=3843531, strand=1),
        Location(locus="region714", start=3843535, end=3843536, strand=1),
        Location(locus="region715", start=3843695, end=3843696, strand=1),
        Location(locus="region716", start=3843703, end=3843704, strand=1),
        Location(locus="region717", start=3843713, end=3843714, strand=1),
        Location(locus="region718", start=3843748, end=3843749, strand=1),
        Location(locus="region719", start=3843750, end=3843753, strand=1),
        Location(locus="region720", start=3843759, end=3843760, strand=1),
        Location(locus="region721", start=3844681, end=3844756, strand=1),
        Location(locus="region722", start=3845970, end=3847214, strand=1),
        Location(locus="region723", start=3847700, end=3847711, strand=1),
        Location(locus="region724", start=3862570, end=3862575, strand=1),
        Location(locus="region725", start=3862576, end=3862578, strand=1),
        Location(locus="region726", start=3873526, end=3873540, strand=1),
        Location(locus="region727", start=3878561, end=3878637, strand=1),
        Location(locus="region728", start=3883794, end=3883815, strand=1),
        Location(locus="region729", start=3883818, end=3884835, strand=1),
        Location(locus="region730", start=3890775, end=3892136, strand=1),
        Location(locus="region731", start=3926568, end=3930714, strand=1),
        Location(locus="region732", start=3931004, end=3936710, strand=1),
        Location(locus="region733", start=3939616, end=3944963, strand=1),
        Location(locus="region734", start=3945413, end=3945417, strand=1),
        Location(locus="region735", start=3945793, end=3950263, strand=1),
        Location(locus="region736", start=3950927, end=3951150, strand=1),
        Location(locus="region737", start=3998607, end=3998613, strand=1),
        Location(locus="region738", start=3998824, end=3998868, strand=1),
        Location(locus="region739", start=3998879, end=3998880, strand=1),
        Location(locus="region740", start=4031821, end=4031838, strand=1),
        Location(locus="region741", start=4031924, end=4031943, strand=1),
        Location(locus="region742", start=4031955, end=4032014, strand=1),
        Location(locus="region743", start=4032019, end=4032024, strand=1),
        Location(locus="region744", start=4032382, end=4032639, strand=1),
        Location(locus="region745", start=4036846, end=4037194, strand=1),
        Location(locus="region746", start=4037349, end=4037350, strand=1),
        Location(locus="region747", start=4037353, end=4037354, strand=1),
        Location(locus="region748", start=4037446, end=4037497, strand=1),
        Location(locus="region749", start=4038844, end=4038845, strand=1),
        Location(locus="region750", start=4038846, end=4038882, strand=1),
        Location(locus="region751", start=4052949, end=4053603, strand=1),
        Location(locus="region752", start=4094066, end=4094346, strand=1),
        Location(locus="region753", start=4120925, end=4120926, strand=1),
        Location(locus="region754", start=4120955, end=4121197, strand=1),
        Location(locus="region755", start=4139502, end=4139566, strand=1),
        Location(locus="region756", start=4139567, end=4139569, strand=1),
        Location(locus="region757", start=4155459, end=4155516, strand=1),
        Location(locus="region758", start=4155525, end=4155582, strand=1),
        Location(locus="region759", start=4156828, end=4156857, strand=1),
        Location(locus="region760", start=4168470, end=4168482, strand=1),
        Location(locus="region761", start=4175392, end=4175410, strand=1),
        Location(locus="region762", start=4201240, end=4201294, strand=1),
        Location(locus="region763", start=4231319, end=4232393, strand=1),
        Location(locus="region764", start=4253022, end=4253024, strand=1),
        Location(locus="region765", start=4253116, end=4254170, strand=1),
        Location(locus="region766", start=4318423, end=4319123, strand=1),
        Location(locus="region767", start=4340937, end=4340993, strand=1),
        Location(locus="region768", start=4353179, end=4353460, strand=1),
        Location(locus="region769", start=4353839, end=4353891, strand=1),
        Location(locus="region770", start=4359134, end=4359135, strand=1),
        Location(locus="region771", start=4361058, end=4361100, strand=1),
        Location(locus="region772", start=4368618, end=4368637, strand=1),
        Location(locus="region773", start=4369564, end=4369624, strand=1),
    ]

    @doc_inherit
    def load_from_web_and_db(self):
        response = requests.get(self.url)
        if response.status_code == 200:
            self.regions = bed_to_regions(StringIO(response.text))
