我有2个文件,我使用python类方法来解析数据并创建sql INSERT语句。在我的两个文件中,我都有一个基因名称列表。第一个文件是20个基因名称的简单列表,其中面板名称始终相同。第二个文件有关于基因的更多信息,每个基因名称将有多个条目。
我的代码目前看起来像:
class Gene(object):
def __init__(self, gene):
self.gene = gene
def make_gene_sql(self):
sql = """INSERT INTO gene ("""+"'"+self.gene+"', '"+panel+"')"
return sql
class Variants(object):
def __init__(self, gene, run_id, sample, variant):
self.run_id = run_id
self.sample = sample
self.gene = gene
self.variant = variant
def make_vsr_sql(self):
sql = "INSERT INTO variants_sample_run ("+ "'"+self.sample +"', '"+self.gene +"', '"+self.variant +"', '"+self.run_id+"')"
return sql
gene_file = open(gene_path, 'r+')
for line in gene_file:
gene_object = Gene(line.strip('\r\n'))
gene_sql = gene_object.make_gene_sql()
cursor.execute(gene_sql)
var_file = open(var_path, 'r+')
for line in var_file.readlines()[1:]:
item = line.split('\t')
sample = item[0]
run = item[1]
gene = item[2]
variant = item[3]
variants_object = Variants(gene, run, sample, variant)
sql = variants_object.make_var_sql()
cursor.execute(sql)
我的问题是:有没有办法让Variants类继承Gene类,并创建一个新函数来检查我的variants_object中的基因变量是否在genes_object中?我通过基因类传递我的变量,以确保我的var_file中的基因变量肯定在基因文件中?像这样的东西(但实际上有效!)?
class Variants(Gene):
def __init__(self, gene, run_id, sample, variant):
self.run_id = run_id
self.sample = sample
self.gene = gene.gene
self.variant = variant
def check_gene(gene):
if self.gene not in gene.gene:
print('Gene not correct')
def make_vsr_sql(self):
sql = "INSERT INTO variants_sample_run ("+ "'"+self.sample +"', '"+self.gene +"', '"+self.variant +"', '"+self.run_id+"')"
return sql
我原本以为这可能会使用从包含所有基因的Gene类创建的列表,但是我不确定这是否是最好的方法呢?
答案 0 :(得分:0)
class Variants(Gene):
def __init__(self, gene, run_id, sample, variant):
self.run_id = run_id
self.sample = sample
self.gene = gene.gene
self.variant = variant
def check_gene(gene):
if self.gene not in gene.gene:
print('Gene not correct')
答案 1 :(得分:0)
我认为继承可以帮助你解决这个问题。您可以尝试为所有Gene
:
class Gene(object):
# The class variable that keeps track of all genes
genes = []
def __init__(self, gene):
Gene.genes.append(gene)
self.gene = gene
您的Variants
班级:
class Variants(Gene):
def __init__(self, gene, run_id, sample, variant):
self.run_id = run_id
self.sample = sample
self.gene = gene
self.variant = variant
def check_gene(gene):
if self.gene not in Gene.gene:
print('Gene not correct')