def _prepare_samples(self): """ private method to load sample information """ if not self.args.no_genotypes: self.samples = self.vcf_reader.samples self.sample_to_id = {} for idx, sample in enumerate(self.samples): self.sample_to_id[sample] = idx + 1 self.ped_hash = {} if self.args.ped_file is not None: header = get_ped_fields(self.args.ped_file) for line in open(self.args.ped_file, 'r'): if line.startswith("#"): continue fields = line.split() linedict = dict(zip(header, line.split())) self.ped_hash[fields[1]] = fields sample_list = [] for sample in self.samples: i = self.sample_to_id[sample] if sample in self.ped_hash: fields = self.ped_hash[sample] sample_list = [i] + fields elif len(self.ped_hash) > 0: sys.exit("EXITING: sample %s found in the VCF but " "not in the PED file.\n" % (sample)) else: # if there is no ped file given, just fill in the name and # sample_id and set the other required fields to None sample_list = [i, None, sample] sample_list += list(repeat(None, len(default_ped_fields) - 2)) database.insert_sample(self.c, sample_list)
def create_sample_table(cursor, args): NUM_BUILT_IN = 6 fields = get_ped_fields(args.ped_file) required = "sample_id integer" optional_fields = ["family_id", "name", "paternal_id", "maternal_id", "sex", "phenotype"] optional_fields += fields[NUM_BUILT_IN:] + ["PRIMARY KEY(sample_id ASC)"] optional = " text default NULL,".join(optional_fields) structure = """{0}, {1}""".format(required, optional) creation = "create table if not exists samples ({0})".format(structure) cursor.execute(creation)
def create_sample_table(cursor, args): NUM_BUILT_IN = 6 fields = get_ped_fields(args.ped_file) required = "sample_id integer" optional_fields = ["family_id", "name", "paternal_id", "maternal_id", "sex", "phenotype"] optional_fields += fields[NUM_BUILT_IN:] + ["PRIMARY KEY(sample_id ASC)"] optional = " text default NULL,".join(optional_fields) structure = '''{0}, {1}'''.format(required, optional) creation = "create table if not exists samples ({0})".format(structure) cursor.execute(creation)
def amend_sample(args): loaded_subjects = get_subjects(args) ped_dict = load_ped_file(args.sample) header = get_ped_fields(args.sample) with database_transaction(args.db) as c: for k, v in loaded_subjects.items(): if k in ped_dict: item_list = map(quote_string, ped_dict[k]) sample = zip(header, item_list) set_str = ",".join([str(x) + "=" + str(y) for (x, y) in sample]) sql_query = "update samples set {0} where sample_id={1}" c.execute(sql_query.format(set_str, v.sample_id))
def amend_sample(args): loaded_subjects = get_subjects(args) ped_dict = load_ped_file(args.sample) header = get_ped_fields(args.sample) with database_transaction(args.db) as c: for k, v in loaded_subjects.items(): if k in ped_dict: item_list = map(quote_string, ped_dict[k]) sample = zip(header, item_list) set_str = ",".join( [str(x) + "=" + str(y) for (x, y) in sample]) sql_query = "update samples set {0} where sample_id={1}" c.execute(sql_query.format(set_str, v.sample_id))
def create_sample_table(cursor, metadata, args): NUM_BUILT_IN = 6 cols = [sql.Column("sample_id", sql.Integer, primary_key=True)] fields = get_ped_fields(args.ped_file) optional_fields = ["family_id", "name", "paternal_id", "maternal_id", "sex", "phenotype"] optional_fields += fields[NUM_BUILT_IN:] for field in optional_fields: if field == "name": cols.append(sql.Column(field, sql.String(50))) else: cols.append(sql.Column(field, sql.TEXT)) t = sql.Table("samples", metadata, *cols) t.drop(checkfirst=True) metadata.create_all(tables=[t])
def create_sample_table(cursor, metadata, args): NUM_BUILT_IN = 6 cols = [sql.Column("sample_id", sql.Integer, primary_key=True)] fields = get_ped_fields(args.ped_file) optional_fields = [ "family_id", "name", "paternal_id", "maternal_id", "sex", "phenotype" ] optional_fields += fields[NUM_BUILT_IN:] for field in optional_fields: if field == "name": cols.append(sql.Column(field, sql.String(50))) else: cols.append(sql.Column(field, sql.TEXT)) t = sql.Table("samples", metadata, *cols) t.drop(checkfirst=True) metadata.create_all(tables=[t])