code: def computePCs(plink_path,k,bfile,ffile):
      
      try:
          output = subprocess.check_output('%s --version --noweb'%plink_path,shell=True)
          use_plink = float(output.split(' ')[1][1:-3])>=1.9
      except:
          use_plink = False
  
  
      assert bfile!=None, 'Path to bed-file is missing.'
      assert os.path.exists(bfile+'.bed'), '%s.bed is missing.'%bfile
      assert os.path.exists(bfile+'.bim'), '%s.bim is missing.'%bfile
      assert os.path.exists(bfile+'.fam'), '%s.fam is missing.'%bfile
  
      # create dir if it does not exist
      out_dir = os.path.split(ffile)[0]
      if out_dir!='' and (not os.path.exists(out_dir)):
          os.makedirs(out_dir)
  
      if use_plink:
          computePCsPlink(plink_path,k,out_dir,bfile,ffile)
      else:
          computePCsPython(out_dir,k,bfile,ffile)
docs: compute the first k principal components
  
      Input:
      k            :   number of principal components
      plink_path   :   plink path
      bfile        :   binary bed file (bfile.bed, bfile.bim and bfile.fam are required)
      ffile        :   name of output file