#!/usr/bin/python """ Generate relatedness matrix files for GEMMA from BIMBAM genotype/phenotype files This file goes through all of the BIMBAM files in the bimbam diretory and uses GEMMA to generate their corresponding kinship/relatedness matrix file """ import sys sys.path.append("..") import os import glob class GenerateKinshipMatrices: def __init__(self, group_name, geno_file, pheno_file): self.group_name = group_name self.geno_file = geno_file self.pheno_file = pheno_file def generate_kinship(self): gemma_command = "/gnu/store/xhzgjr0jvakxv6h3blj8z496xjig69b0-profile/bin/gemma -g " + self.geno_file + \ " -p " + self.pheno_file + \ " -gk 1 -outdir /home/zas1024/genotype_files/genotype/bimbam/ -o " + self.group_name print("command:", gemma_command) os.system(gemma_command) @classmethod def process_all(self, geno_dir, bimbam_dir): os.chdir(geno_dir) for input_file in glob.glob("*"): if not input_file.endswith(('geno', '.geno.gz')): continue group_name = ".".join(input_file.split('.')[:-1]) if group_name == "HSNIH-Palmer": continue geno_input_file = os.path.join( bimbam_dir, group_name + "_geno.txt") pheno_input_file = os.path.join( bimbam_dir, group_name + "_pheno.txt") convertob = GenerateKinshipMatrices( group_name, geno_input_file, pheno_input_file) try: convertob.generate_kinship() except EmptyConfigurations as why: print(" No config info? Continuing...") continue except Exception as why: print(" Exception:", why) print(traceback.print_exc()) print(" Found in row %s at tabular column %s" % (convertob.latest_row_pos, convertob.latest_col_pos)) print(" Column is:", convertob.latest_col_value) print(" Row is:", convertob.latest_row_value) break if __name__ == "__main__": Geno_Directory = """/export/local/home/zas1024/genotype_files/genotype/""" Bimbam_Directory = """/export/local/home/zas1024/genotype_files/genotype/bimbam/""" GenerateKinshipMatrices.process_all(Geno_Directory, Bimbam_Directory) # ./gemma -g /home/zas1024/genotype_files/genotype/bimbam/BXD_geno.txt -p /home/zas1024/genotype_files/genotype/bimbam/BXD_pheno.txt -gk 1 -o BXD