Kérdés:
ágyfájl GRCh38 referencia N régiójával?
719016
2018-02-13 15:45:05 UTC
view on stackexchange narkive permalink

Hogyan szerezhetek ágyfájlt a GRCh38 referencia N-régióinak listájával? Ez azt jelenti, hogy azok a régiók, ahol a szekvencia Ns szakasza.

Hat válaszokat:
user172818
2018-02-13 20:25:05 UTC
view on stackexchange narkive permalink
  # ha a seqtk telepítve van, hagyja ki a következő két linegit klónt: https://github.com/lh3/seqtkcd seqtk && tegye a fő parancssorba. / seqtk cutN -gp10000000 -n1 hg38.fa > hg38-N.bed  

A -n opció beállítja a minimális nyújtási hosszat. Csak használja a -p -t úgy, ahogy van. Kicsit bonyolult elmagyarázni, mit csinál.

Devon Ryan
2018-02-13 18:16:08 UTC
view on stackexchange narkive permalink

Ez az információ a szekvencia 2 bites fájlábrázolásában van tárolva, tehát ha előfordul, hogy helyben van egy 2 bites fájl (vagy le akarja tölteni az UCSC-ből), és telepítve van a py2bit (a 3.0 verzióra lesz szükség, mivel én szó szerint csak hozzáadta ennek a támogatását):

  import py2bittb = py2bit.open ("genome.2bit") of = open ("NNNNN.bed", "w") # Változtassa meg a bemeneti és kimeneti fájlneveket a chrom fájlhoz a tb.chroms (). kulcsokban (): blocks = tb.hardMaskedBlocks (chrom) a következő blokkok blokkjához: t {} \ n ".formátum (chrom, [0], [1] blokk)) a.close () tb.close ()  

Ha hasznos, használja ezt az összes lágyruhás régió megszerzéséhez is. Csak cserélje le a hardMaskedBlocks () -ot a softMaskedBlocks () -ra és győződjön meg róla, hogy a fájl megnyitásakor megadja-e a storeMasked = True -ot.

Christopher Lee
2018-02-15 01:58:32 UTC
view on stackexchange narkive permalink

A twoBitInfo használata:

  $ twoBitInfo file.fa -nBed output.bed  

Például az összes N-maszkolt régió kromoszómára jutásához Y (azt is vegye figyelembe, hogy az stdout fájlnévként közvetlenül írhatja az stdout-ra, és az URL-t használhatja bemenetként, nincs szükség a 2 bites fájl letöltésére):

  $ twoBitInfo http: / /hgdownload.soe.ucsc.edu/goldenPath/hg38/bigZips/hg38.2bit:chrY -nBed stdout | head -3chrY 0 10000chrY 44821 94821chrY 133871 222346  

A twoBitInfo-t letöltheti az operációs rendszernek megfelelő könyvtárból: http://hgdownload.soe.ucsc.edu/admin / exe /

gringer
2018-02-14 01:17:44 UTC
view on stackexchange narkive permalink

Lehet, hogy én is továbbugrom. Itt van egy Perl-szkript, amelyet egy ideje írtam egy Fasta-szekvencia felosztására az N-ek szakaszain:

https://github.com/gringer/bioinfscripts/blob/master/fasta-nsplit. pl

Most módosítottam, hogy kiköpjön egy BED formátumú fájlt, amely az N helyet mutatja standard hibán. Használja a következőképpen:

  ./fasta-nsplit.pl tig87_withN.fa 2>out.bed > out.split.fa  

Output (BED file) :

  tig00000087 0 60tig00000087 900 960tig00000087 3840 3960tig00000087 14880 14940tig00000087 59520 59700tig00000087 93000 93120tig00000087 107880 107940tig00000087 107880 107940tig00000087 109135 101340 :  
  #! / usr / bin / perluse figyelmeztetések; használja szigorúan; my $ seq = ""; my $ shortSeqID = ""; my $ seqID = ""; my $ keep = 0 ; my $ cumLength = 0; while (<>) {chomp; if (/ ^ > ((. +?) (. *? \ s *)?) $ /) {my $ newID = $ 1; my $ newShortID = $ 2; if ($ seq) {my $ inc = 0; míg ($ seq = ~ s / (NNNN +) (. *) //) {my $ nStretch = $ 1; my $ newSeq = $ 2; printf (">% s.% s \ n% s \ n", $ seqID, $ inc ++, $ seq) if ($ seq); $ cumLength + = hossz ($ seq); printf (STDERR "% s \ t% d \ t% d \ n", $ shortSeqID, $ cumLength, $ cumLength + length ($ nStretch)); $ cumLength + = hossz ($ nStretch); $ seq = $ newSeq; } printf (">% s \ n% s \ n", $ seqID, $ seq) if ($ seq); } $ seq = ""; $ shortSeqID = $ newShortID; $ seqID = $ newID; $ cumLength = 0; } else {$ seq. = $ _; }} if ($ seq) {my $ inc = 0; míg ($ seq = ~ s / (NNNN +) (. *) //) {my $ nStretch = $ 1; my $ newSeq = $ 2; printf (">% s.% s \ n% s \ n", $ seqID, $ inc ++, $ seq) if ($ seq); $ cumLength + = hossz ($ seq); printf (STDERR "% s \ t% d \ t% d \ n", $ shortSeqID, $ cumLength, $ cumLength + length ($ nStretch)); $ cumLength + = hossz ($ nStretch); $ seq = $ newSeq; } printf (">% s \ n% s \ n", $ seqID, $ seq) if ($ seq);}  
terdon
2018-02-13 16:53:30 UTC
view on stackexchange narkive permalink

Itt van egy módszer arra, hogy saját maga állítsa elő a genomszekvenciából. Először konvertálja a genom fasta fájlját tbl formátumra ( <seq id> \ t<sequence>) , majd a perl használatával keresse meg a N összes egymást követő szakaszának kezdő és befejező pozícióját vagy n .

  FastaToTbl hg38.fa | perl -F "\ t" -ane 'while (/ N + / ig) {for (0 .. $ # -) {print "$ F [0] \ t $ - [$ _] \ t $ + [$ _ ] \ n "}} '> hg38.n.bed  

Magyarázat

  • FastaToTbl : ez egy nagyon egyszerű szkript, amely a fastát tbl-vé alakítja. Csak mentse az alábbi sorokat valahova a $ PATH -ba (pl. ~ / bin ) FastaToTbl néven, és futtathatóvá tegye.

      #! / usr / bin / awk -f {if (substr ($ 1,1,1) == ">") if (NR>1) printf "\ n% s \ t" , substr ($ 0,2, length ($ 0) -1) else printf "% s \ t", substr ($ 0,2, length ($ 0) -1) else printf "% s", $ 0} END {printf "\ n "}  
  • A Perl varázslat.

    • A -a hatására a perl úgy viselkedik, mint az awk , az egyes bemeneti sorokat elosztva az -F (ebben az esetben egy fül), és az eredményt elmenti az aray @F fájlba. Tehát a $ F [0] lesz a sorozat azonosítója.
    • while (/ N + / ig) {: ez meg fog felelni minden egymást követő N vagy n esetnek (a i zászló kis- és nagybetűket nem tesz szükségessé). A Perl az összes mérkőzés kezdő pozícióját a @ - speciális tömbben, a végállomásokat pedig a @ + -ban tárolja.
    • for (0 .. $ # -) {: az összes számot iterálja 0-tól a tömb végső indexéig ( $ # - ) @ - .
    • "$ F [0] \ t $ - [$ _] \ t $ + [$ _] \ n" nyomtatás: minimális ágyformátum-adatok nyomtatása. Az aktuális sorozat neve ( $ F [0] ), az aktuális mérkőzés kezdő pozíciója ( $ - [$ _] ) és a megfelelő véghelyzet ( $ + [$ _] ).

Éppen a fentieket futtattam a rendszeremen, és ez generálta ezt.

atongsa
2019-11-01 07:45:43 UTC
view on stackexchange narkive permalink
  • @ user172818 kód nem számolhatja N-t a fa kezdetén
  • @terdon-kód rossz ágyhelyzetet kap
  • megváltoztatom a @terdon-kódot, mint az alábbiakban; és ez nálam működik
  awk '{if (substr ($ 1,1,1) == ">") if (NR>1) printf "\ n% s," , substr ($ 0,2, length ($ 0) -1) else printf "% s", substr ($ 0,2, length ($ 0) -1) else printf "% s", $ 0} END {printf "\ n "} 'test.fa | \ perl -F "," -ane 'while ($ F [1] = ~ / N + / ig) {for (0 .. $ # -) {print "$ F [0] \ t $ - [$ _] \ t $ + [$ _] \ n "; }} ' 


Ezt a kérdést és választ automatikusan lefordították angol nyelvről.Az eredeti tartalom elérhető a stackexchange oldalon, amelyet köszönünk az cc by-sa 3.0 licencért, amely alatt terjesztik.
Loading...