tệp (1) và ma thuật (5): ưu tiên kết quả


7

Câu hỏi của tôi theo sau đó: file (1) và ma thuật (5): mô tả các định dạng khác .

Tôi muốn mô tả một chuỗi FASTA ( http://en.wikipedia.org/wiki/FASTA_format )

Nó có thể là một chuỗi DNA (chỉ có ATGC)

>header
ATGCTAGCATAGCATCGATGCTGTAGCTACGTAGCTACGTCTACG

Một mô hình 'ma thuật' sẽ là

>.*\n[ATGC]*

hoặc một chuỗi PROTEIN (ACDEFGHIKLMNPQRSTVWYBZX cũng chứa ATGC)

>header
AHITKLMNPQRGHIKLMNPQRC

Một mô hình 'ma thuật' sẽ là

>.*\n[ACDEFGHIKLMNPQRSTVWYBZX]*

Nhưng bất cứ khi nào tôi sử dụng các biểu thức chính quy đó, tệp sẽ cho tôi biết đó là protein vì nó phù hợp với biểu thức chính quy thứ 2. Có cách nào để ưu tiên một kết quả? Có cách nào để chia theo tỷ lệ, một cái gì đó như "Đừng thử bất kỳ mẫu nào khác nếu mẫu đó phù hợp?".


2
Tại sao bạn giới hạn định dạng của bạn theo cách như vậy? Cả hai U(Sec) và O(Pyl) là chính xác và hợp lệ amin mã axit và bạn cũng có thể tìm *cho DỪNG cũng như các mã IUPAC khác nhau như Ycho pyrimidine vv trong nucleotide trình tự cũng như đơn giản -cho những khoảng trống hay Xhoặc Ndư lượng đeo mặt nạ hoặc chưa biết . Tôi khá chắc chắn rằng hầu hết các phần mềm sẽ sử dụng một số phương pháp phỏng đoán khá phức tạp để lựa chọn giữa DNA (và dường như bạn đang bỏ qua RNA ở đây) và protein. Tôi rất nghi ngờ bạn có thể làm điều đó với một regex đơn giản.
terdon

Ngoài ra, tôi chưa bao giờ chơi với cái này vì vậy tôi không biết nó có hoạt động không, nhưng bạn có thể neo mô hình. Một cái gì đó giống như >.*\n[ATCGXN-]*\nDNA chẳng hạn (bỏ qua các mã IUPAC khác ).
terdon

Tôi sẽ không bận tâm đến việc liệt kê tất cả các axit amin. Chỉ cần sử dụng "a-zA-Z \ * \ -". Điều quan trọng là loại trừ khoảng trắng và số, có thể xuất hiện trong các thông điệp email thường trông như thế này> Từ: fred.bloggs@example.edu Chủ đề: Rất nhiều điều không có gì
vk5tu 8/215

Câu trả lời:


2

Bạn có thể đặt mức độ ưu tiên bằng cách sử dụng giá trị "độ mạnh". Từ ma thuật (5) :

Một sức mạnh tùy chọn có thể được cung cấp trên một dòng riêng biệt đề cập đến mô tả ma thuật hiện tại bằng cách sử dụng định dạng sau:

    !:strength OP VALUE

Toán hạng OP có thể là: +, -, * hoặc / và VALUE là hằng số trong khoảng từ 0 đến 255. Hằng số này được áp dụng bằng toán hạng được chỉ định cho cường độ ma thuật mặc định hiện đang được tính toán.

Để giảm mức độ ưu tiên của mô tả PROTEIN, hãy thêm dòng này:

!:strength - N

... nơi Nđủ lớn để đưa nó xuống dưới điểm số của mô tả DNA.

"Sức mạnh ma thuật mặc định hiện đang được tính toán" của một bài kiểm tra không rõ ràng ngay lập tức, nhưng bạn có thể sử dụng --listcờ để hiển thị tất cả. Ngoài ra, đọc nguồn - chức năng chịu trách nhiệm apprentice_magic_strength. Nó được tính toán từ thử nghiệm đầu tiên của mục nhập, vì vậy nếu bạn muốn ưu tiên một loại so với loại khác, việc có các dòng đầu tiên giống hệt nhau là hữu ích. (Theo cách đó, Nchỉ cần là 1.)

Một vấn đề khác: regexps của bạn không đủ nghiêm ngặt. *có thể khớp với các ký tự không, vì vậy mẫu được tìm thấy ở đầu mỗi dòng - protein, DNA hoặc loại khác. Để thắt chặt nó, hãy xác nhận rằng toàn bộ dòng chỉ bao gồm các ký tự được phép: \n[ATGC]+$hoặc \n[ATGC]{num,}$(trong đó num là mẫu ngắn nhất bạn muốn thấy)

0       string  =>header
>&0      regex   \n[ATGC]+$     DNA

0       string  =>header
>&0      regex   \n[ACDEFGHIKLMNPQRSTVWYBZX]+$  PROTEIN
!:strength - 1

Vì vậy, sức mạnh cơ bản bắt đầu từ 20, và các hoạt động khác nhau tăng hoặc giảm nó dựa trên kích thước và loại của chúng.
Pysis
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.