Tôi có một câu hỏi liên quan đến cách tôi có thể sử dụng một phạm vi đã cho để chia nó thành các khoảng có độ dài tối đa là 100. Tôi đang tìm cách làm điều này trong AWK, Shell Script, Perl hoặc Python. Chỉ để hiển thị một ví dụ nhỏ, tôi có một tệp được phân định bằng tab có chứa
- Số nhiễm sắc thể [1 đến 23]
- phạm vi bắt đầu
- phạm vi kết thúc
- ID của phạm vi
- Số cho biết phạm vi phải được chia bao nhiêu lần
Cái này nó thì trông như thế nào
chr1 37850 38536 MACS_peak_1 7 chr1 820769 821857 MACS_peak_4 11 chr1 5018483 5019041 MACS_peak_9 6
Và sau khi lấy từng phạm vi và chia chúng thành 100 khoảng thời gian, đầu ra sẽ như thế này. Hai cột cuối cùng không quan trọng bằng việc thu được phạm vi được chia tách và tôi đã trình bày ví dụ này để chỉ ra số lượng phần tách và độ dài của phần tách tương ứng
chr1 37850 37950 1 100 chr1 37951 38051 2 100 chr1 38052 38152 3 100 chr1 38153 38253 4 100 chr1 38254 38354 5 100 chr1 38355 38455 6 100 chr1 38456 38536 7 80 chr1 820769 820869 1 100 chr1 820870 820970 2 100 chr1 820971 821071 3 100 chr1 821072 821172 4 100 chr1 821173 821273 5 100 chr1 821274 821374 6 100 chr1 821375 821475 7 100 chr1 821476 821576 8 100 chr1 821577 821677 9 100 chr1 821678 821778 10 100 chr1 821779 821857 11 78 chr1 5018483 5018583 1 100 chr1 5018584 5018684 2 100 chr1 5018685 5018785 3 100 chr1 5018786 5018886 4 100 chr1 5018887 5018987 5 100 chr1 5018988 5019041 6 53perl python awk chip-seq • 12 nghìn lượt xem
THÊM NHẬN XÉT • liên kết đã cập nhật 10. 1 năm trước bởi Aaronquinlan 11k • được viết 10. 1 năm trước bởi daniel. soronella ▴ 330
1
Vào chế độ chỉnh sửa
Bạn đang cố gắng làm gì?
THÊM TRẢ LỜI • liên kết 10. 1 năm trước bởi Irsan ★ 7. 6k
0
Vào chế độ chỉnh sửa
có vẻ như chúng tôi có một lỗi khoảng trắng mà chúng tôi sẽ sớm khắc phục
THÊM TRẢ LỜI • liên kết 10. 1 năm trước bởi Istvan Albert 96k
0
Vào chế độ chỉnh sửa
Tôi thấy rằng tab được phân tách dường như không được nhận dạng nên tôi phải đặt ví dụ ở định dạng 4 dấu cách
THÊM TRẢ LỜI • liên kết 10. 1 năm trước bởi daniel. soronellas ▴ 330
8
Vào chế độ chỉnh sửa
10. 1 năm trước
Andrzej Zielezinski 11k
Trong Python
fh = open['input_file.txt']
out = open['output_file.txt','w']
def chunk_range[x1, x2, numb]:
size = [[x2 - x1 + 1 ] / numb] + 1
while x1 1]cbind[covList[[i]]]]]
# writing the file out
write.table[final,'bedGraph_expanded.tsv',sep='\t',row.names=F,quote=F]
đầu ra
chrom start end seq reads
1 chr1 37850 37950 1 100
2 chr1 37951 38051 2 100
3 chr1 38052 38152 3 100
4 chr1 38153 38253 4 100
5 chr1 38254 38354 5 100
6 chr1 38355 38455 6 100
7 chr1 38456 38536 7 80
8 chr1 820769 820869 1 100
9 chr1 820870 820970 2 100
10 chr1 820971 821071 3 100
11 chr1 821072 821172 4 100
12 chr1 821173 821273 5 100
13 chr1 821274 821374 6 100
14 chr1 821375 821475 7 100
15 chr1 821476 821576 8 100
16 chr1 821577 821677 9 100
17 chr1 821678 821778 10 100
18 chr1 821779 821857 11 78
Bạn có thể lưu toàn bộ tập lệnh và sử dụng dưới dạng
chr1 37850 37950 1 100 chr1 37951 38051 2 100 chr1 38052 38152 3 100 chr1 38153 38253 4 100 chr1 38254 38354 5 100 chr1 38355 38455 6 100 chr1 38456 38536 7 80 chr1 820769 820869 1 100 chr1 820870 820970 2 100 chr1 820971 821071 3 100 chr1 821072 821172 4 100 chr1 821173 821273 5 100 chr1 821274 821374 6 100 chr1 821375 821475 7 100 chr1 821476 821576 8 100 chr1 821577 821677 9 100 chr1 821678 821778 10 100 chr1 821779 821857 11 78 chr1 5018483 5018583 1 100 chr1 5018584 5018684 2 100 chr1 5018685 5018785 3 100 chr1 5018786 5018886 4 100 chr1 5018887 5018987 5 100 chr1 5018988 5019041 6 533
Chúc mừng
THÊM NHẬN XÉT • liên kết 10. 1 năm trước bởi Sukhi Singh 11k
4
Vào chế độ chỉnh sửa
10. 1 năm trước
qiyunzhu ▴ 430
Đây là giải pháp Perl của tôi
________số 8Đầu ra phải giống hệt như trong câu hỏi của bạn
Và đây là mã Perl để làm cho các khoảng đều nhau
my $input = "
chr1 37850 38536 MACS_peak_1 7
chr1 820769 821857 MACS_peak_4 11
chr1 5018483 5019041 MACS_peak_9 6
";
foreach [split [/\n/, $input]]{
next unless $_;
my [$chr, $start, $end, $id, $times] = split [/\s+/];
my $range = int[[$end-$start]/$times];
foreach [1..$times-1]{
print $chr."\t".[$start+$range*[$_-1]]."\t".[$start+$range*$_-1]."\t$_\t".[$range-1]."\n";
}
print $chr."\t".[$start+$range*[$times-1]]."\t$end\t$times\t".[$end-$start-$range*[$times-1]-1]."\n";
}
THÊM NHẬN XÉT • liên kết 10. 1 năm trước bởi qiyunzhu ▴ 430
4
Vào chế độ chỉnh sửa
10. 1 năm trước
Aaronquinlan 11k
chr1 37850 37950 1 100 chr1 37951 38051 2 100 chr1 38052 38152 3 100 chr1 38153 38253 4 100 chr1 38254 38354 5 100 chr1 38355 38455 6 100 chr1 38456 38536 7 80 chr1 820769 820869 1 100 chr1 820870 820970 2 100 chr1 820971 821071 3 100 chr1 821072 821172 4 100 chr1 821173 821273 5 100 chr1 821274 821374 6 100 chr1 821375 821475 7 100 chr1 821476 821576 8 100 chr1 821577 821677 9 100 chr1 821678 821778 10 100 chr1 821779 821857 11 78 chr1 5018483 5018583 1 100 chr1 5018584 5018684 2 100 chr1 5018685 5018785 3 100 chr1 5018786 5018886 4 100 chr1 5018887 5018987 5 100 chr1 5018988 5019041 6 534 có một tiện ích gọi là
chr1 37850 37950 1 100 chr1 37951 38051 2 100 chr1 38052 38152 3 100 chr1 38153 38253 4 100 chr1 38254 38354 5 100 chr1 38355 38455 6 100 chr1 38456 38536 7 80 chr1 820769 820869 1 100 chr1 820870 820970 2 100 chr1 820971 821071 3 100 chr1 821072 821172 4 100 chr1 821173 821273 5 100 chr1 821274 821374 6 100 chr1 821375 821475 7 100 chr1 821476 821576 8 100 chr1 821577 821677 9 100 chr1 821678 821778 10 100 chr1 821779 821857 11 78 chr1 5018483 5018583 1 100 chr1 5018584 5018684 2 100 chr1 5018685 5018785 3 100 chr1 5018786 5018886 4 100 chr1 5018887 5018987 5 100 chr1 5018988 5019041 6 535 sẽ thực hiện chính xác điều này. Có vẻ như cột thứ 5 trong tệp của bạn là không cần thiết, vì bạn thực sự chỉ đang tạo các cửa sổ 100bp từ các khoảng thời gian ban đầu. Một lưu ý trong ví dụ của bạn là tọa độ bắt đầu của bạn cao hơn một so với mức bình thường vì tọa độ bắt đầu BED dựa trên 0, trong khi tọa độ kết thúc là dựa trên 1. Tôi hi vọng cái này giúp được
chr1 37850 37950 1 100 chr1 37951 38051 2 100 chr1 38052 38152 3 100 chr1 38153 38253 4 100 chr1 38254 38354 5 100 chr1 38355 38455 6 100 chr1 38456 38536 7 80 chr1 820769 820869 1 100 chr1 820870 820970 2 100 chr1 820971 821071 3 100 chr1 821072 821172 4 100 chr1 821173 821273 5 100 chr1 821274 821374 6 100 chr1 821375 821475 7 100 chr1 821476 821576 8 100 chr1 821577 821677 9 100 chr1 821678 821778 10 100 chr1 821779 821857 11 78 chr1 5018483 5018583 1 100 chr1 5018584 5018684 2 100 chr1 5018685 5018785 3 100 chr1 5018786 5018886 4 100 chr1 5018887 5018987 5 100 chr1 5018988 5019041 6 532
nếu bạn thực sự muốn bỏ qua một cơ sở giữa mỗi khoảng thời gian, bạn sẽ cần thay đổi câu lệnh awk. Nhưng tôi nghĩ rằng đây là những gì bạn muốn. Để kiểm soát, hãy tải tệp của bạn vào UCSC và xem các cửa sổ trông như thế nào
THÊM NHẬN XÉT • liên kết 10. 1 năm trước bởi Aaronquinlan 11k
0
Vào chế độ chỉnh sửa
Vấn đề duy nhất là dòng tiếp theo không được bù từ dòng cuối cùng. Bạn có thể muốn kiểm tra lại đầu ra dự kiến
THÊM TRẢ LỜI • liên kết 10. 1 năm trước bởi steve ▴ 40
0
Vào chế độ chỉnh sửa
Linh cảm của tôi là OP không có ý định tạo các cửa sổ GIƯỜNG bỏ qua một cơ sở giữa mỗi cửa sổ. Nếu cố ý, một thay đổi rất nhỏ đối với câu lệnh awk sẽ giải quyết vấn đề này. Cập nhật để chứng minh
THÊM TRẢ LỜI • liên kết 10. 1 năm trước bởi Aaronquinlan 11k
0
Vào chế độ chỉnh sửa
Có vẻ như bạn đúng - bạn thấy đấy, tôi không có bất kỳ kinh nghiệm nào với tệp BED hoặc
chr1 37850 37950 1 100 chr1 37951 38051 2 100 chr1 38052 38152 3 100 chr1 38153 38253 4 100 chr1 38254 38354 5 100 chr1 38355 38455 6 100 chr1 38456 38536 7 80 chr1 820769 820869 1 100 chr1 820870 820970 2 100 chr1 820971 821071 3 100 chr1 821072 821172 4 100 chr1 821173 821273 5 100 chr1 821274 821374 6 100 chr1 821375 821475 7 100 chr1 821476 821576 8 100 chr1 821577 821677 9 100 chr1 821678 821778 10 100 chr1 821779 821857 11 78 chr1 5018483 5018583 1 100 chr1 5018584 5018684 2 100 chr1 5018685 5018785 3 100 chr1 5018786 5018886 4 100 chr1 5018887 5018987 5 100 chr1 5018988 5019041 6 534. Tuy nhiên, tôi không nghĩ rằng thay đổi nhỏ mà bạn đã thực hiện đối với lệnh
chr1 37850 37950 1 100 chr1 37951 38051 2 100 chr1 38052 38152 3 100 chr1 38153 38253 4 100 chr1 38254 38354 5 100 chr1 38355 38455 6 100 chr1 38456 38536 7 80 chr1 820769 820869 1 100 chr1 820870 820970 2 100 chr1 820971 821071 3 100 chr1 821072 821172 4 100 chr1 821173 821273 5 100 chr1 821274 821374 6 100 chr1 821375 821475 7 100 chr1 821476 821576 8 100 chr1 821577 821677 9 100 chr1 821678 821778 10 100 chr1 821779 821857 11 78 chr1 5018483 5018583 1 100 chr1 5018584 5018684 2 100 chr1 5018685 5018785 3 100 chr1 5018786 5018886 4 100 chr1 5018887 5018987 5 100 chr1 5018988 5019041 6 537 của mình sẽ hoạt động như dự kiến. Bạn đã kiểm tra mã?
THÊM TRẢ LỜI • liên kết 10. 1 năm trước bởi steve ▴ 40
0
Vào chế độ chỉnh sửa
Bạn đúng. Đã xóa phần chỉnh sửa với giả định rằng đây là điều họ muốn
THÊM TRẢ LỜI • liên kết 10. 1 năm trước bởi Aaronquinlan 11k
3
Vào chế độ chỉnh sửa
10. 1 năm trước
steve ▴ 40
Tôi đã làm theo điều này từ đây
chr1 37850 37950 1 100 chr1 37951 38051 2 100 chr1 38052 38152 3 100 chr1 38153 38253 4 100 chr1 38254 38354 5 100 chr1 38355 38455 6 100 chr1 38456 38536 7 80 chr1 820769 820869 1 100 chr1 820870 820970 2 100 chr1 820971 821071 3 100 chr1 821072 821172 4 100 chr1 821173 821273 5 100 chr1 821274 821374 6 100 chr1 821375 821475 7 100 chr1 821476 821576 8 100 chr1 821577 821677 9 100 chr1 821678 821778 10 100 chr1 821779 821857 11 78 chr1 5018483 5018583 1 100 chr1 5018584 5018684 2 100 chr1 5018685 5018785 3 100 chr1 5018786 5018886 4 100 chr1 5018887 5018987 5 100 chr1 5018988 5019041 6 530
Đây là một cách sử dụng
chr1 37850 37950 1 100 chr1 37951 38051 2 100 chr1 38052 38152 3 100 chr1 38153 38253 4 100 chr1 38254 38354 5 100 chr1 38355 38455 6 100 chr1 38456 38536 7 80 chr1 820769 820869 1 100 chr1 820870 820970 2 100 chr1 820971 821071 3 100 chr1 821072 821172 4 100 chr1 821173 821273 5 100 chr1 821274 821374 6 100 chr1 821375 821475 7 100 chr1 821476 821576 8 100 chr1 821577 821677 9 100 chr1 821678 821778 10 100 chr1 821779 821857 11 78 chr1 5018483 5018583 1 100 chr1 5018584 5018684 2 100 chr1 5018685 5018785 3 100 chr1 5018786 5018886 4 100 chr1 5018887 5018987 5 100 chr1 5018988 5019041 6 537
chr1 37850 37950 1 100 chr1 37951 38051 2 100 chr1 38052 38152 3 100 chr1 38153 38253 4 100 chr1 38254 38354 5 100 chr1 38355 38455 6 100 chr1 38456 38536 7 80 chr1 820769 820869 1 100 chr1 820870 820970 2 100 chr1 820971 821071 3 100 chr1 821072 821172 4 100 chr1 821173 821273 5 100 chr1 821274 821374 6 100 chr1 821375 821475 7 100 chr1 821476 821576 8 100 chr1 821577 821677 9 100 chr1 821678 821778 10 100 chr1 821779 821857 11 78 chr1 5018483 5018583 1 100 chr1 5018584 5018684 2 100 chr1 5018685 5018785 3 100 chr1 5018786 5018886 4 100 chr1 5018887 5018987 5 100 chr1 5018988 5019041 6 531
Kết quả
chr1 37850 37950 1 100 chr1 37951 38051 2 100 chr1 38052 38152 3 100 chr1 38153 38253 4 100 chr1 38254 38354 5 100 chr1 38355 38455 6 100 chr1 38456 38536 7 80 chr1 820769 820869 1 100 chr1 820870 820970 2 100 chr1 820971 821071 3 100 chr1 821072 821172 4 100 chr1 821173 821273 5 100 chr1 821274 821374 6 100 chr1 821375 821475 7 100 chr1 821476 821576 8 100 chr1 821577 821677 9 100 chr1 821678 821778 10 100 chr1 821779 821857 11 78 chr1 5018483 5018583 1 100 chr1 5018584 5018684 2 100 chr1 5018685 5018785 3 100 chr1 5018786 5018886 4 100 chr1 5018887 5018987 5 100 chr1 5018988 5019041 6 532
THÊM NHẬN XÉT • liên kết 10. 1 năm trước bởi steve ▴ 40
0
Vào chế độ chỉnh sửa
+1 Awk thực sự mạnh mẽ. ]
THÊM TRẢ LỜI • liên kết 10. 1 năm trước bởi Sukhi Singh 11k
0
Vào chế độ chỉnh sửa
10. 1 năm trước
daniel. soronellas ▴ 330
Cảm ơn mọi người vì sự giúp đỡ của bạn. nó đã làm việc. . ]
THÊM NHẬN XÉT • liên kết 10. 1 năm trước bởi daniel. soronellas ▴ 330
0
Vào chế độ chỉnh sửa
Đây không phải là câu trả lời, vì vậy bạn nên đặt nó làm nhận xét trong câu hỏi ban đầu của mình và xóa "câu trả lời" này. Rất vui vì bạn đã tìm ra giải pháp cho vấn đề của mình