
We are searching data for your request:
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/
, სად არისგ
განსაზღვრავს, რომ თითოეული ხაზისთვის, ნიმუშის თითოეული ეგზემპლარი უნდა შეიცვალოს. შეგვიძლია ალტერნატიულად გამოვიყენოთ1
ამ ადგილზე მიუთითეთ, რომ მხოლოდ პირველი ინსტანცია უნდა შეიცვალოს,2
მიუთითოს მხოლოდ მეორე და ა.შ. ხშირად,s/
გამოიყენება, რადგან მას აქვს იგივე მნიშვნელობა, რაცs/
.[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
(შეიძლება დაგჭირდეთ გარკვეული ექსპერიმენტები იმის დასადგენად, თუ სად არის შენახული ჩადგმული ფრჩხილების შესატყვისები). მთელი გამოხატვის შესატყვისი შენახულია