Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Word?] Vervangen/verwijderen van teksten met errors

Pagina: 1
Acties:

  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
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):
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.


Verwijderd

je omschrijving van het probleem is duidelijk.
het zou wel handig zijn denk ik als je je beetje verdiept in programmeren (voor windows het file systemobject & reguliere expressies- beiden volledig toegankelijk via een office toepassing), want ik vermoed dat je toch op regelmatige basis met dergelijke outputbestanden moet werken.
met s&r in word geraak je tot aan een zeker punt in de opkuis, met enkele goede accessqueries zal ook wel eea bereikt kunnen worden.

  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Verwijderd schreef op woensdag 03 december 2008 @ 23:31:
je omschrijving van het probleem is duidelijk.
Dank :) .
het zou wel handig zijn denk ik als je je beetje verdiept in programmeren (voor windows het file systemobject & reguliere expressies- beiden volledig toegankelijk via een office toepassing), want ik vermoed dat je toch op regelmatige basis met dergelijke outputbestanden moet werken.
Die analyse kostte ongeveer €15,000, en daarmee is het geldpotje voorlopig leeg. Als ze mijn beursaanvraag goedkeuren, dan komt de volgende set data ergens over een jaar of zo... ;)

De Duitse onderzoeksgroep met wie we samenwerken is al met hun Perl scripts aan de gang gegaan, en zij hebben vaker met dit bijltje gehakt. Ik wil echter graag niet volledig van hen afhankelijk zijn, vandaar mijn interesse :) .

Programmeerkennis zou handig zijn, maar de tijd om me daarin te verdiepen is helaas niet aanwezig. Ik bedoelde dit dan ook meer als discussietopic over de verschillende aanpakken, en zeker niet als scriptrequest!
met s&r in word geraak je tot aan een zeker punt in de opkuis, met enkele goede accessqueries zal ook wel eea bereikt kunnen worden.
Zou scripten in Perl verstandiger zijn? Ik denk dat ik inderdaad met S&R >90% van de gevallen zou kunnen afhandelen, alleen tussen die 600,000 (waaraan 60,000 "oude" entries aan worden toegevoegd na opschonen) dan degenen vinden waar het fout ging, dat zou wel eens moeilijk kunnen zijn :) .

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


Verwijderd

Ik denk dat het makkelijkst en voor nu het snelst (in de zin van de leercurve vs snel resultaat) om dit op te schonen dmv regular expressions. Persoonlijk ben ik een fan van UltraEdit (regular expressions met macro functionaliteit), maar je kan het ook in word http://office.microsoft.com/en-us/help/HA010873051033.aspx zoals je zelf ook al aan hebt gegeven.

Hoe weet je trouwens waar de beginvervuiling eindigd en de echte data begint? Je geeft aan dat het ongeveer 24 karakters zijn en ik zag niet echt afwijkende karakters tussen de vervuiling en de data.

[ Voor 22% gewijzigd door Verwijderd op 03-12-2008 23:45 ]


  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Verwijderd schreef op woensdag 03 december 2008 @ 23:39:
Ik denk dat het makkelijkst en voor nu het snelst (in de zin van de leercurve vs snel resultaat) om dit op te schonen dmv regular expressions. Persoonlijk ben ik een fan van UltraEdit (regular expressions met macro functionaliteit), maar je kan het ook in word http://office.microsoft.com/en-us/help/HA010873051033.aspx zoals je zelf ook al aan hebt gegeven.
Dank, ga ik mee aan de slag :) .
Hoe weet je trouwens waar de beginvervuiling eindigd en de echte data begint? Je geeft aan dat het ongeveer 24 karakters zijn en ik zag niet echt afwijkende karakters tussen de vervuiling en de data.
Het gaat misschien wat ver om uit te leggen, maar de eerste 24 letters is onderdeel van een zogenaamde adapter die aan een stuk DNA is gezet. De letters 3-6 zijn een barcode, in de helft van de data is dat GCTC, in de stukjes die ik toon GTAT. Ik heb met een stuk of 80 dataentries gespeeld, en in 7/8 is de adapter geheel correct aanwezig en makkelijk te verwijderen. In de andere 1/8 kan het zijn dat er 1 letter mist (dus maar 23 karakters), of er fouten in zitten (een G ipv een A of zo).

Daar het om DNA gaat zijn er eigenlijk maar 5 mogelijkheden: A, C, G en T, en N (1 van de 4).

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


Verwijderd

gambieter schreef op woensdag 03 december 2008 @ 23:39:Zou scripten in Perl verstandiger zijn? Ik denk dat ik inderdaad met S&R >90% van de gevallen zou kunnen afhandelen, alleen tussen die 600,000 (waaraan 60,000 "oude" entries aan worden toegevoegd na opschonen) dan degenen vinden waar het fout ging, dat zou wel eens moeilijk kunnen zijn :) .
dit is inderdaad een goede keuze imo:

- open & cross platform
- <1 dag om aan te leren
- alle nodige tools voor textparsing zijn aanwezig.

om even te nuanceren : zie ook
http://www.equivalence.co.uk/archives/78
http://use.perl.org/~Ovid/journal/38010?from=rss
Pagina: 1