docs: def get_header(self, individual=-1):
          """Returns the vcf header
  
          """
          type_map = dict([(val,key) for key,val in self.meta.type_map.iteritems()])
          extra = '\n'.join(['##{0}'.format(i) for i in self.meta.extra])
          info = '\n'.join(['##INFO=<ID={0},Number={1},Type={2},Description={3}>'.format(key, val.get('num_entries','.'), type_map.get(val.get('type', '')), val.get('description')) for key,val in self.meta.info.iteritems()])
          filter = '\n'.join(['##FILTER=<ID={0},Description={1}>'.format(key, val.get('description','.')) for key,val in self.meta.filter.iteritems()])
          format = '\n'.join(['##FORMAT=<ID={0},Number={1},Type={2},Description={3}>'.format(key, val.get('num_entries','.'), type_map.get(val.get('type', '')), val.get('description')) for key,val in self.meta.format.iteritems()])
          alt = '\n'.join(['##ALT=<ID={0},Description={1}>'.format(key, val.get('description','.')) for key,val in self.meta.alt.iteritems()])
          header = '\t'.join(['#CHROM','POS','ID','REF','ALT','QUAL','FILTER','INFO','FORMAT'])
          if individual is not None:
              if individual == -1:
                  individual = '\t'.join(self.individuals.keys())
              else:
                  if isinstance(individual, int):
                      for i, v in self.individuals.iteritems():
                          if v == individual:
                              individual = i
                              break
              header += '\t'+individual
          return '\n'.join([extra, info, filter, format, alt, header])