Mic*_*ael 3 ruby csv smartercsv
我一直在使用 SmarterCSV 将床格式文件转换为 csv 文件并更改列名称。
现在我收集了几个 CSV 文件,并想将它们组合成一个大的 CSV 文件。
在test3.csv,有三列,chromosome,start_site和end_site将要使用,其他三列,binding_site_pattern,score和strand将被删除。
通过向 test3.csv 文件中添加三个新列,列中的数据全部相同transcription_factor:Cmyc,cell_type列中:PWM,project_name列中:JASPAR。
有没有人对此有任何想法?
测试1.csv
transcription_factor,cell_type,chromosome,start_site,end_site,project_name
Cmyc,GM12878,11,809296,809827,ENCODE
Cmyc,GM12878,11,6704236,6704683,ENCODE
Run Code Online (Sandbox Code Playgroud)
测试2.csv
transcription_factor,cell_type,chromosome,start_site,end_site,project_name
Cmyc,H1ESC,19,9710417,9710587,ENCODE
Cmyc,H1ESC,11,541754,542137,ENCODE
Run Code Online (Sandbox Code Playgroud)
测试3.csv
chromosome,start_site,end_site,binding_site_pattern,score,strand
chr1,21942,21953,AAGCACGTGGT,1752,+
chr1,21943,21954,AACCACGTGCT,1335,-
Run Code Online (Sandbox Code Playgroud)
期望的组合结果:
transcription_factor,cell_type,chromosome,start_site,end_site,project_name
Cmyc,GM12878,11,809296,809827,ENCODE
Cmyc,GM12878,11,6704236,6704683,ENCODE
Cmyc,H1ESC,19,9710417,9710587,ENCODE
Cmyc,H1ESC,11,541754,542137,ENCODE
Cmyc,PWM,1,21942,21953,JASPAR
Cmyc,PWM,1,21943,21954,JASPAR
Run Code Online (Sandbox Code Playgroud)
hs = %w{ transcription_factor cell_type chromosome start_site end_site project_name }
CSV.open('result.csv','w') do |csv|
csv << hs
CSV.foreach('test1.csv', headers: true) {|row| csv << row.values_at(*hs) }
CSV.foreach('test2.csv', headers: true) {|row| csv << row.values_at(*hs) }
CSV.foreach('test3.csv', headers: true) do |row|
csv << ['Cmyc', 'PWM', row['chromosome'].match(/\d+/).to_s] + row.values_at('start_site', 'end_site') + ['JASPAR']
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4697 次 |
| 最近记录: |