Hopelijk is de titel een beetje duidelijk, vind het moeilijk te omschrijven.
Ik heb twee tekstbestanden gekregen van ieder ongeveer 300,000 dataentries. Het gaat om het bepalen van DNA volgordes op grote schaal, maar deze data zijn nog "vervuild" door zogenaamde adapters. De data zien er ongeveer zo uit (3 van de 600,000 sequenties):
Elke data-entry begint met een commentaar regel die start met >, en de volgende regels zijn data tot de volgende > volgt. Alle tekst is in hoofdletters, maar ik heb zelf bij deze 3 de kleine letters gebruikt om de vervuiling aan te geven. Aan het begin staan ongeveer 24 letters (ctgtatgaccttggctgtcactca), en aan het eind zit een string van minstens 10x a (meestal ongeveer 20, soms met een interruptie van een "n" welke betekent dat er een karakter staat, maar onduidelijk welke). Achter de string van "a" volgt meestal nog 10-20 karakters, welke verder niet van belang zijn.
Ik wil de 600,000 sequenties schoon maken door de begin en eindvervuiling te verwijderen. Een probleem is echter dat er foutjes kunnen zitten in de begintekst, oftewel ik wil zoeken naar "ctgtatgaccttggctgtcactca" en deze verwijderen als zeg 20/24 karakters correct zijn. Daarna moet in elke entry worden gezocht naar een string van >15 A's op een rij, mogelijk geinterrumpeerd door 1 of 2 "N"s. Daarna moet de A-string plus alles wat volgt (op de harde return na) verwijderd worden.
Heeft iemand suggesties hoe dit het makkelijkste te bereiken? Kan dit met Zoek/Vervang van MS-Word, of wordt dit programmeren? Helaas heb ik geen programmeerervaring. Dit is geen scriptrequest, maar het gaat me meer om een discussie wat de mogelijke aanpakken zijn.
Thanks
Edit: ben intussen weer wat verder gegaan. Ik kan met wildcards gaan werken in de zoek- en vervangopties van MS-Word, en daarmee relatief snel (via een macro) de begin"vervuiling" weghalen. De eindvervuiling blijft moeilijker.
Ik heb gekeken in de informatie die ik van mijn beestje heb, en het hoogste aantal A's op een rij is 12, dus alles van >12 A's is "vervuiling". Dan zou het kunnen door alles om te zetten (inclusief degenen waar een N tussen de A's staat) naar 30x A, en dan via een macro de 30 A's te zoeken, en alles vanaf de 30 A's tot de harde return te verwijderen?
Ik heb twee tekstbestanden gekregen van ieder ongeveer 300,000 dataentries. Het gaat om het bepalen van DNA volgordes op grote schaal, maar deze data zijn nog "vervuild" door zogenaamde adapters. De data zien er ongeveer zo uit (3 van de 600,000 sequenties):
code:
1
2
3
4
5
6
7
8
9
| >FLA7FZ201DENX9 ctgtatgaccttggctgtcactcaAGTTGGTAGAGCGCCACCCTTACAAGGTGGATGTCA TAAGTTCGAGTCTTATAGTGACCCCaaaaaaaaaaanaaaaggcgggcatgtctc >FLA7FZ201B1JHD ctgtatgaccttggctgtcactcaTTCTAAGCCGTAGGTCAGAGGTTCGAATCCTCTTGG GCGTCCaaaaaaaaaanaaaaaaggcggggcgatgtctc >FLA7FZ201DBUYA ctgtatgaccttggctgtcactcaCCTCCAGGGGTTCGAATCCCTTTCTCCCGGCCaaaa aaaaaaanaaaaaaaggcgggcgatgtctc |
Elke data-entry begint met een commentaar regel die start met >, en de volgende regels zijn data tot de volgende > volgt. Alle tekst is in hoofdletters, maar ik heb zelf bij deze 3 de kleine letters gebruikt om de vervuiling aan te geven. Aan het begin staan ongeveer 24 letters (ctgtatgaccttggctgtcactca), en aan het eind zit een string van minstens 10x a (meestal ongeveer 20, soms met een interruptie van een "n" welke betekent dat er een karakter staat, maar onduidelijk welke). Achter de string van "a" volgt meestal nog 10-20 karakters, welke verder niet van belang zijn.
Ik wil de 600,000 sequenties schoon maken door de begin en eindvervuiling te verwijderen. Een probleem is echter dat er foutjes kunnen zitten in de begintekst, oftewel ik wil zoeken naar "ctgtatgaccttggctgtcactca" en deze verwijderen als zeg 20/24 karakters correct zijn. Daarna moet in elke entry worden gezocht naar een string van >15 A's op een rij, mogelijk geinterrumpeerd door 1 of 2 "N"s. Daarna moet de A-string plus alles wat volgt (op de harde return na) verwijderd worden.
Heeft iemand suggesties hoe dit het makkelijkste te bereiken? Kan dit met Zoek/Vervang van MS-Word, of wordt dit programmeren? Helaas heb ik geen programmeerervaring. Dit is geen scriptrequest, maar het gaat me meer om een discussie wat de mogelijke aanpakken zijn.
Thanks
Edit: ben intussen weer wat verder gegaan. Ik kan met wildcards gaan werken in de zoek- en vervangopties van MS-Word, en daarmee relatief snel (via een macro) de begin"vervuiling" weghalen. De eindvervuiling blijft moeilijker.
Ik heb gekeken in de informatie die ik van mijn beestje heb, en het hoogste aantal A's op een rij is 12, dus alles van >12 A's is "vervuiling". Dan zou het kunnen door alles om te zetten (inclusief degenen waar een N tussen de A's staat) naar 30x A, en dan via een macro de 30 A's te zoeken, en alles vanaf de 30 A's tot de harde return te verwijderen?
[ Voor 12% gewijzigd door gambieter op 03-12-2008 19:44 ]
I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.