code: def load_mapfile(self, map3=False):
          
          cols = [0, 1, 3]
          if map3:
              cols = [0, 1, 2]
          markers = numpy.loadtxt(self.mapfile, dtype=str, usecols=cols)
  
          self.snp_mask = numpy.ones(markers.shape[0]*2,
                                     dtype=numpy.int8).reshape(-1, 2)
  
          if DataParser.boundary.NoExclusions():
              self.markers = numpy.zeros((markers.shape[0], 2), dtype=int)
              # Check for plink's "off" mode
              mask = markers[:, 2].astype(int) >= 0
              # Turn them all 'on'
              self.snp_mask[:,0] = ~mask
              self.snp_mask[:,1] = ~mask
              snp_count = numpy.sum(self.snp_mask[:, 0] == 0)
  
              self.markers[0:snp_count, 0] = markers[:, 0].astype(int)[mask]
              self.markers[0:snp_count, 1] = markers[:, 2].astype(int)[mask]
              self.rsids = markers[:, 1][mask]
              self.markers = self.markers[0:snp_count]
          else:
              idx = 0
              self.markers = []
              self.rsids   = []
              for locus in markers:
                  if DataParser.boundary.TestBoundary(int(locus[0]),
                                                      int(locus[2]), locus[1]):
                      self.markers.append([locus[0], locus[2]])
                      self.rsids.append(locus[1])
                      self.snp_mask[idx] = 0
                  idx += 1
              self.markers = numpy.array(self.markers, dtype=numpy.int)
              self.rsids   = numpy.array(self.rsids)
  
          # We don't follow these rules here
          DataParser.boundary.beyond_upper_bound = False
          self.locus_count    = len(self.markers)
docs: Load the marker data
  
          :param map3: When true, ignore the gen. distance column
  
          Builds up the marker list according to the boundary configuration