我有一个DNA序列的文本文件,超过3亿个字符的四个字母--A,T,C和G-。 我希望拥有此文件的图像,并将每个字符转换为正确的像素图像。我非常感谢您的评论?任何软件都这样做?
答案 0 :(得分:0)
我不知道这四个字母是什么意思,但是:
1)为每个颜色分配颜色。四个字母有四种颜色
2)如果您读取整个文件并将其存储在RAM中,显然您会杀死PC,因此您应该以块的形式阅读它。
3)所以,假设您将在1024x768显示器上显示,然后3,000,000,000 / 1024 = 2,929,687.5;这就是你的大小。
我会:
-1:读取文件的前2,929,688个字母。
-2:创建一个全局RGB var,它可以是一个存储3个双精度的数组。
-3:对于每个字母,我将其颜色划分为RGB分量并将其添加到全局RGB分量,例如:
// letterRGB = {红:255,绿:125,蓝:255};
globalRGB [ “红色”] + = letterRGB [ “红色”] / 255; //给出1
globalRGB [ “绿色”] + = letterRGB [ “绿色”] / 255; //给出0.5
globalRGB [“blue”] + = letterRGB [“blue”] / 255; //给出1
-4:将每个分量除以点数,然后将其乘以255.这将为您提供chunck的颜色。例如:
globalRGB [ “红色”] = Math.round((globalRGB [ “红色”] / nPoints)* 255); // nPoints = 2929688
所以在这里你基本上计算了整个2,929,688个字母的平均颜色,这就是屏幕上只有1个点(或像素)的颜色,1024个点中的一个。
我会用接下来的2,929,688个leters重复这个过程,直到我得到我的1024个块
让我们假设您的用户点击屏幕上的一个点(或chunck)。您的系统应该放大,并且这样做的方法是重复整个过程,但仅针对该点上的2,929,688个字母。
所以你的块只有2,929,688 / 1024 = 2861点。一个人。我打赌你已经得到了逻辑
当通过缩放,用户可以逐个看到以不同颜色表示的不同字母时,应该是一个点,在序列中排序。
让我知道你对此的看法,祝你好运。
答案 1 :(得分:0)
抱歉,我的主要问题是如何转换这样的文本文件:
... ATCGAATTCCGGAAATACGATCGGCTCA 一个图像?
答案 2 :(得分:0)
当然有办法。我在https://bioinformatics.stackexchange.com/questions/14184/how-does-deepvariant-construct-rgb-images-from-dna-sequences的回答会有所帮助。
In RGB, each dimension is an NxN image. Since you have three dimensions, so it's 3xNxN. The red dimension was used to encode the nucleotide bases. The green dimension was used to encode quality scores. Finally, the blue dimension was used to encode the strand information.