Chromosomen grijpen voor hg38
:
$ wget ftp://hgdownload.cse.ucsc.edu/goldenPath/hg38/chromosomes/*.fa.gz $ voor fn in `ls * .fa.gz`; doe gunzip $ fn; done
Via kmer-counter
en Python, hier is hoe te zoeken naar kmers met lengte 7 vanaf chromosoom chrY
:
#! / usr / bin / env python import sysimport subprocessimport itertoolsk = 7chr = 'chrY'fastaFile ='% s.fa '% (chr) kmerCmd =' kmer-counter --fasta --no-rc --k =% d% s '% (k, fastaFile) probeer: output = subprocess.check_output (kmerCmd, shell = True) resultaat = {} voor regel in output.splitlines (): (header, counts) = line.strip (). split ('\ t') header = header [1:] kmers = dict ((key, int (val)) voor (key, val) in [d.split ( ':') voor rd in counts.split ('')]) resultaat [header] = kmers behalve subprocess.CalledProcessError als fout: sys.stderr.write ("% s \ n"% (str (error))) kmers = resultaat [chr] comp = {'A': 'T', 'C': 'G', 'G': 'C', 'T': 'A'} voor kmerList in itertools.product ('ACGT', repeat = k): kmerKey = '' .join (kmerList) kmerCompKey = '' .join (omgekeerd ([comp.get (b, b) voor b in kmerList])) als kmerKey niet in kmers en kmerCompKey niet in kmers: kmers [kmerKey] = 0voor sleutel, waarde gesorteerd (kmers.iteritems (), key = lambda (key, val) :( val, key)): sys.stdout.write ("% s \ t% s \ n"% (key, val ))
Dit script zal een tweekoloms door tabs gescheiden tekstbestand afdrukken naar standaarduitvoer, waarbij de eerste kolom de 7mer is en de tweede kolom de telling van die 7mer en het omgekeerde aanvulling op chrY
(inclusief nultellingen):
CGACGCG 20CGTCGCG 20CGCGATA 23TACGCGC 25 ... AAATAAA 33521TTTCTTT 34014GAATGGA 35361AATGGAA 36906TTTTTTT 103093
Met een paar aanpassingen kan dit script over een bereik van em> en chromosomen voor uw referentiegenoom.