我是一个化学家和一个普通的python程序员。我试图比较不同的分子,这些分子被保存为.xyz文件在一个文件夹中。我们的计算集群(comparestructures
)上有一个脚本,可以比较任意两个分子,判断它们是否相似/相同。我需要把所有的分子相互比较,找出重复的/相似的分子,这样我就可以把它们从研究中剔除。你知道吗
我已经尝试在所有分子上运行以下bash脚本:(comp1是compound1的缩写)
#!/bin/sh
for comp1; do
shift
for comp2; do
echo "Comparing '$comp1' with '$comp2'"
comparestructures "$comp1" "$comp2" && echo "${comp1%.*}" "is-identical-to" "${comp2%.*}" >> identical.txt || echo "$comp1" "is-different-than" "$comp2" >> different.txt
done
done
问题是我得到了一个列表,我不能很容易地确定哪些删除,因为一些分子发生在左右两侧的输出打印。有没有什么办法我可以得到一个分子列表(每个相似的一对一个),这样我就可以删除它们,保留唯一的一对。我需要这个为我的研究工作和帮助将不胜感激。你知道吗
如果
A
与B
相同,而B
与C
相同,我认为您希望B
和C
被删除,而A
被保留。现在,您可以执行以下操作:这显然不是最好最快的解决方案,但我太累了,无法想象更好的解决方案。如果您想测试这个脚本,我建议您将
mkdir identical
表达式放在循环之外,删除rm -r identical
行,然后看看是否没有问题。你知道吗相关问题 更多 >
编程相关推荐