1

我从http://ncbi.nlm.nih.gov/genomes/FLU/Database/nph-select.cgi#mainform下载蛋白质序列,文件名为 FASTA.FA。对于文件中的每个蛋白质,它包括一个描述行,然后在每 70 个字符后用新行分隔蛋白质序列。

例子:

>CAA47401 B/Yamagata/16/88 1988// NA MLPSTIQTLTLFLTSGGVLLSLYVSASLSYLLYSDILLKFSPTEITAPKVPLDCANASNVQAVNRSATKG MTLLLSEPEWTYPRLSCQGSTFQKALLISPHRFGESRGNSAPLIIREPFIACGPKECKHFALTHYAAQPG >AAB26739 Influenza B virus 1973// NA MLPSTIQTLTLFLTSGGVLLSLYVSASLSYLLYSDILLKFSPTKITAPTMSLDCANVSNVQAVNRSATKE DVPCIGIEMVHDGGKETWHSAATAIYCLMGSGQLLWDIVTGVAMAL

我有一个 ruby​​ 脚本,可以将其转换为更适合 Excel 的文件,其中第一行获取一个单元格,整个蛋白质序列获取另一个单元格(perl 在两者之间创建一个制表符,Excel 将用制表符分隔的内容放在一个新单元格中) .

这是我的脚本:

ruby -e 'first_line = true; while line = STDIN.gets; line.chomp!; 
if line =~ /^>/; puts unless first_line; print line[1..-1]; print "\t"; 
else; print line; end; first_line = false; end; puts' < ~/Downloads/FASTA.fa > ~/Downloads/Sequences.xls

在我下载文件的网站上,您可以更改第一行的格式,我在每个描述之间添加一个“+”,然后我有一个将 + 转换为制表符的 perl 脚本(一些描述中有一个空格) ,所以我不能使用空格作为分隔符)。

perl -p -i -e "s/\+/\t/g" ~/Downloads/Sequences.xls

这两个 hack 成功地为我创建了一个不错的 excel 文件,并且我从我的 Dock 中的这两个脚本制作了一个 Automator 程序。

但是,现在我的小组希望我从中创建一个 AppleScript。如果我理解正确的话,它并不像只输入“do shell script”然后粘贴脚本那么简单,但您必须格式化实际脚本本身,以便applescript 理解它。有人可以帮我创建这个吗?

谢谢!

4

1 回答 1

0

我会说你应该将 ruby​​ 脚本制作成一个适当的.rb文件,当你使用它时,使用 Ruby 进行制表符替换(或者使用Spreadsheet gem,如果你想要更高级的 Excel 输出,尽管这可能需要一些在别人的电脑上设置)。或者全部在 Perl 中完成。只是为了省去为这些琐碎的搜索/替换内容启动两个运行时的麻烦。就此而言,您可以在 中完成所有操作sed,我敢肯定。

无论如何,一旦将脚本作为文件,您可以在 AppleScript Editor 中创建一个新脚本并将其保存为script bundle。然后您可以将脚本包含在您的 AppleScript 中。这样,您就知道脚本在哪里,并且如果需要,它们更容易编辑。然后,您可以使用do shell script正确的参数调用脚本。简化示例:

-- get script path
set rb to POSIX path of (path to me) & "Contents/Resources/Scripts/convert.rb"

-- run script
do shell script "ruby '" & rb & "' < inputfile.fa > outputfile.xls"

如果你愿意,你甚至可以进行一些拖放转换,而不是硬编码路径~/Downloads/FASTA.fa(如果有人忘记移动/删除旧下载,它会继续转换那个,并写在同一个xls,因为新的下载将是“FASTA-1.fa”之类的,所以如果可以的话,请避免使用硬编码路径)

于 2012-06-17T13:53:14.760 回答