Advertisement
Guest User

Приложение 2

a guest
Apr 23rd, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.81 KB | None | 0 0
  1. from Bio import SeqIO
  2. import numpy as np
  3.  
  4. peaks = []
  5. with open("ENCFF091AYQbed.bed")as f:
  6.     for line in f:
  7.         peaks.append(line.strip().split())
  8.  
  9. x = []
  10.  
  11. for t in range(1, 23):
  12.     data = list(SeqIO.parse("chroms/chr" + str(t) + ".fa", "fasta"))
  13.     for item in peaks:
  14.         mid = (int(item[1]) + int(item[2]))//2
  15.         if (mid + 499 >= len(data[0].seq) or mid - 500 < 0):
  16.             continue
  17.         if (item[0] == "chr" + str(t) and data[0].seq[mid - 500].upper() != 'N' and data[0].seq[mid + 499].upper() != 'N'):
  18.             k = 0;
  19.             a = np.zeros((4, 1000))
  20.             for i in range(mid - 500, mid + 500):
  21.                 if (data[0].seq[i].upper() == 'A'):
  22.                     a[0][k] = 1;
  23.                 if (data[0].seq[i].upper() == 'T'):
  24.                     a[1][k] = 1;
  25.                 if (data[0].seq[i].upper() == 'G'):
  26.                     a[2][k] = 1;
  27.                 if (data[0].seq[i].upper() == 'C'):
  28.                     a[3][k] = 1;
  29.                 k+=1;
  30.             x.append(a);
  31.  
  32. data = list(SeqIO.parse("chroms/chrX.fa", "fasta"))
  33. for item in peaks:
  34.     mid = (int(item[1]) + int(item[2]))//2
  35.     if (mid + 499 >= len(data[0].seq) or mid - 500 < 0):
  36.             continue
  37.     if (item[0] == "chrX" and data[0].seq[mid - 500].upper() != 'N' and data[0].seq[mid + 499].upper() != 'N'):
  38.         k = 0;
  39.         a = np.zeros((4, 1000))
  40.         for i in range(mid - 500, mid + 500):
  41.             if (data[0].seq[i].upper() == 'A'):
  42.                 a[0][k] = 1;
  43.             if (data[0].seq[i].upper() == 'T'):
  44.                 a[1][k] = 1;
  45.             if (data[0].seq[i].upper() == 'G'):
  46.                 a[2][k] = 1;
  47.             if (data[0].seq[i].upper() == 'C'):
  48.                 a[3][k] = 1;
  49.             k+=1;
  50.         x.append(a);
  51.  
  52. data = list(SeqIO.parse("chroms/chrY.fa", "fasta"))
  53. for item in peaks:
  54.     mid = (int(item[1]) + int(item[2]))//2
  55.     if (item[0] == "chrY" and data[0].seq[mid - 500].upper() != 'N' and data[0].seq[mid + 499].upper() != 'N'):
  56.         k = 0;
  57.         a = np.zeros((4, 1000))
  58.         for i in range(mid - 500, mid + 500):
  59.             if (data[0].seq[i].upper() == 'A'):
  60.                 a[0][k] = 1;
  61.             if (data[0].seq[i].upper() == 'T'):
  62.                 a[1][k] = 1;
  63.             if (data[0].seq[i].upper() == 'G'):
  64.                 a[2][k] = 1;
  65.             if (data[0].seq[i].upper() == 'C'):
  66.                 a[3][k] = 1;
  67.             k+=1;
  68.         x.append(a);
  69.  
  70. np.save('H3K4me3PeaksATGC', x)
  71.  
  72. import random
  73. for t in range(1, 25):
  74.     c = []
  75.     if t == 23:
  76.         t = 'X'
  77.     if t == 24:
  78.         t = 'Y'
  79.     data = list(SeqIO.parse("chroms/chr" +str(t) + ".fa", "fasta"))
  80.     m = 0
  81.     l = len(data[0].seq) // 20000
  82.     mid = 10001
  83.     while (mid < len(data[0].seq) - l - 501):
  84.         if (data[0].seq[mid - 500].upper() != 'N' and data[0].seq[mid + 499].upper() != 'N'):
  85.             flag = 0
  86.             for item in peaks:
  87.                 if ((item[0] == "chr" + str(t)) and ((mid - 500 < int(item[1]) and mid + 499 > int(item[1])) or (mid - 500 > int(item[1]) and mid - 500 < int(item[2])))):
  88.                     flag = 1
  89.             if flag == 0:
  90.                 a = np.zeros((4, 1000))
  91.                 k = 0;
  92.                 for i in range(mid - 500, mid + 500):
  93.                     if (data[0].seq[i].upper() == 'A'):
  94.                         a[0][k] = 1;
  95.                     if (data[0].seq[i].upper() == 'T'):
  96.                         a[1][k] = 1;
  97.                     if (data[0].seq[i].upper() == 'G'):
  98.                         a[2][k] = 1;
  99.                     if (data[0].seq[i].upper() == 'C'):
  100.                         a[3][k] = 1;
  101.                     k+=1;
  102.                 c.append(a);
  103.                 m+=1;
  104.         mid += l
  105.         if (m >= 10000):
  106.             break
  107.     np.save('H3K4me3NotPeaksATGCChr'+str(t), c)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement