मैं दो फ़ाइलों है:एक फाइल से क्षेत्रों है कि अन्य फ़ाइल में क्षेत्रों का हिस्सा हैं जाओ (लूप के बिना)
regions.txt: पहले स्तंभ गुणसूत्र नाम, दूसरे और तीसरे आरंभ और समाप्ति स्थिति हो रहा है।
1 100 200
1 400 600
2 600 700
कवरेज.txt: पहला कॉलम गुणसूत्र नाम है, फिर दूसरा और तीसरा प्रारंभ और अंत स्थिति है, और अंतिम कॉलम स्कोर है।
1 100 101 5
1 101 102 7
1 103 105 8
2 600 601 10
2 601 602 15
यह फ़ाइल लगभग 300 जीबी लाइनों के साथ लगभग 15 जीबी है।
मैं मूल रूप से covers.txt में सभी क्षेत्रों का अर्थ प्राप्त करना चाहता हूं जो क्षेत्रों.txt में प्रत्येक क्षेत्र में हैं।
दूसरे शब्दों में, regions.txt में पहली पंक्ति से शुरू करें, यदि cover.txt में कोई पंक्ति है, जिसमें समान गुणसूत्र है, प्रारंभ-कवरेज> = प्रारंभ-क्षेत्र है, और अंत-कवरेज < = अंत क्षेत्र, फिर अपने स्कोर को एक नई सरणी में सहेजें। सभी coverages.txt में खोज खत्म करने के बाद क्षेत्र गुणसूत्र, प्रारंभ, अंत, और पाया गया सभी स्कोर का मतलब प्रिंट करें।
अपेक्षित उत्पादन:
1 100 200 14.6 which is (5+7+8)/3
1 400 600 0 no match at coverages.txt
2 600 700 12.5 which is (10+15)/2
मैं निम्नलिखित MATLAB स्क्रिप्ट है जो बहुत लंबा समय लग के बाद से मैं coverage.txt कई समय के साथ पाश के लिए है का निर्माण किया। मुझे नहीं पता कि एक तेज अजीब समान स्क्रिप्ट कैसे बनाएं।
मेरे matlab स्क्रिप्ट
fc = fopen('coverage.txt', 'r');
ft = fopen('regions.txt', 'r');
fw = fopen('out.txt', 'w');
while feof(ft) == 0
linet = fgetl(ft);
scant = textscan(linet, '%d%d%d');
tchr = scant{1};
tx = scant{2};
ty = scant{3};
coverages = [];
frewind(fc);
while feof(fc) == 0
linec = fgetl(fc);
scanc = textscan(linec, '%d%d%d%d');
cchr = scanc{1};
cx = scanc{2};
cy = scanc{3};
cov = scanc{4};
if (cchr == tchr) && (cx >= tx) && (cy <= ty)
coverages = cat(2, coverages, cov);
end
end
covmed = median(coverages);
fprintf(fw, '%d\t%d\t%d\t%d\n', tchr, tx, ty, covmed);
end
कोई सुझाव का उपयोग कर एक विकल्प बनाने की AWK, पर्ल, या, ... आदि मैं कृपा विस्फोट अगर कोई मुझे सिखाने कैसे में सभी छोरों से छुटकारा पाने के कर सकते हैं मेरे matlab लिपि।
धन्यवाद
कितने लाइनों क्षेत्र में कर रहे हैं ।टेक्स्ट? क्या शुरुआत और अंत स्थिति विघटन (प्रारंभ/अंत के अलावा गैर-ओवरलैपिंग) हैं? – Jens
Regions.txt केवल 4500 लाइनें हैं। क्षेत्रों में क्षेत्र।txt सभी एक दूसरे के साथ ओवरलैपिंग नहीं कर रहे हैं। – user1526694
क्या आपकी डेटा फाइल टैब अलग या निश्चित चौड़ाई है? – TLP