#!/usr/bin/env ruby lines = File.readlines(ARGV[0]) header = lines.shift.chomp.split(",") i = header.index("Canonical SMILES") smi = lines.collect{|l| l.chomp.split(",")[i]} File.open("/tmp/smi","w+"){|f| f.puts smi.join("\n")} # avoid "Argument list too long (Errno::E2BIG)" mp2d = `cat /tmp/smi | obabel -ismi - -ompd`.split("\n").collect{|l| l.split("\t")[1..-1]} smi.each_with_index do |s,i| puts ([s]+mp2d[i]).join(",") end