我目前正在制作一个脚本,用于分析一些遗传数据,然后在彩色Word文档上生成输出。脚本有效,但是,脚本中的一种方法写得不好,即创建Word文档的方法。
创建文档的方法创建一个独立的HTML文件,然后以"docx"扩展名保存,这允许我为文档的不同部分提供不同的样式。
以下是使其正常工作的最低要求。它包括一些示例输入数据,这些数据将在最后一步之前以不同的方法创建并存储在哈希中,以及必要的方法。
require 'bio'
def make_hash(input_file)
input_read = Hash.new
biofastafile = Bio::FlatFile.open(Bio::FastaFormat, input_file)
biofastafile.each_entry do |entry|
input_read[entry.definition] = entry.aaseq
end
return input_read
end
def to_doc(hash, output, motif)
output_file = File.new(output, "w")
output_file.puts "<!DOCTYPE html><html><head><style> .id{font-weight: bold;} .signalp{color:#000099; font-weight: bold;} .motif{color:#FF3300; font-weight: bold;} h3 {word-wrap: break-word;} p {word-wrap: break-word; font-family:Courier New, Courier, Mono;}</style></head><body>"
hash.each do |id, seq|
sequence = seq.to_s.gsub("["", "").gsub(""]", "")
id.scan(/(w+)(.*)/) do |id_start, id_end|
output_file.puts "<p><span class="id"> >#{id_start}</span><span>#{id_end}</span><br>"
output_file.puts "<span class="signalp">"
sequence.scan(/(w+)-(w+)/) do |signalp, seq_end|
output_file.puts signalp + "</span>" + seq_end.gsub(/#{motif}/, '<span class="motif">