我發現很難做到這一點
# Save the bash process in a python variable
cmd='bedtools intersect -wao -b/path/file_a -a /path/file_b'
p=Popen(cmd,shell=True,stdin=PIPE,stdout=PIPE,stderr=STDOUT,close_fds=True)
output=p.stdout.read()
# Import this string that is a tsv
df=StringIO(output)
cnvs=pd.read_csv(df,
sep='\t',
index_col=False,
names=['#CHROM',
'START',
'END',
'CNV_TYPE'
'CNV ID',
'Chromosome_g'.
'Transcript_start_g',
'Transcript_end_g',
'Transcript_stable_ID_g',
'canonical_g',
'Gene stable_ID_g',
'Gene_name_g',
'amount_overlap_g'])
我一直在嘗試從不同教程中找到的不同方法。現在我得到了錯誤
TypeError:initial_value must be a str or None, not bites
不僅僅是修復錯誤,我想知道這是否是這樣做的方式。
最初我將 bash 命令的輸出保存在一個檔案中,然后將檔案加載到 pandas 中。我不僅認為這不是最可悲的做法,而且我在 HPC 中作業,創建檔案非常慢。
uj5u.com熱心網友回復:
就個人而言,我認為這并不是特別不合時宜的。如果我有一個將 tsv 列印到標準輸出的命令,我或多或少會做些什么。要修復錯誤,請注意 stdout 是一個位元組物件。因此,使用BytesIO而不是StringIO. (另外,我會使用with Popen(...) as p:; 這有點Pythonic)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/479702.html
上一篇:無法生成詞云-Python
