diff --git a/repository/BioParsers-Tests/BioPhylipParserTest.class.st b/repository/BioParsers-Tests/BioPhylipParserTest.class.st index 55a66c27..2c2e750d 100644 --- a/repository/BioParsers-Tests/BioPhylipParserTest.class.st +++ b/repository/BioParsers-Tests/BioPhylipParserTest.class.st @@ -5,366 +5,250 @@ Class { #package : 'BioParsers-Tests' } -{ #category : 'as yet unclassified' } -BioPhylipParserTest >> testAmbiguousDNAAlphabetDetection [ - "Note: Ambiguous DNA codes like N, R, Y overlap with amino acid codes. - BioSmalltalk detects such sequences as protein alphabet by default. - This test verifies that sequences are still created correctly." - | phylip aln seq | - phylip := '2 10 -Seq1 AACGTGGNNA -Seq2 CCGTATGGNN -'. - aln := BioPhylipParser parseString: phylip. - seq := aln sequences first. - "Sequence is created and can be used regardless of alphabet detection" - self assert: seq size equals: 10. - self assert: (seq asString includesSubstring: 'NN') -] - -{ #category : 'tests' } -BioPhylipParserTest >> testAsPhylipStringRelaxed [ - - | phylip aln output | - phylip := '3 10 -Homo_sapiens AACGTGGCCA -Pan_troglodytes CCGTATGGCC -Gorilla GGCTTTGACC -'. - aln := BioPhylipParser parseString: phylip. - output := BioPhylipParser new asPhylipStringRelaxed: aln. - self assert: (output includesSubstring: '3 10'). - self assert: (output includesSubstring: 'Homo_sapiens'). - self assert: (output includesSubstring: 'AACGTGGCCA') -] - -{ #category : 'tests' } -BioPhylipParserTest >> testAutoDetectsInterleaved [ - - | phylip aln | - phylip := '2 20 -S1 ATGCTAGCTA -S2 CCGCTAGCTA -GCTAGCTAGC -GCTAGCTAGC -'. - aln := BioPhylipParser parseString: phylip. - self assert: aln size equals: 2. - self assert: aln numberOfBases equals: 20 -] - -{ #category : 'tests' } -BioPhylipParserTest >> testAutoDetectsSequential [ - - | phylip aln | - "Sequential: taxon data on consecutive lines, continuation lines have no name" - phylip := '2 20 -S1 ATGC -GCTAGCTAGCTAGCTA -S2 CCGC -TAGCTAGCTAGCTAGC -'. - aln := BioPhylipParser parseString: phylip. - self assert: aln size equals: 2. - self assert: aln numberOfBases equals: 20 -] - -{ #category : 'tests' } -BioPhylipParserTest >> testClassicStrict5Taxa [ - - | phylip aln | - phylip := '5 13 -Alpha AACGTGGCCACAT -Beta AAGGTCGCCACAC -Gamma CAGTTCGCCACAA -Delta GAGATTTCCGCCT -Epsilon GAGATCTCCGCCC -'. - aln := BioPhylipParser parseString: phylip. - self assert: aln size equals: 5. - self assert: aln numberOfBases equals: 13. - self assert: (aln sequenceNames includes: 'Alpha'). - self assert: (aln sequenceNames includes: 'Epsilon'). - self assert: aln sequences first asString equals: 'AACGTGGCCACAT'. - self assert: aln sequences last asString equals: 'GAGATCTCCGCCC' -] - -{ #category : 'as yet unclassified' } -BioPhylipParserTest >> testDNAAlphabetDetection [ - | phylip aln seq | - phylip := '2 10 -Seq1 AACGTGGCCA -Seq2 CCGTATGGCA -'. - aln := BioPhylipParser parseString: phylip. - seq := aln sequences first. - self assert: (seq alphabet class name) equals: #BioIUPACUnambiguousDNA -] - -{ #category : 'tests' } -BioPhylipParserTest >> testGapsAndAmbiguityCodes [ - - | phylip aln | - phylip := '3 10 -Seq1 AAC-GG??TN -Seq2 CCN-AT???K -Seq3 GGRYY??-KM -'. - aln := BioPhylipParser parseString: phylip. - self assert: aln size equals: 3. - self assert: aln numberOfBases equals: 10. - self assert: aln sequences first asString equals: 'AAC-GG??TN' -] - -{ #category : 'tests' } -BioPhylipParserTest >> testInterleavedWithBlankLines [ - - | phylip aln | - phylip := '3 40 -Taxon1 ATGCTAGCTAGCTAGCTAGC -Taxon2 CCGCTAGCTAGCTAGCTAGC -Taxon3 GGGCTAGCTAGCTAGCTAGC - -TAGCTAGCTAGCTAGCTAGC -TAGCTAGCTAGCTAGCTAGC -TAGCTAGCTAGCTAGCTAGC -'. - aln := BioPhylipParser parseString: phylip. - self assert: aln size equals: 3. - self assert: aln numberOfBases equals: 40 -] - -{ #category : 'tests' } -BioPhylipParserTest >> testMinimalFile [ - - | phylip aln | - phylip := '2 1 -A T -B G -'. - aln := BioPhylipParser parseString: phylip. - self assert: aln size equals: 2. - self assert: aln numberOfBases equals: 1. - self assert: aln sequences first asString equals: 'T'. - self assert: aln sequences last asString equals: 'G' -] - -{ #category : 'tests' } -BioPhylipParserTest >> testParserProperties [ - - | phylip aln | - phylip := '3 10 -Taxon1 AACGTGGCCA -Taxon2 CCGTATGGCC -Taxon3 GGCTTTGACC -'. - aln := BioPhylipParser parseString: phylip. - self assert: aln size equals: 3. - self assert: aln numberOfBases equals: 10. - self assert: (aln sequenceNames includes: 'Taxon1'). - self assert: (aln sequenceNames includes: 'Taxon3') -] - -{ #category : 'as yet unclassified' } -BioPhylipParserTest >> testProteinAlphabetDetection [ - | phylip aln seq | - phylip := '2 15 -Human MVKQLEARKRPEQQE -Mouse MVKQLEARHRPEQQK -'. - aln := BioPhylipParser parseString: phylip. - seq := aln sequences first. - self assert: (seq alphabet class name) equals: #BioIUPACProtein -] - -{ #category : 'tests' } -BioPhylipParserTest >> testProteinSequences [ +{ #category : 'testing' } +BioPhylipParserTest >> firstLineTokenizer [ + + ^ BioPhylipParser new firstLineTokenizer +] + +{ #category : 'testing' } +BioPhylipParserTest >> phylipInterleavedDNA [ + + ^ ' 6 13 +Archaeopt CGATGCTTAC CGCCGATGCT +HesperorniCGTTACTCGT TGTCGTTACT +BaluchitheTAATGTTAAT TGTTAATGTT +B. virginiTAATGTTCGT TGTTAATGTT +BrontosaurCAAAACCCAT CATCAAAACC +B.subtilisGGCAGCCAAT CACGGCAGCC + +TACCGCCGAT GCTTACCGC +CGTTGTCGTT ACTCGTTGT +AATTGTTAAT GTTAATTGT +CGTTGTTAAT GTTCGTTGT +CATCATCAAA ACCCATCAT +AATCACGGCA GCCAATCAC + +CCCCGCCCCC GCTTACCGC +CCCCGTCCCC ACTCGTTGT +CCCCGTCCCC GTTAATTGT +CCCCGTCCCC GTTCGTTGT +CCCCATCCCC ACCCATCAT +CCCCACCCCC GCCAATCAC +' +] + +{ #category : 'testing' } +BioPhylipParserTest >> phylipInterleavedProtein [ + + ^ ' 5 176 +cox2_leitaMAFILSFWMI FLLDSVIVLL SFVCFVCVWI CALLFSTVLL VSKLNNIYCT +cox2_crifaMAFILSFWMI FLIDAVIVLL SFVCFVCIWI CSLFFSSFLL VSKINNVYCT +cox2_bsaltMSFIISFWML FLIDSLIVLL SGAIFVCIWI CSLFFLCILF ICKLDYIFCS +cox2_trybbMSFILTFWMI FLMDSIIVLI SFSIFLSVWI CALIIATVLT VTKINNIYCT +cox2_tborrMLFFINQLLL LLVDTFVILE IFSLFVCVFI IVMYILFINY NIFLKNINVY + +WDFTASKFID VYWFTIGGMF SLGLLLRLCL LLYFGHLNFV SFDLCKVVGF +WDFTASKFID AYWFTIGGMF VLCLLLRLCL LLYFGCLNFV SFDLCKVVGF +WDFISAKFID LYWFTLGCLF IVCLLIRLCL LLYFSCLNFV CFDLCKCIGF +WDFISSKFID TYWFVLGMMF ILCLLLRLCL LLYFSCINFV SFDLCKVIGF +LDFIGSKYLD LYWFLIGIFF VIVLLIRLCL LLYYSWISLL IFDLCKIMGF + +QWYWVYFIFG ETTIFSNLIL ESDYMIGDLR LLQCNHVLTL LSLVIYKLWL +QWYWVYFIFG ETTIFSNLIL ESDYLIGDLR LLQCNHVLTL LSLVIYKLWL +QWYWVYFIFG ETTIFSNLIL ESDYLIGDLR LLQCNHVLTL LSLVIYKVWL +QWYWVYFLFG ETTIFSNLIL ESDYLIGDLR ILQCNHVLTL LSLVIYKLWV +QWYWIFFVFK ENVIFSNLLI ESDYWIGDLR LLQCNNTFNL ICLVVYKIWV + +SAVDVIHSFA ISSLGVKVEN LVAVMK +SAVDVIHSFA VSSLGIKVDC IPGRCN +SAIDVIHSFT LANLGIKVD? ?PGRCN +SAVDVIHSFT ISSLGIKVEN PGRCNE +TSIDVIHSFT ISTLGIKIDC IPGRCN +' +] + +{ #category : 'testing' } +BioPhylipParserTest >> speciesDNALineTokenizer [ + + ^ BioPhylipParser new speciesDNALineTokenizer +] + +{ #category : 'testing' } +BioPhylipParserTest >> speciesDNANamedBlockTokenizer [ + + ^ BioPhylipParser new speciesDNANamedBlockTokenizer +] + +{ #category : 'testing' } +BioPhylipParserTest >> testTokenizeDNASpeciesBlock01 [ + " Private - Answer a with a sample phylip DNA " + + | speciesBlock expectedResult firstRecord | + + speciesBlock := 'Archaeopt CGATGCTTAC CGC +HesperorniCGTTACTCGT TGT +BaluchitheTAATGTTAAT TGT +B. virginiTAATGTTCGT TGT +BrontosaurCAAAACCCAT CAT +B.subtilisGGCAGCCAAT CAC'. + expectedResult := #(#('Archaeopt ' 'CGATGCTTAC CGC' nil) #('Hesperorni' 'CGTTACTCGT TGT' nil) #('Baluchithe' 'TAATGTTAAT TGT' nil) #('B. virgini' 'TAATGTTCGT TGT' nil) #('Brontosaur' 'CAAAACCCAT CAT' nil)). + + parseResult := self speciesDNANamedBlockTokenizer parse: speciesBlock. + firstRecord := parseResult first. + + self assert: firstRecord first equals: 'Archaeopt '. + self assert: firstRecord second equals: 'CGATGCTTAC CGC'. + +] + +{ #category : 'testing' } +BioPhylipParserTest >> testTokenizeDNASpeciesBlock02 [ + " Private - Answer a with a sample phylip DNA " + + | speciesBlock expectedResult firstRecord | + + speciesBlock := 'Archaeopt CGATGCTTAC CGC +Hes CGTTACTCGT TGT +BaluchitheTAATGTTAAT TGT +B. virginiTAATGTTCGT TGT +BrontosaurCAAAACCCAT CAT +B.subtilisGGCAGCCAAT CAC'. + expectedResult := #( + #('Archaeopt ' 'CGATGCTTAC CGC') + #('Hesperorni' 'CGTTACTCGT TGT') + #('Baluchithe' 'TAATGTTAAT TGT') + #('B. virgini' 'TAATGTTCGT TGT') + #('Brontosaur' 'CAAAACCCAT CAT')). + + parseResult := self speciesDNANamedBlockTokenizer parse: speciesBlock. + firstRecord := parseResult first. + + self assert: firstRecord first equals: 'Archaeopt '. + self assert: firstRecord second equals: 'CGATGCTTAC CGC'. + +] + +{ #category : 'testing' } +BioPhylipParserTest >> testTokenizeDNASpeciesLine01 [ + " Private - Answer a with a sample phylip DNA " + + | speciesLineBlock expectedResult | + + speciesLineBlock := 'Archaeopt CGATGCTTAC CGC'. + expectedResult := #('Archaeopt ' 'CGATGCTTACCGC'). + parseResult := self speciesDNALineTokenizer parse: speciesLineBlock. + + self assert: (parseResult bioHasEqualElements: expectedResult ). +] + +{ #category : 'testing' } +BioPhylipParserTest >> testTokenizeDNASpeciesLine02 [ + " Private - Answer a with a sample phylip DNA " + + | speciesLineBlock expectedResult | + + speciesLineBlock := 'Archaeopt CGATGCTTACCGC'. + expectedResult := #('Archaeopt ' 'CGATGCTTACCGC'). + parseResult := self speciesDNALineTokenizer parse: speciesLineBlock. + + self assert: (parseResult bioHasEqualElements: expectedResult). + +] + +{ #category : 'testing' } +BioPhylipParserTest >> testTokenizeDNASpeciesLine03 [ + " Private - Answer a with a sample phylip DNA " + + | speciesLineBlock expectedResult | + + speciesLineBlock := 'B. virginiTAATGTTCGT TGT'. + expectedResult := #('B. virgini' 'TAATGTTCGTTGT'). + parseResult := self speciesDNALineTokenizer parse: speciesLineBlock. + + self assert: (parseResult bioHasEqualElements: expectedResult). + +] + +{ #category : 'testing' } +BioPhylipParserTest >> testTokenizeFirstLine01 [ + " Private - Answer a with a sample phylip DNA " + + | firstLine | + + firstLine := '6 13 +'. + parseResult := self firstLineTokenizer parse: firstLine. + self assert: (parseResult bioHasEqualElements: #('6' '13') ). + +] + +{ #category : 'testing' } +BioPhylipParserTest >> testTokenizeFirstLine02 [ + " Private - Answer a with a sample phylip DNA " + + | firstLine | + + firstLine := ' 6 13 +'. + parseResult := self firstLineTokenizer parse: firstLine. + self assert: (parseResult bioHasEqualElements: #('6' '13') ). + +] + +{ #category : 'testing' } +BioPhylipParserTest >> testTokenizeFirstLine03 [ + " Private - Answer a with a sample phylip DNA " + + | firstLine | + + firstLine := '6 13 +'. + parseResult := self firstLineTokenizer parse: firstLine. + self assert: (parseResult bioHasEqualElements: #('6' '13') ). + +] + +{ #category : 'testing' } +BioPhylipParserTest >> testTokenizeInterleavedDNA [ + " Private - Answer a with a sample phylip DNA " + + | phylipString | + phylipString := self phylipInterleavedDNA. + + parseResult := BioParser tokenizePhylipInterleavedDNA: phylipString. + self assert: parseResult size equals: 4. + self assert: parseResult first equals: 6. + self assert: parseResult second equals: 13. + self assert: (parseResult third bioHasEqualElements: + #( 'Archaeopt ' 'Hesperorni' 'Baluchithe' 'B. virgini' + 'Brontosaur' 'B.subtilis' )). + self assert: (parseResult fourth bioHasEqualElements: + #( 'CGATGCTTACCGCCGATGCTTACCGCCGATGCTTACCGCCCCCGCCCCCGCTTACCGC' + 'CGTTACTCGTTGTCGTTACTCGTTGTCGTTACTCGTTGTCCCCGTCCCCACTCGTTGT' + 'TAATGTTAATTGTTAATGTTAATTGTTAATGTTAATTGTCCCCGTCCCCGTTAATTGT' + 'TAATGTTCGTTGTTAATGTTCGTTGTTAATGTTCGTTGTCCCCGTCCCCGTTCGTTGT' + 'CAAAACCCATCATCAAAACCCATCATCAAAACCCATCATCCCCATCCCCACCCATCAT' + 'GGCAGCCAATCACGGCAGCCAATCACGGCAGCCAATCACCCCCACCCCCGCCAATCAC' )) +] + +{ #category : 'testing' } +BioPhylipParserTest >> testTokenizeInterleavedProtein [ + + | phylipString | + phylipString := self phylipInterleavedProtein. + parseResult := BioParser tokenizePhylipInterleavedProtein: phylipString. - | phylip aln | - "Protein sequences with amino acid codes" - phylip := '3 10 -Human MVKQLEARKR -Mouse MVKQLEARHR -Chicken GGCTTTGACC -'. - aln := BioPhylipParser parseString: phylip. - self assert: aln size equals: 3. - self assert: aln numberOfBases equals: 10. - self assert: (aln sequenceNames includes: 'Human') -] - -{ #category : 'as yet unclassified' } -BioPhylipParserTest >> testRNAAlphabetDetection [ - | phylip aln seq | - phylip := '2 10 -Seq1 AACGUGGUUU -Seq2 CCGUAUGGAU -'. - aln := BioPhylipParser parseString: phylip. - seq := aln sequences first. - self assert: (seq alphabet class name) equals: #BioIUPACUnambiguousRNA -] - -{ #category : 'tests' } -BioPhylipParserTest >> testRelaxedInterleaved [ - - | phylip aln | - phylip := '3 40 -Homo_sapiens ATGCTAGCTAGCTAGCTAGC -Pan_troglodytes CCGCTAGCTAGCTAGCTAGC -Gorilla_gorilla GGGCTAGCTAGCTAGCTAGC -TAGCTAGCTAGCTAGCTAGC -TAGCTAGCTAGCTAGCTAGC -TAGCTAGCTAGCTAGCTAGC -'. - aln := BioPhylipParser parseString: phylip. - self assert: aln size equals: 3. - self assert: aln numberOfBases equals: 40. - self assert: (aln sequenceNames includes: 'Homo_sapiens'). - self assert: (aln sequenceNames includes: 'Gorilla_gorilla') -] - -{ #category : 'tests' } -BioPhylipParserTest >> testRelaxedSequential [ - - | phylip aln | - phylip := '4 20 -Homo_sapiens AACGTGGCCACATACGTGGC -Pan_troglodytes AAGGTCGCCACACAAGGTCC -Gorilla_gorilla CAGTTCGCCACAACAGTTCC -Pongo_abelii GAGATTTCCGCCTGAGATTT -'. - aln := BioPhylipParser parseString: phylip. - self assert: aln size equals: 4. - self assert: aln numberOfBases equals: 20. - self assert: (aln sequenceNames includes: 'Homo_sapiens'). - self assert: (aln sequenceNames includes: 'Pongo_abelii') -] - -{ #category : 'tests' } -BioPhylipParserTest >> testRoundTripStrict [ - - | phylip aln output | - phylip := '3 10 -Taxon1 AACGTGGCCA -Taxon2 CCGTATGGCC -Taxon3 GGCTTTGACC -'. - aln := BioPhylipParser parseString: phylip. - output := BioPhylipParser new asPhylipStringStrict: aln. - self assert: (output includesSubstring: '3 10'). - self assert: (output includesSubstring: 'Taxon1'). - self assert: (output includesSubstring: 'AACGTGGCCA') -] - -{ #category : 'tests' } -BioPhylipParserTest >> testSequentialWithWrapping [ - - | phylip aln | - phylip := '3 40 -Taxon1 ATGCTAGCTAGCTAGCTAGC -TAGCTAGCTAGCTAGCTAGC -Taxon2 CCGCTAGCTAGCTAGCTAGC -TAGCTAGCTAGCTAGCTAGC -Taxon3 GGGCTAGCTAGCTAGCTAGC -TAGCTAGCTAGCTAGCTAGC -'. - aln := BioPhylipParser parseString: phylip. - self assert: aln size equals: 3. - self assert: aln numberOfBases equals: 40. - self assert: aln sequences first asString size equals: 40 -] - -{ #category : 'tests' } -BioPhylipParserTest >> testSpacesInSequences [ - - | phylip aln | - phylip := '2 10 -Seq1 AACGTGGCCA -Seq2 CCGTATGGCC -'. - aln := BioPhylipParser parseString: phylip. - self assert: aln size equals: 2. - self assert: aln numberOfBases equals: 10. - self assert: aln sequences first asString equals: 'AACGTGGCCA' -] - -{ #category : 'tests' } -BioPhylipParserTest >> testStrictInterleaved [ - - | phylip aln | - phylip := '3 40 -Taxon1 ATGCTAGCTAGCTAGCTAGC -Taxon2 CCGCTAGCTAGCTAGCTAGC -Taxon3 GGGCTAGCTAGCTAGCTAGC -TAGCTAGCTAGCTAGCTAGC -TAGCTAGCTAGCTAGCTAGC -TAGCTAGCTAGCTAGCTAGC -'. - aln := BioPhylipParser parseString: phylip. - self assert: aln size equals: 3. - self assert: aln numberOfBases equals: 40. - self - assert: aln sequenceNames asArray - equals: #( 'Taxon1' 'Taxon2' 'Taxon3' ). - self - assert: aln sequences first asString - equals: 'ATGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGC' -] - -{ #category : 'tests' } -BioPhylipParserTest >> testStrictSequential [ - - | phylip aln | - phylip := '5 13 -Alpha AACGTGGCCACAT -Beta AAGGTCGCCACAC -Gamma CAGTTCGCCACAA -Delta GAGATTTCCGCCT -Epsilon GAGATCTCCGCCC -'. - aln := BioPhylipParser parseString: phylip. - self assert: aln size equals: 5. - self assert: aln numberOfBases equals: 13. - self assert: (aln sequenceNames includes: 'Alpha'). - self assert: (aln sequenceNames includes: 'Epsilon'). - self assert: aln sequences first asString equals: 'AACGTGGCCACAT' -] - -{ #category : 'tests' } -BioPhylipParserTest >> testThreeBlockInterleaved [ - - | phylip aln | - phylip := '2 60 -S1 ATGCTAGCTAGCTAGCTAGCTAGCTAGCTA -S2 ATGCTAGCTAGCTAGCTAGCTAGCTAGCTA -GCTAGCTAGCTAGCTAGCTAGCTAGCTAGC -GCTAGCTAGCTAGCTAGCTAGCTAGCTAGC -'. - aln := BioPhylipParser parseString: phylip. - self assert: aln size equals: 2. - self assert: aln numberOfBases equals: 60. - self assert: aln sequences first asString size equals: 60 -] - -{ #category : 'tests' } -BioPhylipParserTest >> testValidatorRejectsWrongSeqLength [ - - | phylip | - phylip := '2 10 -Seq1 AACGTG -Seq2 CCGTAT -'. - self should: [ BioPhylipParser parseString: phylip ] raise: Error -] - -{ #category : 'tests' } -BioPhylipParserTest >> testValidatorRejectsWrongTaxaCount [ - - | phylip | - phylip := '3 10 -Seq1 AACGTGGCCA -Seq2 CCGTATGGCC -'. - self should: [ BioPhylipParser parseString: phylip ] raise: Error + self assert: parseResult size equals: 4. + self assert: parseResult first equals: 5. + self assert: parseResult second equals: 176. + self assert: (parseResult third bioHasEqualElements: + #( 'cox2_leita' 'cox2_crifa' 'cox2_bsalt' 'cox2_trybb' + 'cox2_tborr' )). + self assert: (parseResult fourth bioHasEqualElements: + #( 'MAFILSFWMIFLLDSVIVLLSFVCFVCVWICALLFSTVLLVSKLNNIYCTWDFTASKFIDVYWFTIGGMFSLGLLLRLCLLLYFGHLNFVSFDLCKVVGFQWYWVYFIFGETTIFSNLILESDYMIGDLRLLQCNHVLTLLSLVIYKLWLSAVDVIHSFAISSLGVKVENLVAVMK' + 'MAFILSFWMIFLIDAVIVLLSFVCFVCIWICSLFFSSFLLVSKINNVYCTWDFTASKFIDAYWFTIGGMFVLCLLLRLCLLLYFGCLNFVSFDLCKVVGFQWYWVYFIFGETTIFSNLILESDYLIGDLRLLQCNHVLTLLSLVIYKLWLSAVDVIHSFAVSSLGIKVDCIPGRCN' + 'MSFIISFWMLFLIDSLIVLLSGAIFVCIWICSLFFLCILFICKLDYIFCSWDFISAKFIDLYWFTLGCLFIVCLLIRLCLLLYFSCLNFVCFDLCKCIGFQWYWVYFIFGETTIFSNLILESDYLIGDLRLLQCNHVLTLLSLVIYKVWLSAIDVIHSFTLANLGIKVD??PGRCN' + 'MSFILTFWMIFLMDSIIVLISFSIFLSVWICALIIATVLTVTKINNIYCTWDFISSKFIDTYWFVLGMMFILCLLLRLCLLLYFSCINFVSFDLCKVIGFQWYWVYFLFGETTIFSNLILESDYLIGDLRILQCNHVLTLLSLVIYKLWVSAVDVIHSFTISSLGIKVENPGRCNE' + 'MLFFINQLLLLLVDTFVILEIFSLFVCVFIIVMYILFINYNIFLKNINVYLDFIGSKYLDLYWFLIGIFFVIVLLIRLCLLLYYSWISLLIFDLCKIMGFQWYWIFFVFKENVIFSNLLIESDYWIGDLRLLQCNNTFNLICLVVYKIWVTSIDVIHSFTISTLGIKIDCIPGRCN' )) ] diff --git a/repository/BioParsers/BioGFF3CommentRecordNode.class.st b/repository/BioParsers/BioGFF3CommentRecordNode.class.st new file mode 100644 index 00000000..13326c7d --- /dev/null +++ b/repository/BioParsers/BioGFF3CommentRecordNode.class.st @@ -0,0 +1,34 @@ +Class { + #name : 'BioGFF3CommentRecordNode', + #superclass : 'BioGFF3GFF3FileNode', + #instVars : [ + 'text' + ], + #category : 'BioParsers-GFF3', + #package : 'BioParsers', + #tag : 'GFF3' +} + +{ #category : 'generated' } +BioGFF3CommentRecordNode >> acceptVisitor: aGFF3FileVisitor [ + + ^ aGFF3FileVisitor visitCommentRecord: self +] + +{ #category : 'generated' } +BioGFF3CommentRecordNode >> text [ + + ^ text +] + +{ #category : 'generated' } +BioGFF3CommentRecordNode >> text: aSmaCCToken [ + + text := aSmaCCToken +] + +{ #category : 'generated' } +BioGFF3CommentRecordNode >> tokenVariables [ + + ^ #( #text ) +] diff --git a/repository/BioParsers/BioGFF3DirectiveListNode.class.st b/repository/BioParsers/BioGFF3DirectiveListNode.class.st new file mode 100644 index 00000000..b705d52e --- /dev/null +++ b/repository/BioParsers/BioGFF3DirectiveListNode.class.st @@ -0,0 +1,31 @@ +Class { + #name : 'BioGFF3DirectiveListNode', + #superclass : 'BioGFF3GFF3FileNode', + #category : 'BioParsers-GFF3', + #package : 'BioParsers', + #tag : 'GFF3' +} + +{ #category : 'generated' } +BioGFF3DirectiveListNode >> acceptVisitor: aGFF3FileVisitor [ + + ^ aGFF3FileVisitor visitDirectiveList: self +] + +{ #category : 'generated' } +BioGFF3DirectiveListNode >> compositeNodeVariables [ + + ^ #( #directives ) +] + +{ #category : 'generated' } +BioGFF3DirectiveListNode >> directives [ + + ^ directives +] + +{ #category : 'generated-initialize-release' } +BioGFF3DirectiveListNode >> initialize [ + super initialize. + directives := OrderedCollection new: 2. +] diff --git a/repository/BioParsers/BioGFF3DirectiveNode.class.st b/repository/BioParsers/BioGFF3DirectiveNode.class.st new file mode 100644 index 00000000..aab2fce7 --- /dev/null +++ b/repository/BioParsers/BioGFF3DirectiveNode.class.st @@ -0,0 +1,34 @@ +Class { + #name : 'BioGFF3DirectiveNode', + #superclass : 'BioGFF3GFF3FileNode', + #instVars : [ + 'text' + ], + #category : 'BioParsers-GFF3', + #package : 'BioParsers', + #tag : 'GFF3' +} + +{ #category : 'generated' } +BioGFF3DirectiveNode >> acceptVisitor: aGFF3FileVisitor [ + + ^ aGFF3FileVisitor visitDirective: self +] + +{ #category : 'generated' } +BioGFF3DirectiveNode >> text [ + + ^ text +] + +{ #category : 'generated' } +BioGFF3DirectiveNode >> text: aSmaCCToken [ + + text := aSmaCCToken +] + +{ #category : 'generated' } +BioGFF3DirectiveNode >> tokenVariables [ + + ^ #( #text ) +] diff --git a/repository/BioParsers/BioGFF3FeatureLineNode.class.st b/repository/BioParsers/BioGFF3FeatureLineNode.class.st new file mode 100644 index 00000000..3642a6d8 --- /dev/null +++ b/repository/BioParsers/BioGFF3FeatureLineNode.class.st @@ -0,0 +1,138 @@ +Class { + #name : 'BioGFF3FeatureLineNode', + #superclass : 'BioGFF3GFF3FileNode', + #instVars : [ + 'seqid', + '_source', + 'type', + 'start', + 'end', + 'score', + 'strand', + 'phase', + '_attributes' + ], + #category : 'BioParsers-GFF3', + #package : 'BioParsers', + #tag : 'GFF3' +} + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> _attributes [ + + ^ _attributes +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> _attributes: aSmaCCToken [ + + _attributes := aSmaCCToken +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> _source [ + + ^ _source +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> _source: aSmaCCToken [ + + _source := aSmaCCToken +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> acceptVisitor: aGFF3FileVisitor [ + + ^ aGFF3FileVisitor visitFeatureLine: self +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> end [ + + ^ end +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> end: aSmaCCToken [ + + end := aSmaCCToken +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> phase [ + + ^ phase +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> phase: aSmaCCToken [ + + phase := aSmaCCToken +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> score [ + + ^ score +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> score: aSmaCCToken [ + + score := aSmaCCToken +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> seqid [ + + ^ seqid +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> seqid: aSmaCCToken [ + + seqid := aSmaCCToken +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> start [ + + ^ start +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> start: aSmaCCToken [ + + start := aSmaCCToken +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> strand [ + + ^ strand +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> strand: aSmaCCToken [ + + strand := aSmaCCToken +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> tokenVariables [ + + ^ #( #seqid #_source #type #start #end #score #strand #phase #_attributes ) +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> type [ + + ^ type +] + +{ #category : 'generated' } +BioGFF3FeatureLineNode >> type: aSmaCCToken [ + + type := aSmaCCToken +] diff --git a/repository/BioParsers/BioGFF3FeatureListNode.class.st b/repository/BioParsers/BioGFF3FeatureListNode.class.st new file mode 100644 index 00000000..3ef3deee --- /dev/null +++ b/repository/BioParsers/BioGFF3FeatureListNode.class.st @@ -0,0 +1,58 @@ +Class { + #name : 'BioGFF3FeatureListNode', + #superclass : 'BioGFF3GFF3FileNode', + #instVars : [ + 'lines', + '_comments' + ], + #category : 'BioParsers-GFF3', + #package : 'BioParsers', + #tag : 'GFF3' +} + +{ #category : 'generated' } +BioGFF3FeatureListNode >> _comments [ + + ^ _comments +] + +{ #category : 'generated' } +BioGFF3FeatureListNode >> _comments: anOrderedCollection [ + + self setParents: self _comments to: nil. + _comments := anOrderedCollection. + self setParents: self _comments to: self +] + +{ #category : 'generated' } +BioGFF3FeatureListNode >> acceptVisitor: aGFF3FileVisitor [ + + ^ aGFF3FileVisitor visitFeatureList: self +] + +{ #category : 'generated' } +BioGFF3FeatureListNode >> compositeNodeVariables [ + + ^ #( #lines #_comments ) +] + +{ #category : 'generated-initialize-release' } +BioGFF3FeatureListNode >> initialize [ + super initialize. + lines := OrderedCollection new: 2. + _comments := OrderedCollection new: 2. +] + +{ #category : 'generated' } +BioGFF3FeatureListNode >> lines [ + + ^ lines +] + +{ #category : 'generated' } +BioGFF3FeatureListNode >> lines: anOrderedCollection [ + + self setParents: self lines to: nil. + lines := anOrderedCollection. + self setParents: self lines to: self +] diff --git a/repository/BioParsers/BioGFF3GFF3FileNode.class.st b/repository/BioParsers/BioGFF3GFF3FileNode.class.st new file mode 100644 index 00000000..2bcd8716 --- /dev/null +++ b/repository/BioParsers/BioGFF3GFF3FileNode.class.st @@ -0,0 +1,51 @@ +Class { + #name : 'BioGFF3GFF3FileNode', + #superclass : 'SmaCCParseNode', + #instVars : [ + 'directives', + 'features' + ], + #category : 'BioParsers-GFF3', + #package : 'BioParsers', + #tag : 'GFF3' +} + +{ #category : 'generated' } +BioGFF3GFF3FileNode >> acceptVisitor: aGFF3FileVisitor [ + + ^ aGFF3FileVisitor visitGFF3File: self +] + +{ #category : 'generated' } +BioGFF3GFF3FileNode >> directives [ + + ^ directives +] + +{ #category : 'generated' } +BioGFF3GFF3FileNode >> directives: aBioGFF3DirectiveListNode [ + + self directives notNil ifTrue: [ self directives parent: nil ]. + directives := aBioGFF3DirectiveListNode. + self directives notNil ifTrue: [ self directives parent: self ] +] + +{ #category : 'generated' } +BioGFF3GFF3FileNode >> features [ + + ^ features +] + +{ #category : 'generated' } +BioGFF3GFF3FileNode >> features: aBioGFF3FeatureListNode [ + + self features notNil ifTrue: [ self features parent: nil ]. + features := aBioGFF3FeatureListNode. + self features notNil ifTrue: [ self features parent: self ] +] + +{ #category : 'generated' } +BioGFF3GFF3FileNode >> nodeVariables [ + + ^ #( #directives #features ) +] diff --git a/repository/BioParsers/BioGFF3GFF3FileNodeVisitor.class.st b/repository/BioParsers/BioGFF3GFF3FileNodeVisitor.class.st new file mode 100644 index 00000000..2038d900 --- /dev/null +++ b/repository/BioParsers/BioGFF3GFF3FileNodeVisitor.class.st @@ -0,0 +1,9 @@ +Class { + #name : 'BioGFF3GFF3FileNodeVisitor', + #superclass : 'Object', + #traits : 'TBioGFF3GFF3FileNodeVisitor', + #classTraits : 'TBioGFF3GFF3FileNodeVisitor classTrait', + #category : 'BioParsers-GFF3', + #package : 'BioParsers', + #tag : 'GFF3' +} diff --git a/repository/BioParsers/TBioGFF3GFF3FileNodeVisitor.trait.st b/repository/BioParsers/TBioGFF3GFF3FileNodeVisitor.trait.st new file mode 100644 index 00000000..db1041bc --- /dev/null +++ b/repository/BioParsers/TBioGFF3GFF3FileNodeVisitor.trait.st @@ -0,0 +1,44 @@ +Trait { + #name : 'TBioGFF3GFF3FileNodeVisitor', + #traits : 'TSmaCCParseNodeVisitor', + #classTraits : 'TSmaCCParseNodeVisitor classTrait', + #category : 'BioParsers-GFF3', + #package : 'BioParsers', + #tag : 'GFF3' +} + +{ #category : 'generated' } +TBioGFF3GFF3FileNodeVisitor >> visitCommentRecord: aCommentRecord [ + + ^ self visitGFF3File: aCommentRecord +] + +{ #category : 'generated' } +TBioGFF3GFF3FileNodeVisitor >> visitDirective: aDirective [ + + ^ self visitGFF3File: aDirective +] + +{ #category : 'generated' } +TBioGFF3GFF3FileNodeVisitor >> visitDirectiveList: aDirectiveList [ + + ^ self visitGFF3File: aDirectiveList +] + +{ #category : 'generated' } +TBioGFF3GFF3FileNodeVisitor >> visitFeatureLine: aFeatureLine [ + + ^ self visitGFF3File: aFeatureLine +] + +{ #category : 'generated' } +TBioGFF3GFF3FileNodeVisitor >> visitFeatureList: aFeatureList [ + + ^ self visitGFF3File: aFeatureList +] + +{ #category : 'generated' } +TBioGFF3GFF3FileNodeVisitor >> visitGFF3File: aGFF3File [ + + ^ self visitSmaCCParseNode: aGFF3File +]