Вывод исполняемого файла в формате CSV. Я хочу один заголовок и все данные вместе - PullRequest
0 голосов
/ 09 февраля 2020

Мне нужны заголовки в одной строке и все данные в следующих строках. наконец, мне нужно добавить последний столбец «E» и получить общее значение. (self.bin - это исполняемый файл).

def run(self ) :
    query = self.args.query
    target = self.args.target
    complete = str(self.bin + ' -q ' + query + ' -t ' + target +' --outMode=C -n 1')
    ps = s.Popen(str(complete),  stdin = s.PIPE, stdout = s.PIPE, universal_newlines=True)
    (stdout, stderr) = ps.communicate()
    print("B1: \n")
    self.b1 = stdout
    print(self.b1)
    print("B2: \n")
    print(self.b2)

    self.block_b1(self.b1, self.b2, self.b3)

def block_b1(self, b1, b2, b3):
    query = self.args.query
    target = self.args.target
    result_array=self.b1.split(';')
    res=[]
    for item in result_array:
        if item.isdigit():
            res.append(item)
    x = ' --tAccConstr="b:'+res[0]+'-'+res[1]+'" --qAccConstr="b:'+res[2]+'-'+res[3]+'" '
    complete = str(self.bin + ' -q ' + query + x + ' -t ' + target + ' --outMode=C -n 1')
    ps = s.Popen(str(complete),  stdin = s.PIPE, stdout = s.PIPE, universal_newlines=True)
    (stdout, stderr) = ps.communicate()
    print("B3: \n")
    self.b3 = stdout
    print(self.b3)

Приведенный выше код дает мне вывод, подобный следующему:

B1:

id1;start1;end1;id2;start2;end2;subseqDP;hybridDP;E
target;39;45;query;98;104;UCCUGGA&UCCAGGA;(((((((&)))))));-4.37

B2:

None

B3:

id1;start1;end1;id2;start2;end2;subseqDP;hybridDP;E
target;87;93;query;24;30;CAAGGGU&ACCCUUG;(((((((&)))))));-3.62

Я хочу, чтобы вывод выглядел следующим образом:

B1, B2 and B3 values are:
id1;start1;end1;id2;start2;end2;subseqDP;hybridDP;E
target;39;45;query;98;104;UCCUGGA&UCCAGGA;(((((((&)))))));-4.37
None
target;87;93;query;24;30;CAAGGGU&ACCCUUG;(((((((&)))))));-3.62

Total E VALUE : - 7.99

Ответы [ 2 ]

0 голосов
/ 09 февраля 2020
 def block_b1(self, b1, b2, b3):
  query = self.args.query
  target = self.args.target
  result_array=self.b1.split(';')
  res=[]
  for item in result_array:
    if item.isdigit():
        res.append(item)
  x = ' --tAccConstr="b:'+res[0]+'-'+res[1]+'" --qAccConstr="b:'+res[2]+'-'+res[3]+'" '
  complete = str(self.bin + ' -q ' + query + x + ' -t ' + target + ' --outMode=C -n 1')
  ps = s.Popen(str(complete),  stdin = s.PIPE, stdout = s.PIPE, universal_newlines=True)
 (stdout, stderr) = ps.communicate()
  print("B1, B2 and B3 values are \n")
  self.b3 = stdout
  print(self.b1)
  print(self.b2)
  print(self.b3)
  print("Total value for E",sum)
0 голосов
/ 09 февраля 2020
def run(self):
   query=self.args.query
   target = self.args.target
   complete = str(self.bin + ' -q ' + query + ' -t ' + target +' --outMode=C -n 1')
   ps = s.Popen(str(complete),  stdin = s.PIPE, stdout = s.PIPE, universal_newlines=True)
 (stdout, stderr) = ps.communicate()
  self.b1 = stdout
  self.block_b1(self.b1, self.b2, self.b3)
...