code: def load_family_details(self, pheno_covar):
          
          self.file_index = 0
          # 1s indicate an individual is to be masked out
          mask_components = []
  
          file = self.family_details
          if DataParser.compressed_pedigree:
              data, serr = sys_call('gunzip -c %s | wc -l' % (file))
              self.line_count = int(data[0].strip().split(" ")[0])
              iddata, serr = sys_call('gunzip -c %s | cut -f 1' % (file))
          else:
              data, serr = sys_call('wc -l %s' % (file))
              self.line_count = int(data[0].strip().split(" ")[0])
              iddata, serr = sys_call('cat %s | cut -f 1' % (file))
  
          ids_observed = set()
          for line in iddata:
              indid = line.strip().split()[0]
              indid = ":".join(indid.split("->"))
  
              ExitIf("Duplicate ID found in dose file: %s" % (indid), indid in ids_observed)
              ids_observed.add(indid)
  
              if DataParser.valid_indid(indid):
                  mask_components.append(0)
                  pheno_covar.add_subject(indid, PhenoCovar.missing_encoding, PhenoCovar.missing_encoding)
              else:
                  mask_components.append(1)
  
          self.ind_mask = numpy.array(mask_components) == 1
          self.ind_count = self.ind_mask.shape[0]
          pheno_covar.freeze_subjects()
docs: Load contents from the .fam file, updating the pheno_covar with \
              family ids found.
  
          :param pheno_covar: Phenotype/covariate object
          :return: None