ინფორმაცია

1.11: შაბლონები (რეგულარული გამონათქვამები) - ბიოლოგია

1.11: შაბლონები (რეგულარული გამონათქვამები) - ბიოლოგია


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

წინა თავებში ჩვენ გამოვიყენეთ მარტივი fasta_stats პროგრამა FASTA ფაილზე საბაზისო ანალიზების შესასრულებლად ე.წ pz_cDNAs.fasta, ძირითადად, როგორც საბაბი, რომ გაეცნოთ სტანდარტულ ნაკადებსა და ინსტრუმენტებს, როგორიცააgrepდადალაგება. ირკვევა, რომ ინფორმაციაpz_cDNAs.fastaფაილი გვაწვდის ბევრ პოტენციურ კითხვას დასაფიქრებლად.

ამ ფაილის თანმიმდევრობები რეალურად არის სავარაუდო ტრანსკრიპტების ქვეჯგუფი, რომელიც წარმოებულია პეპლისთვის de novo ტრანსკრიპტომის შეკრებისგან. პაპილიო ზელიკონი. ყოველი თანმიმდევრობის სათაურის ხაზი დაშიფვრის სხვადასხვა ინფორმაციას: სათაურის ხაზების მეორე და მესამე სვეტები აჩვენებს წაკითხვის რაოდენობას, რომელიც ხელს უწყობს თითოეულ აწყობილ თანმიმდევრობას და თანმიმდევრობის საშუალო დაფარვას (განსაზღვრულია, როგორც წაკითხვით შეტანილი ბაზების საერთო რაოდენობა, გაყოფილი აწყობილი თანმიმდევრობის სიგრძე). თანმიმდევრობის ID-ებიც კი კოდირებენ გარკვეულ ინფორმაციას: ისინი ყველა იწყება ფსევდო შემთხვევითი იდენტიფიკატორით, მაგრამ ზოგიერთს აქვს სუფიქსი, როგორიცაა_TY.

მიმდევრობების ჯგუფები, რომლებიც იზიარებენ ერთსა და იმავეს_სუფიქსი ადრე იყო იდენტიფიცირებული, როგორც გაზიარებული შესატყვისები თვით-BLAST-ის გამოყენებით. თანმიმდევრობის ID-ებს ასეთი სუფიქსის გარეშე არ ჰქონდათ შესატყვისი. შეიძლება ვიკითხოთ: რამდენი თანმიმდევრობაა ასეთ ჯგუფში? ამაზე მარტივად შეიძლება პასუხის გაცემა პირველი გამოყენებითgrepშესატყვისი ხაზების ამოსაღებად>(სათაურის ხაზები), შემდეგ კი სხვაgrepნიმუშის მქონეთა ამოღება_(ჯგუფში მყოფები) შედეგის გაგზავნამდეტუალეტი.

უფრო რთული კითხვა იქნება, თუ რამდენი განსხვავებული ჯგუფია წარმოდგენილი ფაილში. თუ ჯგუფის ინფორმაცია ინახებოდა ცალკე სვეტში (ვთქვათ, მეორე სვეტში), ამ კითხვაზე პასუხის გაცემა შეიძლება იგივე პროცესით, როგორც ზემოთ, რასაც მოჰყვებადალაგება -k2,2d -uდუბლიკატი ჯგუფის იდენტიფიკატორების მოსაშორებლად. მაგრამ როგორ შეგვიძლია დავაძლიოთ ჯგუფის ინფორმაცია საკუთარ სვეტში? ჩვენ შეგვეძლო ამის გაკეთება ჩანაცვლება შემთხვევები_სივრცეებით. Theსედ(Stream Editor) ინსტრუმენტი დაგვეხმარება. აქ არის მთლიანი მილსადენი, რომელსაც ჩვენ გამოვიყენებთ:

და აქ არის რამდენიმე გამომავალი, სადაც წარმოდგენილია მხოლოდ მიმდევრობები ჯგუფებში და თითოეული ჯგუფი წარმოდგენილია მხოლოდ ერთხელ (შეცვლისნაკლები - სთანტუალეტიამგვარად დათვლის ჯგუფების რაოდენობას):

Theსედინსტრუმენტი არის დახვეწილი პროგრამა შეყვანის შესაცვლელად (ფაილიდან ან სტანდარტული შეყვანიდან) და შედეგების სტანდარტულ გამომავალზე დასაბეჭდად:sed '<პროგრამა>' <ფაილი>ან... | sed '<პროგრამა>'.

მოსწონსავკ,სედმიესალმება 1970-იან წლებს და გთავაზობთ უზარმაზარ მრავალფეროვან ძლიერ მახასიათებლებსა და სინტაქსებს, რომელთა მხოლოდ მცირე ნაწილს განვიხილავთ აქ. კერძოდ, ჩვენ ყურადღებას გავამახვილებთ, ან ჩანაცვლება, ოპერაცია.

The-რვარიანტი, რომელიც ჩვენ გამოვიყენეთ letsსედვიცით, რომ გვინდა, რომ ჩვენი ნიმუში იყოს მითითებული „POSIX გაფართოებული რეგულარული გამოხატვის“ სინტაქსით.[1] ჩანაცვლების პროგრამის ზოგადი ნიმუშიაs///g, სად არისგანსაზღვრავს, რომ თითოეული ხაზისთვის, ნიმუშის თითოეული ეგზემპლარი უნდა შეიცვალოს. შეგვიძლია ალტერნატიულად გამოვიყენოთ1ამ ადგილზე მიუთითეთ, რომ მხოლოდ პირველი ინსტანცია უნდა შეიცვალოს,2მიუთითოს მხოლოდ მეორე და ა.შ. ხშირად,s//<ჩანაცვლება>/გამოიყენება, რადგან მას აქვს იგივე მნიშვნელობა, რაცs//<ჩანაცვლება>/1.[2]

რეგულარული გამონათქვამები

ჭეშმარიტი ძალასედგამომდინარეობს არა ტექსტის ჩანაცვლების უნარიდან, არამედ მისი სარგებლიანობით ტექსტის ჩანაცვლებაში „ნიმუშებზე“ ან, უფრო ფორმალურად, რეგულარული გამონათქვამები. რეგულარული გამოხატულება არის სინტაქსი სტრიქონებში შეხამების ნიმუშის აღწერისთვის. რეგულარული გამონათქვამები აღწერილია ცალკეული სიმბოლოებით, რომლებიც ქმნიან მოსაძებნად შაბლონს და „მეტაოპერატორებს“, რომლებიც ცვლიან ნიმუშის ნაწილებს მოქნილობისთვის. In[სასაუბრომაგალითად, ფრჩხილები ფუნქციონირებს როგორც მეტაოპერატორი, რაც ნიშნავს „ერთ-ერთ ამ სიმბოლოს“ და ეს ნიმუში ემთხვევა ორივესკატადაქუდი, მაგრამ არასასაუბრო. რეგულარული გამონათქვამები ხშირად აგებულია მცირე გამონათქვამების ჯაჭვით, როგორც ეს[ch]at on [mh]at, შესატყვისიკატა ქუდზე,კატა ხალიჩაზე,ქუდი ქუდზე, დაქუდი ხალიჩაზე.

ზემოთ მოყვანილ მაგალითში მთელი ნიმუში იყო მითითებული_, რომელიც არ არის რაიმე სახის მეტაოპერატორი და ა.შ. თითოეული ინსტანცია_შეიცვალა ჩანაცვლებით (სივრცის სიმბოლო). მეტაოპერატორები, რომლებიც მხარდაჭერილია რეგულარული გამონათქვამებით, ბევრი და მრავალფეროვანია, მაგრამ აქ მოცემულია ძირითადი სია ბიოლოგიურად შთაგონებული მაგალითებით:

  • არამეტაოპერატორის სიმბოლოები ან სტრიქონები
    • პერსონაჟების უმეტესობა, რომლებიც მეტამოდაში არ მოქმედებენ, უბრალოდ ემთხვევა. Მაგალითად,_მატჩები_,მატჩები, დაATGემთხვევა საწყისი კოდონს. (Სინამდვილეში,ATGარის სამი ინდივიდუალური ნიმუში, რომელიც მითითებულია ზედიზედ.) ეჭვის შემთხვევაში, ჩვეულებრივ უსაფრთხოა სიმბოლოსგან თავის დაღწევა (მის უკანა ხაზის პრეფიქსით), რათა უზრუნველყოფილი იყოს მისი პირდაპირი ინტერპრეტაციით. Მაგალითად,[_]შეესაბამება ლიტერატურულ სტრიქონს[_], ვიდრე ფრჩხილების გამოყენება მეტაოპერატორებად.
  • .
    • პერიოდი ემთხვევა ნებისმიერ პერსონაჟს. Მაგალითად,CC.ემთხვევა ნებისმიერ P კოდონს (CCA,CCT,CCG,CCC), არამედ სტრიქონების მსგავსიCCXდაCC%.
  • []
    • ემთხვევა მითითებულ ნებისმიერ სიმბოლოს<charset>. Მაგალითად,TA[CT]შეესაბამება Y კოდონს (TACანTAT).
  • [^]
    • განთავსება ა^როგორც პირველი სიმბოლო სიმბოლოების ფრჩხილებში უარყოფს მნიშვნელობას, ისეთი, რომ ნებისმიერი სიმბოლო არა ფრჩხილებში დასახელებული ემთხვევა.TA[^CT]მატჩებიTAT,TAG,TA%და ასე შემდეგ, მაგრამ არაTACანTAT.
  • ^(გარეთ[])
    • განთავსება ა^სიმბოლოების ნაკრების ფრჩხილების გარეთ ემთხვევა შეყვანის სტრიქონის ან ხაზის დასაწყისს. გამოყენებაsed -r 's/^ATG/XXX/g'მაგალითად, ცვლის საწყისი კოდონების ყველა შემთხვევასXXX, მაგრამ მხოლოდ იმ შემთხვევაში, თუ ისინი არსებობენ ხაზის დასაწყისში.
  • $
    • Მსგავსია^, მაგრამ$შეესაბამება სტრიქონის ან ხაზის ბოლოს. Ისე,sed -r 's/ATG$/XXX/g'ცვლის ყველა საწყისი კოდონს, რომელიც არსებობს მათი შესაბამისი ხაზების ბოლოს.

ჯერჯერობით ჩვენი შაბლონები არც თუ ისე მოქნილია, რადგან ამ ეტაპზე დაფარული ნაწილების უმეტესობა ემთხვევა ერთ პერსონაჟს. მომდევნო ხუთი მეტაოპერატორი წყვეტს ამ შეზღუდვას.

  • {x,y}
    • ცვლის წინა შაბლონს ისე, რომ ემთხვეოდეს, თუ ეს ხდება შორისxდაჯერ ზედიზედ, მათ შორის. Მაგალითად,[GC]{4,8}ემთხვევა C და/ან G-ების ნებისმიერ სტრიქონს, რომელიც შედგება ოთხიდან რვა სიმბოლოზე (თუ შესაძლებელია, გადაღება რვა სიმბოლოსთვის). Ისე,sed -r 's/[GC]{4,8}/_X_/g'გამოიწვევს შემდეგ ჩანაცვლებებს:
      • ATCCGTCTრომATCCGTCT(არ ჩანაცვლება)
        ATCCGCGGCTCრომAT_X_TC
        ATCGCGCGGCCCGTTCGGGCCTრომAT_X_CCGTT_X_T
    • გამოყენება{0,1}აქვს ეფექტი იმისა, რომ ის რაც მას შემდეგნაირად ხდება არჩევით ნიმუშში და{x,}აქვს ეფექტი, რომელიც საშუალებას აძლევს შაბლონს შეესაბამებოდესxან მეტჯერ ზედა ლიმიტის გარეშე.
  • *
    • ვარსკვლავი ცვლის წინა შაბლონს ისე, რომ იგი ემთხვევა, თუ ეს ხდება ნულზე ან მეტჯერ; ამდენად იგი ექვივალენტურია{0,}.

      გამოყენება*იმსახურებს დეტალურ მაგალითს. განიხილეთ ნიმუშიATG[ATGC]*TGA, სადATGარის საწყისი კოდონის ნიმუში,[ATGC]*მიუთითებს ნულოვანი ან მეტი დნმ-ის ფუძეზე ზედიზედ დაTGAარის ერთ-ერთი კანონიკური გაჩერების კოდონი. ეს ნიმუში ემთხვევაATGTACCTTGAდა ასევე მატჩებიATGTGA(სადაც შუა ნაწილი შეესაბამებოდა ნულს).

  • +
    • გამეორების ყველაზე გამორჩეული მოდიფიკატორი, პლუს ნიშანი ცვლის წინა შაბლონს ისე, რომ იგი ერთ ან მეტჯერ ემთხვევა; ის უდრის{1,}. ზემოთ მოყვანილი მაგალითისგან განსხვავებით,ATG[ATGC]+TGAმატჩებიATGTACCTTGAდაATGCTGA, მაგრამ არაATGTGA.
  • (<ნიმუში>)
    • ფრჩხილები შეიძლება გამოყენებულ იქნეს გამონათქვამების ან გამონათქვამების სერიის დასაჯგუფებლად ერთ ერთეულში, რათა მათ ერთად ოპერაციები მოხდეს. იმიტომ რომATარის ნიმუშიმოჰყვა, მაგალითად,AT+მატჩებიAT,ATT,ATTT, და ასე შემდეგ. თუ ჩვენ გვინდოდა ამის ნაცვლად მატჩიATიმეორებს, შეიძლება გვსურს მივუთითოთ ისეთი ნიმუში, როგორიცაა(AT)+, რომელიც ემთხვევაAT,ATAT,ATATAT, და ასე შემდეგ. ფრჩხილებში ასევე „შენახულია“ სტრიქონი, რომელიც მათში იყო შესაბამისი შემდგომი გამოყენებისთვის. ეს ცნობილია, როგორც უკან მინიშნება, განხილული ქვემოთ.
  • <pattern x>|<pattern y>
    • ემთხვევა ან ნიმუში<pattern x>ან ნიმუში<pattern y>. მრავალი ასეთი ნიმუში ან ოპერაცია შეიძლება იყოს ჯაჭვური; მაგალითად,TAA|TAG|TGAემთხვევა სამი კანონიკური გაჩერების კოდონიდან რომელიმეს. ეს მაგალითი ცოტა ორაზროვანია, თუმცა: ეს ნიმუში იკითხება "TA (A ან T) A (G ან T) GA" ან "TAA ან TAG ან TGA"? მისი დაკონკრეტებისთვის, ჩვენ გვსურს, რომ დავაკონკრეტოთ, როგორც((TAA)|(TAG)|(TGA)).

ამ ნაწილების გამოყენებით, ჩვენ შეგვიძლია შევკრიბოთ რეგულარული გამონათქვამი, რომელიც ემსახურება როგორც მარტივი (და რეალურად არა პრაქტიკაში გამოსადეგი) ღია წაკითხვის ჩარჩოს მპოვნელს. პროკარიოტული თანმიმდევრობებისთვის (სადაც ინტრონები არ განიხილება), ჩვენ განვსაზღვრავთ მათ, როგორც საწყისი კოდონსATG, რასაც მოჰყვება ერთი ან მეტი კოდონი, რასაც მოჰყვება სამი კანონიკური გაჩერების კოდონიდან ერთიTAA,TAG, ანTGA. დაწყების ნიმუში არისATG, და ჩვენ ვნახეთ, თუ როგორ შეგვიძლია დავაშიფროთ გაჩერება ზემოთ, ერთად((TAA)|(TAG)|(TGA)). რაც შეეხება "ერთ ან მეტ კოდონს?" კარგად, "ერთი ან მეტი" არის განსახიერებული+ოპერატორი, ხოლო კოდონი არის ნებისმიერი სამი A, T, C ან G. ასე რომ, "ერთი ან მეტი კოდონი" დაშიფრულია როგორც([ACTG]{3,3})+. ამრიგად, ჩვენი მარტივი ღია წაკითხვის ჩარჩოს მპოვნელის რეგულარული გამოხატულებაა:

სინამდვილეში, რეგულარული გამონათქვამები ხშირად არ გამოიყენება კოდირების რეგიონების მოსაძებნად (თუმცა ისინი ზოგჯერ გამოიყენება მცირე მოტივების იდენტიფიცირებისთვის). მიზეზი არის ის, რომ რეგულარული გამონათქვამები ნაგულისხმევად არის, გაუმაძღარი: ისინი ემთხვევა პირველ წარმოშობილ შაბლონს, რაც შეუძლიათ, და ისინი ცდილობენ დაამთხვიონ სტრიქონი რაც შეიძლება მეტი. (ფიჭური აპარატი, რომელიც ამუშავებს ღია კითხვის ჩარჩოებს, ამ გზით არ არის ხარბი.) განვიხილოთ შემდეგი თანმიმდევრობა, რომელსაც აქვს სამი ღია წაკითხვის ჩარჩო ზემოთ მოყვანილი მარტივი განმარტებისა და რეგულარული გამოხატვის მიხედვით.

გაითვალისწინეთ, რომ სიმებიანიTAGორივე არის ზოგადად კოდონის ტიპი ([ACTG]{3,3}) და გაჩერება, ამიტომ ტექნიკურად ორივე პირველი ორი ვარიანტი მოქმედებს რეგულარული გამოხატვის მიხედვით. გაუმაძღრობის წესებით პირველს დაემთხვევა, რომლის გადამოწმება მარტივიაექოდასედ.

რეგულარული გამოხატვის სინტაქსი, რომელსაც იყენებსსედმსგავსია სინტაქსის, რომელიც გამოიყენება ისეთ ენებში, როგორიცაა Perl, Python და R. ფაქტობრივად, ყველა მაგალითი, რომელიც ჩვენ ვნახეთ აქამდე, ერთნაირად იმუშავებს ამ ენებში (თუმცა ისინი გამოიყენება საკუთარი სპეციფიკური ფუნქციებით და არა დარეკეთსედ). ასეთი უფრო თანამედროვე რეგულარული გამოხატვის ძრავების მიერ მოწოდებული ერთ-ერთი სასარგებლო ფუნქცია არის ის, რაც მოსწონთ ოპერატორებს*და+შეიძლება იყოს არახარბი (თუმცა მე მირჩევნია უფრო მკაფიო ტერმინი „უხალისო“) თუ მათ კითხვის ნიშნით მივყვები. პითონში, რეგულარული გამოხატულებაATG([ACTG]{3,3})+?((TAA)|(TAG)|(TGA))ემთხვევა მეორე ვარიანტს. (როცა არ მიჰყვება ა*, ან+, ის წინას არჩევითს ხდის; ამგვარადTG(T)?CCექვივალენტურიაTG(T){0,1}CC.) უფრო დახვეწილი ფუნქციები საშუალებას აძლევს მომხმარებელს წვდომა ჰქონდეს შაბლონის ყველა შესატყვისობაზე, თუნდაც ისინი ერთმანეთს ემთხვეოდეს, ისე, რომ ყველაზე დამაკმაყოფილებელი შეიძლება ამოღებულ იქნეს ზოგიერთი მეორადი კრიტერიუმით. სამწუხაროდ,სედარ აქვს არახარბი შესატყვისი და რამდენიმე სხვა გაფართოებული რეგულარული გამოხატვის ფუნქცია.

სიმბოლოების კლასები და რეგულარული გამონათქვამები სხვა ინსტრუმენტებში

ჩვენ ხშირად გვსურს გამოვიყენოთ charset ფრჩხილები, რათა შეესაბამებოდეს სიმბოლოების რომელიმე „კლასს“; მაგალითად,[0123456789]შეესაბამება ნებისმიერ ციფრს. ყველაზე რეგულარული გამოხატვის სინტაქსები (მათ შორის, რომელსაც იყენებსსედ) დაუშვით სტენოგრაფიული ვერსია[0-9](თუ გვინდოდა შეესაბამებოდეს მხოლოდ 0, 9 ან -, შეგვიძლია გამოვიყენოთ[09-]). ანალოგიურად,[a-z]ემთხვევა რომელიმე მცირე ასოს და[A-Z]ნებისმიერი დიდი ასო. ეს შეიძლება გაერთიანდეს კიდეც:[A-Za-z0-9]შეესაბამება ნებისმიერ ციფრს ან ასოს. POSIX გაფართოებულ სინტაქსში გამოიყენებასედ,0-9ასევე შეიძლება დაზუსტდეს როგორც[:ციფრი:]. ყურადღება მიაქციეთ ფრჩხილების ნაკლებობას პირველში - რომ რეალურად ემთხვეოდეს რომელიმე ერთ ციფრს, რეგულარული გამოხატულება არის[[:ციფრი:]](რაც, დიახ, გამაღიზიანებელია). ნებისმიერი არაციფრის შესატყვისად, ჩვენ შეგვიძლია გავაუქმოთ ფრჩხილებში ჩასმული ნაკრები როგორც[^[:ციფრი:]].

ეს POSIX სიმბოლოების კლასები განსაკუთრებით გამოსადეგია, როდესაც გვსურს შევადაროთ სიმბოლოთა ტიპები, რომლებიც ძნელია აკრეფილი ან ჩამოთვლა. Კერძოდ,[[:space:]]ემთხვევა ერთ-ერთ უფსკრული სიმბოლოს (ფართები, ჩანართები, ახალი ხაზები) და[[:punct:]]შეესაბამება ნებისმიერ "პუნქტუაციის" სიმბოლოს, რომელთაგან საკმაოდ ბევრია. The[[:space:]]სიმბოლოების კლასი განსაკუთრებით გამოსადეგია, როცა რიგ-სვეტებში შენახულ მონაცემებს რეფორმატირებთ, მაგრამ არ ხართ დარწმუნებული, არის თუ არა სვეტების გამყოფები სივრცეები, ჩანართები ან რაიმე კომბინაცია.

მრავალ რეგულარული გამოხატვის სინტაქსებში (მათ შორის, რომლებიც გამოიყენება Perl-ის, Python-ის, R-ის და ზოგიერთი ვერსიის მიერსედ), ხელმისაწვდომია კიდევ უფრო მოკლე მალსახმობები პერსონაჟების კლასებისთვის. ამ,უდრის[[:ციფრი:]],ექვივალენტურია[^[:ციფრი:]],ამისთვის[[:space:]],ამისთვის[^[:space:]], სხვებს შორის.

როგორც ირკვევა, რეგულარული გამონათქვამები შეიძლება გამოყენებულ იქნასgrepისევე, როგორცავკ. გამოყენებისასgrep, ჩვენ შეგვიძლია განვსაზღვროთ, რომ ნიმუში უნდა განიხილებოდეს როგორც გაფართოებული რეგულარული გამოხატულება დროშის დამატებით-ე(განსხვავებით-რგამოიყენებასედ.) ამრიგადgrep -E '[[:digit:]]+'ამოიღებს ხაზებს, რომლებიც შეიცავს მთელ რიცხვს.

Inავკ, ჩვენ შეგვიძლია გამოვიყენოთ~შედარებითი ნაცვლად==შემდარებელი if-ის დებულებაში, როგორცawk '{if($1 ~ /PZ718[[:digit:]]+/) {დაბეჭდვა $3}}', რომელიც ბეჭდავს თითოეული ხაზის მესამე სვეტს, სადაც პირველი სვეტი ემთხვევა ნიმუშსPZ718[[:ციფრი:]]+.

ზემოთ მოყვანილი განმარტების მიხედვით სათაურის ხაზებისთვისpz_cDNAs.fastaფაილი, ID-ები უნდა იყოს დამახასიათებელი, როგორც ფსევდო შემთხვევითი იდენტიფიკატორი, რასაც მოჰყვება, სურვილისამებრ, ქვედა ხაზი და დიდი ასოების ნაკრები, რომელიც აზუსტებს ჯგუფს. გამოყენებაgrep '>'მხოლოდ სათაურის ხაზების ამოსაღებად, შეგვიძლია ვიზუალურად შევამოწმოთ:

თუ ამ შედეგებს გავაგზავნითტუალეტი, ჩვენ ვხედავთ, რომ ეს ფაილი შეიცავს 471 სათაურის ხაზს. როგორ შეგვიძლია გადავამოწმოთ, რომ თითოეული მათგანი მიჰყვება ამ ნიმუშს? რეგულარული გამოხატვის გამოყენებითgrepნიმუშისთვის და დათვლის შედარება 471-თან. რადგან ID-ები უნდა დაიწყოს დაუყოვნებლივ მას შემდეგ>სიმბოლო FASTA ფაილში, რომელიც იქნება ჩვენი ნიმუშის ნაწილი. ფსევდო შემთხვევითი განყოფილებისთვის, რომელიც შეიძლება დაიწყოს ან არ დაიწყოსPZმაგრამ მაინც უნდა არა მოიცავს ხაზგასმას ან სივრცეს, ჩვენ შეგვიძლია გამოვიყენოთ ნიმუში[^_[:space:]]+ერთი ან მეტი არახაზგასმული, არათეთრი სივრცის სიმბოლოს დასაზუსტებლად. არჩევითი ჯგუფის იდენტიფიკატორისთვის, ნიმუში იქნება(_[A-Z]+){0,1}(რადგან{0,1}ხდის წინა არჩევითს). ამათთან ერთადgrep -Eდა მატჩების დათვლამ უნდა გამოიღოს 471.

ყველა სათაური ემთხვეოდა იმ ნიმუშს, რომელსაც ველოდით. რა იქნებოდა, რომ არ ჰქონოდათ? ჩვენ შეგვეძლო გადავამოწმოთ რომელი მათგანი არ იყო აgrep -v -Eხაზების დასაბეჭდად, რომლებიც არ ემთხვეოდა ნიმუშს.

ახლა, ჰიპოთეტურად, დავუშვათ, რომ ერთმა (ჯიუტმა და უფროსმა) კოლეგამ დაადგინა მნიშვნელოვანი გენის ID-ების სია და გაგზავნა ისინი მარტივ ტექსტურ ფაილში.

სამწუხაროდ, როგორც ჩანს, ჩვენმა კოლეგამ გადაწყვიტა გამოიყენოს ოდნავ შეცვლილი დასახელების სქემა- გენიყოველი ფსევდორანდომის იდენტიფიკატორის ბოლომდე, სანამ_, თუ ის იმყოფება. იმისათვის, რომ გავაგრძელოთ მშვიდობიანი თანამშრომლობა, შეიძლება დაგვევალოს ცვლილებები ჩვენი თანმიმდევრობით ფაილი ისე, რომ იგი შეესაბამებოდეს ამ სქემას. ჩვენ შეგვიძლია ამის გაკეთებასედ, მაგრამ ეს იქნება გამოწვევა, უპირველეს ყოვლისა, იმიტომ, რომ ჩვენ გვინდა შევასრულოთ ჩასმა და არა ჩანაცვლება. რეალურად, ჩვენ შევასრულებთ ჩანაცვლებას, მაგრამ ჩვენ შევცვლით მატჩებს საკუთარი შინაარსით!

რაც შეეხება უკანა მითითებებს, რეგულარულ გამოხატულებაში, შესატყვისები ან ქვეშესატყვისები, რომლებიც დაჯგუფებულია და ჩასმულია ფრჩხილებში, მათი შესატყვისი სტრიქონები შენახულია ცვლადებში.1,2, და ასე შემდეგ. ფრჩხილების პირველი წყვილის შინაარსი შენახულია1, მეორე ში2(შეიძლება დაგჭირდეთ გარკვეული ექსპერიმენტები იმის დასადგენად, თუ სად არის შენახული ჩადგმული ფრჩხილების შესატყვისები). მთელი გამოხატვის შესატყვისი შენახულია.

მაგალითის დასასრულებლად, ჩვენ შევცვლით შაბლონს, რომელიც გამოიყენებაgrepნიმუშის ორივე შესაბამისი ნაწილის გადაღება, მათი ჩანაცვლება1-გენი2.

შინაარსიpz_cDNAs.fasta, მას შემდეგ რაც გაივლის მასსედზემოთ, არის შემდეგი:

უკან მითითებები შეიძლება გამოყენებულ იქნას თავად შაბლონშიც. მაგალითად, აsed -r 's/([A-Za-z]+) 1/1/g'ჩაანაცვლებს „გაორმაგებულ“ სიტყვებს([A-Za-z]+) 1სიტყვის ერთი ეგზემპლარით1, როგორცსედი ძალიან მიყვარს, რის შედეგადაცსედი ძალიან მომწონს. მაგრამ ფრთხილად იყავით, თუ ფიქრობთ ამ ტიპის ჩანაცვლების გამოყენებას გრამატიკის შემმოწმებლად, რადგან ეს სინტაქსი არ ეძებს ხაზების საზღვრებს (თუმცა უფრო რთულისედპროგრამებს შეუძლიათ). ეს მაგალითი არ შეცვლის ხაზების შემდეგ წყვილს (სადაც სიტყვაTheორჯერ გამოჩნდება):

სწრაფი sed regex ცვლის ზარმაცი awk გამომავალს.

რამდენიმე საბოლოო შენიშვნა ამის შესახებსედდა ზოგადად რეგულარული გამონათქვამები დაგეხმარებათ ამ თავის დასრულებაში.

  1. რეგულარული გამონათქვამები, მიუხედავად იმისა, რომ ძლიერია, შეცდომებს იწვევს. იმუშავეთ თანდათანობით და რეგულარულად შეამოწმეთ შედეგები.
  2. ხშირად უფრო ადვილია რეგულარული გამონათქვამების მრავალჯერადი გამოძახების გამოყენება (მაგ., მრავალჯერადისედბრძანებები), ვიდრე ერთი რთული გამოხატვის შექმნის მცდელობა.
  3. გამოიყენეთ რეგულარული გამონათქვამები, სადაც საჭიროა, მაგრამ იცოდეთ, რომ ისინი ყოველთვის არ შეესაბამება. ბევრი პრობლემა, რომელიც შეიძლება ბუნებრივად მოერგოს რეგულარულ გამონათქვამებს, ასევე ბუნებრივად შეესაბამება სხვა სტრატეგიებს, რომლებიც მხედველობაში უნდა იქნას მიღებული იმ სირთულის გათვალისწინებით, რაც რეგულარულ გამონათქვამებს შეუძლიათ დაამატოთ მოცემული ბრძანება ან კოდი.

ზოგიერთი ადამიანი, როცა პრობლემას აწყდება, ფიქრობს: „ვიცი, გამოვიყენებ რეგულარულ გამონათქვამებს“. ახლა მათ ორი პრობლემა აქვთ.

~ ჯეიმი ზავინსკი

Სავარჯიშოები

  1. დე ნოვო ასამბლეის სტატისტიკის ფაილში contig_stats.txt, contig ID-ები დასახელებულია როგორცNODE_1,NODE_2, და ასე შემდეგ. ჩვენ გვირჩევნია მათი დასახელებაcontig1,contig2, და მსგავსი. აწარმოე აcontig_stats_renamed.txtშესრულებული ამ ცვლილებებით.
  2. რამდენი თანმიმდევრობაა ფაილში pz_cDNAs.fasta მხოლოდ ერთი წაკითხულისაგან შედგება? სავარაუდოდ მოგიწევთ ორივეს გამოყენებაავკდასედაქ და დარწმუნდით, რომ ყურადღებით შეამოწმეთ თქვენი მილსადენის შედეგებინაკლები.
  3. განსაკუთრებით შეურაცხმყოფელი კოლეგა ამტკიცებს, რომ საქმეში pz_cDNAs.fasta, თანმიმდევრობები, რომლებიც არ არიან რომელიმე ჯგუფის ნაწილი (ანუ ისეთები, რომლებსაც არ აქვთ_სუფიქსი) უნდა ჰქონდეს სუფიქსი_არაჯგუფი. დაამშვიდეთ ეს კოლეგა ამ სპეციფიკაციის ფაილის წარმოებით, სახელწოდებითpz_cDNAs_fixed.fasta.
  4. სათაურების ხაზები საფუარის ცილების კომპლექტში orf_trans.fasta ასე გამოიყურება, როდესაც ნახულობენნაკლები - სმას შემდეგ, რაც grepping for>: აღსანიშნავია, რომ სათაურის ხაზები შეიცავს ინფორმაციას ცალკეული ეგზონების ადგილმდებარეობის შესახებ; YAL001C თანმიმდევრობას აქვს ორი ეგზონი I ქრომოსომაზე 151006-დან 147594-მდე და 151166-დან 151097-მდე (რიცხვები გადადის დიდიდან პატარაზე, რადგან მდებარეობები მითითებულია წინა ჯაჭვზე, მაგრამ გენი არის კომპლემენტის საპირისპირო ჯაჭვზე). ამის საპირისპიროდ, YAL002W თანმიმდევრობას აქვს მხოლოდ ერთი ეგზონი წინა ჯაჭვზე.

    რამდენი მიმდევრობა შედგება მხოლოდ ერთი ეგზონისგან? შემდეგი, შექმენით თანმიმდევრობის ID-ების სია მოწოდებულ ფაილშიmulti_exon_ids.txtშეიცავს ყველა იმ თანმიმდევრობის ID-ებს ერთზე მეტი ეგზონით, როგორც ერთი სვეტი.

  5. როგორც მე-4 კითხვის გაგრძელება, რომელ მიმდევრობას აქვს ყველაზე მეტი ეგზონი? რომელი ერთეგზონიანი თანმიმდევრობაა ყველაზე გრძელი ეგზონების სიაში მითითებული პირველი პოზიციიდან ბოლო პოზიციამდე მანძილის მიხედვით?


Უყურე ვიდეოს: ცნობილი ადამიანების გამონათქვამები ბიბლიის შესახებ (ივლისი 2022).


კომენტარები:

  1. Nehemiah

    დიახ, ეს ყველაფერი ფანტაზიაა

  2. Voodoogrel

    Pts liked it, laughed)))

  3. Zugis

    Ვადასტურებ. ყველაფერმა ზემოთ მოიხსენია სიმართლე. ჩვენ შეგვიძლია კომუნიკაცია ამ თემასთან დაკავშირებით.

  4. Yozshuktilar

    კი ნამდვილად. და მე გადავეყარე ამას.

  5. Royan

    მე მგონი ცდება.

  6. Meturato

    One girl was happy. Happiness is also not in debt. How much shit does not fit in my head! The higher the intelligence, the lower the kisses. Eat a live toad in the morning, and nothing worse will happen to you that day. No one has died of knowledge yet, but you shouldn't risk it!

  7. Akijin

    დიდი მადლობა ინფორმაციისთვის.

  8. Brutus

    ზუსტი პასუხი



დაწერეთ შეტყობინება