Mengubah urutan DNA menjadi gambar piksel

Saya memiliki file teks urutan DNA, lebih dari 3 miliar karakter dari empat huruf - A, T, C dan G-. Saya ingin memiliki gambar file ini dan mengubah setiap karakter menjadi gambar piksel yang tepat. Saya sangat menghargai komentar Anda? ada perangkat lunak untuk melakukannya?


person mansour ebrahimi    schedule 28.12.2016    source sumber
comment
Saya khawatir ini pasti pertanyaan yang naif: apa itu gambar piksel kanan?   -  person Bill Bell    schedule 28.12.2016


Jawaban (3)


Maaf pertanyaan utama saya adalah bagaimana mengkonversi file teks seperti ini:

ATCGAATTCCGGAAATACGATCGGCTCA... ke gambar?

person mansour ebrahimi    schedule 04.01.2017

Tentu saja ada jalan. Jawaban saya di https://bioinformatics.stackexchange.com/questions/14184/how-does-deepvariant-construct-rgb-images-from-dna-sequences akan membantu.

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.

person SmallChess    schedule 30.09.2020

Saya tidak tahu apa arti keempat huruf itu, tetapi:
1) Tetapkan warna untuk masing-masing huruf. Anda memiliki empat warna untuk keempat huruf tersebut.
2) Jelas Anda akan mematikan PC jika Anda membaca keseluruhan file dan menyimpannya di RAM, jadi Anda harus membacanya sedikit demi sedikit.
3) Jadi, katakanlah Anda akan menampilkannya pada monitor 1024x768, maka 3,000,000,000/1024=2,929,687.5 ; itu adalah ukuran potongan Anda. Saya ingin:

-1: membaca 2.929.688 huruf pertama dari file Anda.
-2: buat var RGB global yang bisa berupa array yang menyimpan 3 double.
-3: untuk setiap huruf, saya membagi warnanya pada komponen RGB-nya dan menambahkannya ke komponen RGB global, misalnya:
//letterRGB={red:255,green:125,blue:255} ;
globalRGB["merah"]+=hurufRGB["merah"]/255; //memberi 1
globalRGB["green"]+=letterRGB["green"]/255; // menghasilkan 0,5
globalRGB["blue"]+=letterRGB["blue"]/255;//memberi 1

-4: bagi setiap komponen dengan jumlah poinnya, lalu kalikan hasilnya untuk 255. Ini akan memberi Anda warna potongannya. Misalnya:

globalRGB["red"]=Math.round((globalRGB["red"]/nPoints)*255);//nPoints=2,929,688

Jadi pada dasarnya inilah Anda menghitung warna rata-rata dari keseluruhan 2.929.688 huruf, dan itu adalah warna hanya 1 titik (atau piksel) di layar Anda, salah satu dari 1024 titik.
Saya akan mengulangi prosesnya dengan 2.929.688 huruf berikutnya hingga saya mendapatkan 1024 huruf bongkahan terwakili.
Anggaplah pengguna Anda mengeklik satu titik (atau bongkahan) di layar. Sistem Anda harus memperbesar, dan cara melakukannya adalah dengan mengulangi seluruh proses ini, namun hanya untuk 2.929.688 huruf pada titik tersebut.< br>
Jadi potongan Anda akan terdiri dari 2.929.688/1024=2861 poin saja. Dan satu lagi. Saya yakin Anda sudah memahami logikanya.

Ini seharusnya menjadi titik ketika, dengan melakukan zoom, pengguna dapat melihat satu per satu huruf-huruf berbeda yang diwakili dalam warna berbeda, diurutkan dalam urutan.

Beri tahu saya pendapat Anda mengenai hal ini, dan semoga berhasil.

person Gabo Alvarez    schedule 28.12.2016