ฉันมีไฟล์ข้อความของลำดับ DNA ซึ่งมีตัวอักษรสี่ตัวมากกว่า 3 พันล้านตัวอักษร - A, T, C และ G- ฉันอยากได้รูปภาพของไฟล์นี้และแปลงอักขระแต่ละตัวให้เป็นรูปภาพพิกเซลที่ถูกต้อง ฉันซาบซึ้งมากกับความคิดเห็นของคุณ? มีซอฟต์แวร์ใดบ้างที่ทำเช่นนั้น?
การแปลงลำดับ DNA ให้เป็นภาพพิกเซล
คำตอบ (3)
ขออภัย คำถามหลักของฉันคือวิธีแปลงไฟล์ข้อความเช่นนี้:
ATCGAATTCCGGAAATACGATCGGCTCA... ไปยังรูปภาพหรือไม่
แน่นอนว่ายังมีวิธีอยู่ คำตอบของฉันที่ 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.
ฉันไม่รู้ว่าตัวอักษรสี่ตัวนั้นหมายถึงอะไร แต่:
1) กำหนดสีให้กับแต่ละตัวอักษร คุณมีสี่สีสำหรับตัวอักษรสี่ตัว
2) แน่นอนว่าคุณจะฆ่าพีซีถ้าคุณอ่านไฟล์ทั้งหมด และจัดเก็บไว้ใน RAM ดังนั้นคุณควรอ่านเป็นชิ้น ๆ
3) สมมุติว่าคุณจะแสดงมันบนจอภาพ 1024x768 จากนั้น 3,000,000,000/1024=2,929,687.5 ; นั่นคือขนาดของชิ้นส่วนของคุณ ฉันจะ:
-1: อ่านตัวอักษร 2,929,688 ตัวแรกของไฟล์ของคุณ
-2: สร้าง RGB var ส่วนกลางที่อาจเป็นอาร์เรย์ที่เก็บ 3 คู่
-3: สำหรับตัวอักษรแต่ละตัว ฉันจะแบ่งสีของมันบนส่วนประกอบ RGB และเพิ่มลงในองค์ประกอบ RGB ส่วนกลาง ตัวอย่างเช่น:
//letterRGB={red:255,green:125,blue:255} ;
globalRGB["red"]+=letterRGB["red"]/255; // ให้ 1
globalRGB["green"]+=letterRGB["green"]/255; // ให้ 0.5
globalRGB["blue"]+=letterRGB["blue"]/255;// ให้ 1
-4: หารแต่ละองค์ประกอบด้วยจำนวนคะแนน แล้วคูณด้วย ในราคา 255 จะได้สีของชิ้น ตัวอย่างเช่น:
globalRGB["red"]=Math.round((globalRGB["red"]/nPoints)*255);//nPoints=2,929,688
ดังนั้นโดยพื้นฐานแล้วคุณอยู่ตรงนี้ กำลังคำนวณสีเฉลี่ยของตัวอักษรทั้ง 2,929,688 ตัว และนั่นคือสีเพียง 1 จุด (หรือพิกเซล) ในหน้าจอของคุณ ซึ่งเป็นหนึ่งใน 1,024 จุด
ฉันจะทำซ้ำขั้นตอนนี้ด้วยตัวอักษร 2,929,688 ตัวถัดไปจนกว่าจะได้ 1,024 ชิ้นส่วนที่แสดง
สมมติว่าผู้ใช้ของคุณคลิกที่จุดเดียว (หรือชิ้นส่วน) บนหน้าจอ ระบบของคุณควรซูมเข้า และวิธีการทำเช่นนั้นคือการทำซ้ำขั้นตอนทั้งหมดนี้ แต่สำหรับตัวอักษร 2,929,688 ตัวในจุดนั้นเท่านั้น< br>
ดังนั้น ชิ้นของคุณก็จะมีเพียง 2,929,688/1024=2861 คะแนนเท่านั้น และอีกอย่างหนึ่ง ฉันพนันได้เลยว่าคุณคงเข้าใจตรรกะนี้แล้ว
มันควรจะเป็นจุดที่เมื่อซูมเข้าไป ผู้ใช้จะได้เห็นตัวอักษรต่างๆ ที่แสดงเป็นสีต่างๆ ทีละตัว โดยเรียงลำดับตามลำดับ
โปรดแจ้งให้เราทราบว่าคุณคิดอย่างไรเกี่ยวกับเรื่องนี้ และขอให้โชคดี