
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
يزودنا الملف بالعديد من الأسئلة المحتملة للتفكير فيها.
التسلسلات الموجودة في هذا الملف هي في الواقع مجموعة فرعية من النصوص المفترضة ، تم إنتاجها من مجموعة نسخ دي نوفو للفراشة بابيليو زيليكون. يشفر كل سطر رأس تسلسل مجموعة متنوعة من المعلومات: يكشف العمودان الثاني والثالث من خطوط الرأس عن عدد القراءات التي تساهم في كل تسلسل مُجمَّع ومتوسط تغطية التسلسل (يُعرَّف بأنه العدد الإجمالي للقواعد التي ساهمت بها القراءات ، مقسومًا على طول التسلسل المجمع). حتى معرّفات التسلسل تشفر بعض المعلومات: تبدأ جميعها بمعرّف شبه عشوائي ، لكن بعضها له لاحقة مثل_TY
.
مجموعات التسلسلات التي تشترك في نفس الشيء_
تم تحديد اللاحقة سابقًا على أنها تحتوي على تطابقات مشتركة باستخدام انفجار ذاتي. لا تحتوي معرفات التسلسل التي لا تحتوي على هذه اللاحقة على مطابقات. قد نسأل: كم عدد التسلسلات في مثل هذه المجموعة؟ يمكن الإجابة على هذا بسهولة عن طريق الاستخدام الأولgrep
لاستخراج الأسطر المطابقة>
(خطوط الرأس) ، ثم استخدام آخرgrep
لاستخراج تلك ذات النمط_
(هؤلاء في مجموعة) قبل إرسال النتيجة إلىمرحاض
.
قد يكون السؤال الأكثر تعقيدًا هو طرح عدد المجموعات المختلفة الممثلة في الملف. إذا تم تخزين معلومات المجموعة في عمود منفصل (على سبيل المثال ، العمود الثاني) ، فيمكن الإجابة على هذا السؤال بنفس العملية المذكورة أعلاه ، متبوعًا بعلامةفرز -k2،2d -u
لإزالة معرّفات المجموعة المكررة. ولكن كيف يمكننا فرض معلومات المجموعة في عمودها الخاص؟ يمكننا القيام بذلك عن طريق أستعاض حالات_
بمسافات. السيد
يمكن أن تساعدنا أداة (Stream EDitor). إليك خط الأنابيب العام الذي سنستخدمه:
وهنا بعض المخرجات ، حيث يتم تمثيل التسلسلات في المجموعات فقط ويتم تمثيل كل مجموعة مرة واحدة فقط (استبدالأقل -S
معمرحاض
سيحسب عدد المجموعات):
السيد
الأداة عبارة عن برنامج متطور لتعديل الإدخال (إما من ملف أو إدخال قياسي) وطباعة النتائج إلى الإخراج القياسي:sed '<برنامج>' <ملف>
أو... | سيد "<برنامج>"
.
يحبawk
,سيد
يعود تاريخه إلى سبعينيات القرن الماضي ويقدم مجموعة كبيرة ومتنوعة من الميزات القوية وبناء الجملة ، وسنغطي جزءًا صغيرًا منها هنا. على وجه الخصوص ، سنركز علىس
أو عملية الاستبدال.
ال-r
الخيار الذي استخدمناه يتيحسيد
نعلم أننا نريد تحديد النمط الخاص بنا من خلال بناء جملة "التعبير العادي الممتد POSIX".[1] النمط العام لبرنامج الاستبدال هوs / <نمط> / <الاستبدال> / ز
، أين الز
يحدد أنه ، لكل سطر ، يجب استبدال كل مثيل من النمط. يمكننا بدلا من ذلك استخدام1
في هذه البقعة للإشارة إلى أنه يجب استبدال المثال الأول فقط ،2
للإشارة إلى الثانية فقط ، وهكذا. غالبا،s / <نمط> / <الاستبدال> /
يستخدم ، لأنه له نفس المعنى مثلs / <نمط> / <الاستبدال> / 1
.[2]
التعبيرات العادية
القوة الحقيقية لـسيد
لا يأتي من قدرته على استبدال النص ، ولكن من فائدته في استبدال النص بناءً على "الأنماط" أو ، بشكل أكثر رسمية ، التعبيرات العادية. التعبير العادي هو بناء جملة لوصف تطابق النمط في السلاسل. يتم وصف التعبيرات العادية بواسطة الأحرف الفردية التي تشكل النمط المراد البحث عنه ، و "العوامل الوصفية" التي تعدل أجزاء من النمط من أجل المرونة. في[دردشة
، على سبيل المثال ، تعمل الأقواس كعامل meta-عامل يعني "أحد هذه الأحرف" ، وهذا النمط يتطابق مع كليهماقط
وقبعة
، لكن لادردشة
. غالبًا ما تُبنى التعبيرات العادية عن طريق تسلسل التعبيرات الأصغر ، كما هو الحال في[ch] في الساعة [mh] في
، مطابقةقطة على القبعة
,قطة على الحصيرة
,قبعة على القبعة
، وقبعة على السجادة
.
في المثال أعلاه ، تم تحديد النمط بأكمله بواسطة_
، وهي ليست عامل تشغيل من أي نوع ، وبالتالي فإن كل مثيل من_
تم استبداله بالبديل (حرف مسافة). تعد عوامل التعريف التي تدعمها التعبيرات العادية كثيرة ومتنوعة ، ولكن إليك قائمة أساسية جنبًا إلى جنب مع بعض الأمثلة المستوحاة من الناحية البيولوجية:
- أحرف أو سلاسل غير وصفية
- يتم ببساطة مطابقة معظم الشخصيات التي لا تعمل بطريقة وصفية. على سبيل المثال،
_
اعواد الكبريت_
,أ
اعواد الكبريتأ
، وATG
يطابق كودون البداية. (حقيقة،ATG
هي ثلاثة أنماط فردية محددة في صف واحد.) عندما تكون في شك ، فمن الآمن عادةً الهروب من حرف (عن طريق إضافة شرطة مائلة للخلف) لضمان تفسيرها حرفياً. على سبيل المثال،[_]
يطابق السلسلة الحرفية[_]
، بدلاً من استخدام الأقواس كمشغلات وصفية.
- يتم ببساطة مطابقة معظم الشخصيات التي لا تعمل بطريقة وصفية. على سبيل المثال،
.
- النقطة تطابق أي حرف واحد. على سبيل المثال،
نسخة.
يطابق أي P codon (CCA
,CCT
,CCG
,CCC
) ، ولكن أيضًا سلاسل مثلCCX
ونسخة٪
.
- النقطة تطابق أي حرف واحد. على سبيل المثال،
[<مجموعة>]
- يتطابق مع أي حرف واحد محدد في
<charset>
. على سبيل المثال،براعة]
يطابق رمز Y (تاك
أوتات
).
- يتطابق مع أي حرف واحد محدد في
[^
] - وضع أ
^
حيث أن الحرف الأول داخل أقواس أحرف ينفي المعنى ، مثل أن أي حرف واحد ليس المسمى بين قوسين متطابقتين.TA [^ CT]
اعواد الكبريتتات
,بطاقة شعار
,تا٪
، وما إلى ذلك ، ولكن ليستاك
أوتات
.
- وضع أ
^
(خارج[]
)- وضع أ
^
خارج أقواس الأحرف تتطابق مع بداية سلسلة الإدخال أو السطر. استخدامsed -r 's / ^ ATG / XXX / g'
، على سبيل المثال ، يستبدل كل مثيلات رموز البداية بـXXX
، ولكن فقط إذا كانت موجودة في بداية السطر.
- وضع أ
$
- مشابه ل
^
، لكن$
يطابق نهاية السلسلة أو السطر. وبالتالي،sed -r 's / ATG $ / XXX / g'
يستبدل جميع أكواد البداية الموجودة في نهاية سطور كل منها.
- مشابه ل
حتى الآن ، لم تكن أنماطنا بهذه المرونة حقًا ، لأن معظم القطع التي تمت تغطيتها حتى هذه النقطة تتطابق مع حرف واحد. العاملات الفوقية الخمس التالية تحل هذا القيد.
{س ، ص}
- يعدل النمط السابق بحيث يتطابق إذا حدث بينهما
x
وذ
مرات متتالية ، شاملة. على سبيل المثال،[GC] {4،8}
يتطابق مع أي سلسلة من أحرف C و / أو G تتكون من أربعة إلى ثمانية أحرف (تصوير لثمانية أحرف ، إن أمكن). وبالتالي،sed -r 's / [GC] {4،8} / _ X_ / g'
ستؤدي إلى الاستبدالات التالية:أتككجتكت
إلىأتككجتكت
(لا بديل)أتككجكجكتك
إلىAT_X_TC
أتكجكجكجككجتكججككت
إلىAT_X_CCGTT_X_T
- استخدام
{0,1}
له تأثير جعل ما يليه اختياريًا في النموذج ، و{س ،}
له تأثير السماح للنمط بالمطابقةx
أو أكثر من دون حد أقصى.
- يعدل النمط السابق بحيث يتطابق إذا حدث بينهما
*
- تقوم العلامة النجمية بتعديل النمط السابق بحيث يتطابق إذا حدث صفر أو مرات أكثر ؛ وبالتالي فهو يعادل
{0,}
.استخدام
*
يستحق مثالاً مفصلاً. ضع في اعتبارك النمطATG [ATGC] * TGA
، أينATG
هو نمط رمز البدء ،[ATGC] *
يشير إلى صفر أو أكثر من قواعد الحمض النووي على التوالي ، وTGA
هي واحدة من أكواد الإيقاف الأساسية. يتطابق هذا النمطATGTACCTTGA
، وكذلك المطابقاتATGTGA
(حيث تم مطابقة الجزء الأوسط صفر مرة).
- تقوم العلامة النجمية بتعديل النمط السابق بحيث يتطابق إذا حدث صفر أو مرات أكثر ؛ وبالتالي فهو يعادل
+
- تعدل علامة الجمع النمط السابق بحيث تتم مطابقتها مرة واحدة أو أكثر ؛ إنه يعادل
{1,}
. على عكس المثال أعلاه ،ATG [ATGC] + TGA
اعواد الكبريتATGTACCTTGA
وATGCTGA
، لكن لاATGTGA
.
- تعدل علامة الجمع النمط السابق بحيث تتم مطابقتها مرة واحدة أو أكثر ؛ إنه يعادل
(<نمط>)
- يمكن استخدام الأقواس لتجميع تعبير أو سلسلة من التعبيرات في وحدة واحدة بحيث يمكن تشغيلها معًا. لأن
في
هو النمطأ
تليهاتي
، على سبيل المثال،في +
اعواد الكبريتفي
,ATT
,ATTT
، وما إلى ذلك وهلم جرا. إذا أردنا التطابق بدلاً من ذلكفي
يتكرر ، قد نرغب في تحديد نمط مثل(AT) +
الذي يطابقفي
,أتات
,أتات
، وما إلى ذلك وهلم جرا. تقوم الأقواس أيضًا "بحفظ" السلسلة التي تمت مطابقتها بداخلها لاستخدامها لاحقًا. يُعرف هذا بالإحالة الخلفية ، تمت مناقشته أدناه.
- يمكن استخدام الأقواس لتجميع تعبير أو سلسلة من التعبيرات في وحدة واحدة بحيث يمكن تشغيلها معًا. لأن
<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
,بطاقة شعار
، أوTGA
. نمط البداية هوATG
، ورأينا كيف يمكننا ترميز نقطة توقف أعلاه ، مع((TAA) | (TAG) | (TGA))
. ماذا عن "كودون واحد أو أكثر؟" حسنًا ، تم تجسيد "واحد أو أكثر" في+
عامل التشغيل ، والشفرة هي أي ثلاثة أ ، أو ت ، أو ج ، أو ج. لذلك ، يتم ترميز "واحد أو أكثر من الكودونات" كـ([ACTG] {3،3}) +
. وبالتالي ، فإن التعبير المعتاد لبرنامج البحث عن إطار القراءة المفتوح البسيط هو:
في الواقع ، لا تُستخدم التعبيرات النمطية غالبًا في البحث عن مناطق الترميز (على الرغم من أنها تُستخدم أحيانًا لتحديد الأشكال الأصغر). جزء من السبب هو أن التعبيرات النمطية ، بشكل افتراضي ، جشع: يتطابقون مع النمط الذي يحدث لأول مرة ، ويسعون لمطابقة أكبر قدر ممكن من السلسلة. (الآلية الخلوية التي تعالج إطارات القراءة المفتوحة ليست جشعة بهذه الطريقة.) ضع في اعتبارك التسلسل التالي ، الذي يحتوي على ثلاثة إطارات قراءة مفتوحة وفقًا لتعريفنا البسيط والتعبير العادي أعلاه.
لاحظ أن السلسلةبطاقة شعار
كلاهما نوع من الكودون بشكل عام ([ACTG] {3،3}
) وإيقاف ، لذلك من الناحية الفنية كلا الخيارين الأولين صالحان وفقًا للتعبير العادي. وفقًا لقواعد الجشع ، سيتم مطابقة الأول ، والذي يمكننا التحقق منه ببساطةصدى صوت
وسيد
.
صيغة التعبير النمطي المستخدمة بواسطةسيد
يشبه بناء الجملة المستخدم في لغات مثل Perl و Python و R. في الواقع ، كل الأمثلة التي رأيناها حتى الآن ستعمل بنفس الطريقة في تلك اللغات (على الرغم من أنها تُطبق من خلال وظائفها المحددة بدلاً من دعوة لسيد
). إحدى الميزات المفيدة التي توفرها محركات التعبير العادي الأكثر حداثة مثل هذه هي أن المشغلين يحبونها*
و+
يمكن جعلهم غير شرعيين (على الرغم من أنني أفضل المصطلح الأكثر وضوحًا "متردد") من خلال اتباعهم بعلامة استفهام. في بايثون ، التعبير النمطيATG ([ACTG] {3،3}) +؟ ((TAA) | (TAG) | (TGA))
سيطابق الخيار الثاني. (عندما لا تتبع ملف*
، أو+
، يجعل الخيار السابق اختياريًا ؛ هكذاTG (T)؟ CC
يعادلTG (T) {0،1} CC
.) تسمح الميزات الأكثر تعقيدًا للمستخدم بالوصول إلى جميع تطابقات النمط ، حتى لو كانت متداخلة ، بحيث يمكن سحب أكثرها إرضاءً من خلال بعض المعايير الثانوية. لسوء الحظ،سيد
لا يدعم المطابقة غير الشرعية والعديد من ميزات التعبير العادي المتقدمة الأخرى.
فئات الأحرف والتعبيرات العادية في أدوات أخرى
غالبًا ما نرغب في استخدام أقواس الأحرف لمطابقة أي فئة من "فئة" الأحرف ؛ على سبيل المثال،[0123456789]
يطابق أي رقم واحد. معظم تراكيب التعبيرات العادية (بما في ذلك تلك المستخدمة بواسطةسيد
) السماح بنسخة مختصرة[0-9]
(إذا أردنا مطابقة 0 أو 9 أو - فقط ، فيمكننا استخدام[09-]
). بصورة مماثلة،[a-z]
يتطابق مع أي حرف صغير منفرد ، و[أ-ي]
أي حرف كبير. يمكن حتى الجمع بين هذه:[A-Za-z0-9]
يتطابق مع أي رقم أو حرف. في صيغة POSIX الموسعة المستخدمة من قبلسيد
,0-9
يمكن أيضًا تحديدها كـ[: رقم:]
. لاحظ عدم وجود أقواس في السابق — لمطابقة أي رقم فردي فعليًا ، يكون التعبير النمطي كذلك[[: رقم:]]
(وهو أمر مزعج نعم). لمطابقة أي غير رقم ، يمكننا رفض المجموعة الموضوعة بين قوسين على النحو التالي[^ [: رقم:]]
.
تعد فئات أحرف POSIX مفيدة بشكل خاص عندما نريد مطابقة أنواع الأحرف التي يصعب كتابتها أو تعدادها. خاصه،[[:فضاء:]]
يطابق أحد أي حرف مسافة بيضاء (مسافات ، وعلامات جدولة ، وأسطر جديدة) ، و[[: نقطة:]]
يتطابق مع أي حرف "علامات ترقيم" ، يوجد عدد قليل منها. ال[[:فضاء:]]
تعد فئة الأحرف مفيدة بشكل خاص عندما تقوم بإعادة تنسيق البيانات المخزنة في صفوف وأعمدة ولكنك غير متأكد مما إذا كانت فواصل الأعمدة عبارة عن مسافات أو علامات تبويب أو تركيبة ما.
في العديد من صيغ التعبيرات النمطية (بما في ذلك تلك المستخدمة بواسطة Perl و Python و R وبعض إصداراتسيد
) ، حتى الاختصارات الأقصر لفئات الأحرف متوفرة. في هذه،د
يعادل[[: رقم:]]
,د
يعادل[^ [: رقم:]]
,س
ل[[:فضاء:]]
,س
ل[^ [: مسافة:]]
، من بين أمور أخرى.
كما اتضح ، يمكن استخدام التعبيرات النمطية بواسطةgrep
إلى جانبawk
. عند استخدامgrep
، يمكننا تحديد أن النمط يجب أن يُعامل كتعبير عادي ممتد عن طريق إضافة العلم-E
(على عكس-r
يستعمل لسيد
.) هكذاgrep -E '[[: digit:]] +'
يستخرج الأسطر التي تحتوي على عدد صحيح.
فيawk
، يمكننا استخدام~
المقارنة بدلاً من==
المقارنة في عبارة if ، كما فيawk "{if ($ 1 ~ / PZ718 [[: digit:]] + /) {print $ 3}}"
، الذي يطبع العمود الثالث من كل سطر حيث يتطابق العمود الأول مع النمطPZ718 [[: digit:]] +
.
وفقًا للتعريف أعلاه لخطوط الرأس في ملفpz_cDNAs.fasta
ملف ، يجب أن تكون المعرفات قابلة للتمييز كمعرف شبه عشوائي متبوعًا ، اختياريًا ، بشرطة سفلية ومجموعة من الأحرف الكبيرة تحدد المجموعة. استخدامgrep '>'
لاستخراج خطوط الرأس فقط ، يمكننا فحص ذلك بصريًا:
إذا أرسلنا هذه النتائج من خلالمرحاض
، نرى أن هذا الملف يحتوي على 471 سطر رأسية. كيف يمكننا التحقق من أن كل واحد منهم يتبع هذا النمط؟ باستخدام تعبير نمطي معgrep
للنمط ، ومقارنة العد بـ 471. لأن المعرفات يجب أن تبدأ فورًا بعد>
رمز في ملف FASTA ، سيكون جزءًا من نمطنا. لقسم العشوائية الزائفة ، والتي قد تبدأ أو لا تبدأ بـPZ
ولكن يجب على الأقل ليس تضمين شرطة سفلية أو مسافة ، يمكننا استخدام النمط[^ _ [: مسافة:]] +
لتحديد حرف أو أكثر من الأحرف غير النقطية وغير المسافات. بالنسبة لمعرف المجموعة الاختياري ، سيكون النمط(_ [A-Z] +) {0،1}
(لأن{0,1}
يجعل السابقة اختيارية). وضع هذه معgrep -E
ويجب أن ينتج عن عد المطابقات 471.
تطابقت جميع الرؤوس مع النمط الذي توقعناه. ماذا لو لم يفعلوا؟ يمكننا فحص أي منها لم يتم باستخدام ملفgrep -v -E
لطباعة الأسطر التي لا تتطابق مع النمط.
الآن ، من الناحية الافتراضية ، افترض أن زميلًا (عنيدًا ، وأكبر) قد حدد قائمة بمعرفات الجينات المهمة ، وأرسلها في ملف نصي بسيط.
لسوء الحظ ، يبدو أن زميلنا قرر استخدام مخطط تسمية تم تغييره قليلاً ، إلحاقًا-جين
إلى نهاية كل معرف شبه عشوائي ، قبل_
، إذا كان موجودًا. من أجل الاستمرار في التعاون السلمي ، قد يتعين علينا تعديل لنا ملف تسلسلي بحيث يتوافق مع هذا المخطط. يمكننا القيام بذلك معسيد
، لكنه سيكون تحديًا ، لأننا في المقام الأول نريد إجراء الإدراج بدلاً من الاستبدال. في الواقع ، سنجري تبديلًا ، لكننا سنستبدل المطابقات بمحتويات من أنفسهم!
فيما يتعلق بالمراجع الخلفية ، في التعبير العادي ، فإن المطابقات أو التقديمات المجمعة والمضمنة بين قوسين لها سلاسلها المطابقة المحفوظة في متغيرات1
,2
، وما إلى ذلك وهلم جرا. يتم حفظ محتويات الزوج الأول من الأقواس بتنسيق1
، والثاني في2
(قد تكون هناك حاجة إلى بعض التجارب لتحديد مكان حفظ تطابقات الأقواس المتداخلة). يتم حفظ التعبير المطابق بالكامل بتنسيق