Phân cụm gen trong một thí nghiệm khóa học thời gian


8

Tôi đã thấy một vài truy vấn về phân cụm theo chuỗi thời gian và cụ thể là phân cụm, nhưng tôi không nghĩ họ trả lời câu hỏi của tôi.

Bối cảnh: Tôi muốn phân cụm gen trong một thí nghiệm khóa học thời gian trong nấm men. Có bốn thời điểm nói: t1 t2 t3t4 và tổng số gen G . Tôi có dữ liệu ở dạng ma trận M trong đó các cột biểu thị các nghiệm thức (hoặc các điểm thời gian) t1 t2 t3t4 và các hàng đại diện cho các gen. Do đó, M là ma trận Gx4.

Vấn đề: Tôi muốn phân cụm các gen hoạt động giống nhau trên tất cả các điểm thời gian t1 t2 t3t4 cũng như trong một thời điểm cụ thể ti , trong đó tôi ở {1, 2, 3, 4} (Trong trường hợp chúng tôi không thể làm cả hai cụm với nhau, phân cụm trong một điểm thời gian quan trọng hơn phân cụm theo các điểm thời gian). Thêm vào đó, tôi cũng muốn vẽ một bản đồ nhiệt.

Giải pháp của tôi: Tôi sử dụng mã R bên dưới để có được bản đồ nhiệt cũng như các cụm sử dụng hclustchức năng trong R (thực hiện phân cụm theo phân cấp với khoảng cách euclide)

    row.scaled.expr <- (expr.diff - rowMeans(expr.diff)) / rowSds(expr.diff)

    breaks.expr <- c(quantile(row.scaled.expr[row.scaled.expr < 0],
                               seq(0,1,length=10)[-9]), 0,
                               quantile(row.scaled.expr[row.scaled.expr > 0],
                               seq(0,1,length=10))[-1] )


    blue.red.expr <- maPalette(low = "blue", high = "red", mid = "white",
                     k=length(breaks.expr) - 1)

    pdf("images/clust.pdf",
         height=30,width=20,pointsize=20)
    ht1 <- heatmap.2(row.scaled.expr, col = blue.red.expr, Colv = FALSE, key = FALSE, 
      dendrogram = "row", scale = "none", trace = "none",
      cex=1.5, cexRow=1, cexCol=2,
      density.info = "none", breaks = breaks.expr, 
      labCol = colnames(row.scaled.expr),
      labRow="",
      lmat=rbind( c(0, 3), c(2,1), c(0,4) ), lhei=c(0.25, 4, 0.25 ),
      main=expression("Heat Map"),
      ylab="Genes in the Microarray",
      xlab="Treatments"
      )
    dev.off()

Gần đây tôi đã phát hiện ra hopachgói trong Bioconductor có thể được sử dụng để ước tính số lượng cụm. Trước đây, tôi đã chỉ định ngẫu nhiên số lượng thùng cho bản đồ nhiệt và cắt cây ở độ cao thích hợp để có được số cụm được chỉ định trước.

Các vấn đề có thể có trong giải pháp của tôi:

  1. Tôi có thể không phân cụm các gen trong một điều trị cụ thể và chỉ phân cụm các gen trong các phương pháp điều trị hoặc ngược lại.
  2. Có thể có nhiều cách tốt hơn để có được một bản đồ nhiệt cho mẫu mà tôi muốn thấy (các gen tương tự trong một phương pháp điều trị và qua các phương pháp điều trị).
  3. Có thể có các phương pháp trực quan tốt hơn mà tôi không biết.

Ghi chú:

  1. csgillespie (người điều hành) có một tài liệu tổng quát hơn trên trang web của mình, trong đó ông thảo luận về tất cả các khía cạnh của phân tích khóa học thời gian (bao gồm cả bản đồ nhiệt và phân cụm). Tôi sẽ đánh giá cao nếu bạn có thể chỉ cho tôi một bài viết mô tả các bản đồ nhiệt và phân cụm chi tiết.

  2. Tôi đã thử pvclustgói, nhưng nó phàn nàn rằng M là số ít và sau đó nó bị hỏng.

Câu trả lời:


3

Có vẻ như bạn chỉ muốn thực hiện một phân tích tiêu chuẩn công bằng, vì vậy tôi không phải là người tốt nhất để trả lời câu hỏi của bạn; nhưng tôi sẽ đề nghị bạn đi sâu hơn vào Bioconductor; nó có rất nhiều thứ hữu ích, tuy nhiên việc tìm kiếm thứ bạn muốn thật đau đớn. Ví dụ gói Mfuzz có vẻ đầy hứa hẹn.


1
Ngoài ra còn có một ví dụ về việc sử dụng Mfuzz trong tài liệu hướng dẫn
csgillespie

5

Để bổ sung cho phản hồi của @ mbq (có Mfuzzvẻ ổn), tôi sẽ chỉ đưa một số tài liệu tham khảo (PDF) về việc phân cụm dữ liệu biểu hiện gen theo thời gian:

  1. Futschik, ME và Charlisle, B (2005). Tiếng ồn cụm mạnh mẽ của dữ liệu thời gian biểu hiện gen . Tạp chí Tin sinh học và Sinh học tính toán , 3 (4) , 965-988.
  2. Luân, Y và Li, H (2003). Phân cụm dữ liệu biểu hiện gen theo thời gian bằng mô hình hiệu ứng hỗn hợp với B-splines . Tin sinh học , 19 (4) , 474-482.
  3. Tai YC và Tốc độ, TP (2006). Một thống kê Bayes theo kinh nghiệm đa biến cho dữ liệu khóa học thời gian microarray được nhân rộng . Biên niên sử Thống kê , 34 , 2387 212424.
  4. Schliep, A, Steinhoff, C và Schönhuth, A (2004). Suy luận mạnh mẽ của các nhóm trong các khóa học về thời gian biểu hiện gen bằng cách sử dụng hỗn hợp HMM . Tin sinh học , 20 (1) , i283-i228.
  5. Costa, IG, de Carvalho, F và de Souto, MCP (2004). Phân tích so sánh các phương pháp phân cụm cho dữ liệu khóa học thời gian biểu hiện gen . Di truyền học và sinh học phân tử , 27 (4) , 623-631.
  6. Inoue, LYT, Neira, M, Nelson, C, Gleave, M và Etzioni, R (2006). Mô hình mạng dựa trên cụm cho dữ liệu biểu hiện gen theo thời gian . Thống kê sinh học , 8 (3) , 507-525.
  7. Phang, TL, Neville, MC, Rudolph, M và Hunter, L (2003). Phân cụm quỹ đạo: Một phương pháp không tham số để phân nhóm các khóa học thời gian biểu hiện gen với các ứng dụng cho sự phát triển của động vật có vú . Hội thảo chuyên đề Thái Bình Dương về điện toán sinh học , 8 , 351-362.

Bạn đã thử timecoursegói (như được đề xuất bởi @csgillespie trong tài liệu của mình ) chưa?


1
Các timecoursegói là không thực sự để xác định các cụm, chứ không phải đó là tính mà gen được thể hiện theo kiểu khác.
csgillespie

@csgillespie (+1) Cảm ơn. Tôi nghĩ rằng nó có thể được sử dụng để phân lập các gen có cấu hình thời gian khác nhau trong các điều kiện sinh học hoặc là bước đầu tiên trước khi sử dụng quy trình phân cụm (thực tế, tôi đã nghĩ đến kmlnhưng tôi không thực sự là một chuyên gia trong lĩnh vực đó).
chl

Bạn đúng ở chỗ bạn sẽ có xu hướng sử dụng để phân lập các gen thú vị trước khi phân cụm - về cơ bản làm mỏng danh sách gen của bạn. Tôi cho rằng nó thực hiện phân cụm một loại, được biểu thị rõ ràng so với biểu hiện không khác biệt.
csgillespie

3

Chỉ cần thêm vào các câu trả lời khác (có vẻ như họ sẽ giải quyết vấn đề của bạn), bạn đã thử sử dụng thuật toán phân cụm tiêu chuẩn cho dữ liệu của mình khi xây dựng chương trình dendro của bạn chưa? Ví dụ,

heatmap.2(dataset, <standard args>,
          hclustfun = function(c){hclust(c, method= 'average')}
          )

Thay vì sử dụng khoảng cách trung bình để phân cụm, bạn cũng có thể sử dụng "phường", "đơn", "trung bình", ... Xem ?hclustđể biết danh sách đầy đủ.

Để trích xuất các cụm, sử dụng hclustlệnh trực tiếp và sau đó sử dụng cutreelệnh. Ví dụ,

hc = hclust(dataset)
cutree(hc)

Thông tin chi tiết có thể được tìm thấy tại trang web của tôi .


. Có, nhưng một trong những khó khăn tôi gặp phải là trích xuất các cụm từ đối tượng Heatmap.2. Có một cách dễ dàng để trích xuất các cụm? Tôi nhận thức được cutreelệnh có thể được sử dụng để trích xuất các cụm từ đối tượng Heatmap.2.
suncoolsu

1
@suncoolsu: Tôi đã cập nhật câu trả lời của mình. cái đó có giúp ích không?
csgillespie
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.