ข้อมูล

จะรับรหัสเฉพาะทางอนุกรมวิธานสำหรับอาณาจักร ไฟลัม คลาส ลำดับ ครอบครัว สกุลและสปีชีส์จาก taxid ได้อย่างไร

จะรับรหัสเฉพาะทางอนุกรมวิธานสำหรับอาณาจักร ไฟลัม คลาส ลำดับ ครอบครัว สกุลและสปีชีส์จาก taxid ได้อย่างไร



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.

ฉันมีรายชื่อรถแท็กซี่ที่มีลักษณะดังนี้:

1204725 2162 1300163 420247

ฉันกำลังหาไฟล์ที่มี taxonomic id ตามลำดับจาก taxids ด้านบน:

kingdom_id phylum_id class_id order_id family_id genus_id species_id

ฉันกำลังใช้แพ็คเกจ "ete3" ฉันใช้เครื่องมือ ete-ncbiquery ที่บอกคุณถึงเชื้อสายจากรหัสด้านบน (ฉันเรียกใช้จากแล็ปท็อป linux ด้วยคำสั่งด้านล่าง)

ete3 ncbiquery -- ค้นหา 1204725 2162 13000163 420247 --info

ผลลัพธ์มีลักษณะดังนี้:

#Taxid Sci.Name ยศ Named Lineage Taxid Lineage 2162 Methanobacterium formicicum species root,cellular crimes,Archaea,Euryarchaeota,Methanobacteria,Methanobacteriales,Methanobacteriaceae,Methanobacterium,Methanobacterium formicicum 1,131567,2157,28890,182159,2160,2158 1204725 Methanobacterium formicicum DSM 3637 ไม่มีอันดับราก สิ่งมีชีวิตในเซลล์ Archaea, Euryarchaeota, Methanobacteria, Methanobacteriales, Methanobacteriaceae, Methanobacterium, Methanobacterium formicicum, Methanobacterium formicicum DSM 3637 1,131567,225157,282190,219018, 420247 Methanobrevibacter smithii ATCC 35061 ไม่มีอันดับราก สิ่งมีชีวิตในเซลล์ Archaea, Euryarchaeota, Methanobacteria, Methanobacteriales, Methanobacteriaceae, Methanobrevibacter, Methanobrevibacter smithii, Methanobrevibacter smithii ATCC 350611,131567,23925,2885890,

ฉันไม่รู้ว่ารายการใด (IDS) ตรงกับสิ่งที่ฉันกำลังมองหา (ถ้ามี)


ฉันจะคัดลอก/วางคำตอบจาก StackOverflow ที่นี่ด้วย

รหัสต่อไปนี้:

นำเข้า csv จาก ete3 นำเข้า NCBITaxa ncbi = NCBITaxa() def get_desired_ranks(taxid, require_ranks): lineage = ncbi.get_lineage(taxid) lineage2ranks = ncbi.get_rank(lineage) ranks2lineage = dict((rankxidd) for () ใน lineage2ranks.items()) ส่งคืน {'{}_id'.format(rank): ranks2lineage.get(rank, '') สำหรับอันดับใน require_ranks} def main(taxids, require_ranks, path): ด้วย open(path, 'w') เป็น csvfile: fieldnames = ['{}_id'.format(rank) สำหรับอันดับที่ต้องการ_ranks] writer = csv .DictWriter(csvfile, delimiter="	", fieldnames=fieldnames) writer.writeheader() for taxid in taxid: writer.writerow(get_desired_ranks(taxid, require_ranks)) ถ้า __name__ == '__main__': taxids = [1204725, 2162, 1300163, 420247] desire_ranks = ['อาณาจักร', 'phylum', 'class', 'order', 'family', 'genus', 'species'] path = 'taxids.csv' main(taxids, require_ranks, เส้นทาง)

สร้างไฟล์ที่มีลักษณะดังนี้:

kingdom_id phylum_id class_id order_id family_id genus_id species_id  28890 183925 2158 2159 2160 2162  28890 183925 2158 2159 2160 2162  28890 183925 2158 2159 2160 2162  28890 183925 2158 2159 2172 2173

วิธีใช้คำย่อ เรื่องราว และอื่นๆ เพื่อช่วยจดจำลำดับของการจำแนกประเภททางวิทยาศาสตร์

อนุกรมวิธานเป็นระบบการจำแนกประเภทที่นักวิทยาศาสตร์ใช้เพื่อแยกสิ่งมีชีวิตออกเป็นหมวดหมู่ต่างๆ ด้านล่างนี้เป็นรายการหมวดหมู่ในระบบการจำแนกประเภททางวิทยาศาสตร์

  • ราชอาณาจักร
  • ไฟลัม
  • ระดับ
  • คำสั่ง
  • ตระกูล
  • ประเภท
  • สายพันธุ์

หมวดหมู่เริ่มต้นโดยทั่วๆ ไป เช่น ราชอาณาจักร ซึ่งเป็นหมวดหมู่ที่กว้างที่สุดในบรรดาหมวดหมู่ทั้งหมด ระบบจะจำกัดให้แคบลงจนถึง Species ซึ่งเป็นหมวดหมู่ที่เจาะจงที่สุด คุณจะต้องจดจำหมวดหมู่เหล่านี้รวมถึงวิธีการทำงาน ดูเคล็ดลับในการจดจำประเภทของระบบหากมีการจำแนกทางวิทยาศาสตร์ในส่วนต่อไปนี้


จะรับรหัสเฉพาะทางอนุกรมวิธานสำหรับอาณาจักร ไฟลัม คลาส ลำดับ ครอบครัว สกุลและสปีชีส์จาก taxid ได้อย่างไร - ชีววิทยา

แปลงหมายเลขภาคยานุวัติเป็นอนุกรมวิธาน

taxonomizr มีฟังก์ชันง่ายๆ บางอย่างในการแยกวิเคราะห์ไฟล์อนุกรมวิธาน NCBI และดัมพ์การภาคยานุวัติ และใช้เพื่อกำหนดอนุกรมวิธานให้กับหมายเลขภาคยานุวัติหรือรหัสการจัดหมวดหมู่อย่างมีประสิทธิภาพ สิ่งนี้มีประโยชน์ ตัวอย่างเช่น ในการกำหนดอนุกรมวิธานให้กับผลลัพธ์ BLAST ทั้งหมดนี้ทำในเครื่องหลังจากดาวน์โหลดไฟล์ที่เหมาะสมจาก NCBI โดยใช้ฟังก์ชันที่รวมอยู่ (ดูด้านล่าง)

  • prepareDatabase : ดาวน์โหลดข้อมูลจาก NCBI และเตรียมฐานข้อมูล SQLite
  • accessionToTaxa : แปลงหมายเลขภาคยานุวัติเป็นอนุกรมวิธาน
  • getTaxonomy : แปลงรหัสอนุกรมวิธานเป็นอนุกรมวิธาน

ฟังก์ชั่นพิเศษเพิ่มเติมคือ:

  • getId : แปลงชื่อทางชีววิทยาเป็นอนุกรมวิธาน ID
  • getRawTaxonomy : ค้นหาอันดับการจัดหมวดหมู่ทั้งหมดสำหรับ ID อนุกรมวิธาน
  • getAccessions : ค้นหาภาคยานุวัติสำหรับ ID การจัดหมวดหมู่ที่กำหนด
  • makeNewick : สร้างแผนผังการจัดรูปแบบ Newick จากผลลัพธ์การจัดหมวดหมู่

และการใช้งานอย่างง่ายอาจมีลักษณะดังนี้ (ดูรายละเอียดเพิ่มเติมด้านล่าง):

แพ็คเกจนี้ดาวน์โหลดฐานข้อมูลบางส่วนจาก NCBI และจัดเก็บไว้ในรูปแบบที่เข้าถึงได้ง่ายบนฮาร์ดไดรฟ์ สิ่งนี้จบลงด้วยการใช้พื้นที่ที่เหมาะสม ดังนั้นคุณอาจต้องการพื้นที่ว่างในฮาร์ดไดรฟ์ประมาณ 75 Gb

แพ็คเกจอยู่บน CRAN ดังนั้นจึงควรติดตั้งด้วยวิธีง่ายๆ:

หากคุณต้องการเวอร์ชันการพัฒนาโดยตรงจาก github ให้ใช้ไลบรารี devtools และเรียกใช้:

หากต้องการใช้ไลบรารี ให้โหลดใน R:

ตั้งแต่เวอร์ชัน 0.5.0 มีฟังก์ชันง่ายๆ ในการเรียกใช้การเตรียมการทั้งหมด โปรดทราบว่าคุณจะต้องใช้เวลาสักครู่ ดาวน์โหลดแบนด์วิดท์และพื้นที่ฮาร์ดไดรฟ์ก่อนที่จะเรียกใช้คำสั่งนี้ (เรากำลังดาวน์โหลดการกำหนดการจัดหมวดหมู่สำหรับทุกระเบียนใน NCBI) ในการสร้างฐานข้อมูล SQLite ชื่อ accessionTaxa.sql ในไดเร็กทอรีการทำงานปัจจุบัน (คุณอาจต้องการเก็บสิ่งนี้ไว้ที่ส่วนกลางมากขึ้น ดังนั้นจึงไม่จำเป็นต้องทำซ้ำกับทุกโครงการ) เราสามารถเรียกใช้:

หากทุกอย่างทำงานได้ก็ควรเตรียมฐานข้อมูล SQLite ให้พร้อมใช้งาน คุณสามารถข้ามขั้นตอน "การเตรียมด้วยตนเอง" ด้านล่างได้

ไฟล์ทั้งหมดถูกแคชในเครื่อง ดังนั้นจำเป็นต้องมีการเตรียมการเพียงครั้งเดียว (ลบ/เปลี่ยนชื่อฐานข้อมูล SQLite และเรียกใช้ฟังก์ชันเพื่อสร้างฐานข้อมูลใหม่) ไม่จำเป็นต้องตรวจสอบการมีอยู่ของฐานข้อมูลด้วยตนเอง เนื่องจากฟังก์ชันจะตรวจสอบเพื่อดูว่าฐานข้อมูล SQLite มีอยู่หรือไม่ และหากเป็นเช่นนั้นจะข้ามการดาวน์โหลด/การประมวลผล ตัวอย่างเช่น การรันคำสั่งอีกครั้งจะสร้าง:

การผลิตหมายเลขภาคยานุวัติ

มักจะได้รับหมายเลขภาคยานุวัติ NCBI เมื่อทำการค้นหา BLAST (โดยปกติคือคอลัมน์ที่สองของเอาต์พุตจาก blastn, blastx, blastp, . ) ตัวอย่างเช่น ผลลัพธ์อาจมีลักษณะดังนี้:

ดังนั้นหากต้องการระบุอนุกรมวิธานสำหรับซีเควนซ์ที่กำหนด ฐานข้อมูล NCBI nt และโหลดผลลัพธ์ลงใน R สำหรับฐานข้อมูล NCBI หมายเลขภาคยานุวัติมักจะเป็นรายการที่ 4 ใน | (ไปป์) แยกฟิลด์อ้างอิง (มักจะเป็นคอลัมน์ที่สองในผลลัพธ์ที่แยกแท็บ) ตัวอย่างเช่น CP002582.1 ใน gi|326539903|gb|CP002582.1| ข้างต้น.

ตัวอย่างเช่น การอ่านผลลัพธ์แบบระเบิดอาจมีลักษณะดังนี้:

การค้นหาอนุกรมวิธานสำหรับหมายเลขภาคยานุวัติ NCBI

ตอนนี้เราพร้อมที่จะแปลงหมายเลขภาคยานุวัติ NCBI เป็นรหัสการจัดหมวดหมู่แล้ว ตัวอย่างเช่น หากต้องการค้นหารหัสการจัดหมวดหมู่ที่เกี่ยวข้องกับหมายเลขภาคยานุวัติ NCBI "LN847353.1" และ "AL079352.3":

และเพื่อให้ได้อนุกรมวิธานสำหรับ ID เหล่านั้น:

คุณยังสามารถรับอนุกรมวิธานสำหรับหมายเลขภาคยานุวัติ NCBI ที่ไม่มีเวอร์ชัน (.X ตามหลังหมายเลขหลักเช่น ".1" ใน LN847353.1) โดยใช้อาร์กิวเมนต์ version='base' ของ accessionToTaxa :

การค้นหาอนุกรมวิธานสำหรับชื่ออนุกรมวิธาน

หากคุณต้องการค้นหา ID สำหรับชื่อการจัดหมวดหมู่ คุณสามารถทำสิ่งต่อไปนี้:

และอีกครั้งเพื่อรับอนุกรมวิธานสำหรับ ID เหล่านั้นให้ใช้ getTaxonomy :

คุณสามารถใช้ฟังก์ชัน condenseTaxa เพื่อค้นหาข้อตกลงระหว่าง Hit การจัดหมวดหมู่ ตัวอย่างเช่น การรวมอนุกรมวิธานจากส่วนก่อนหน้าเป็นลำดับอนุกรมวิธานที่ต่ำที่สุดที่แบ่งตามอนุกรมวิธานทั้งสาม:

ฟังก์ชันนี้ยังสามารถป้อน Hit แบบกลุ่มจำนวนมากได้ เช่น BLAST hits สำหรับการอ่านลำดับปริมาณงานสูงหลังจากการกรองสำหรับ hit ที่ดีที่สุดสำหรับการอ่านแต่ละครั้ง และแสดงอนุกรมวิธานแบบย่อสำหรับการจัดกลุ่มแต่ละกลุ่ม:

ค้นหาการกำหนดอนุกรมวิธานทั้งหมดสำหรับแท็กซ่าที่กำหนด

หากต้องการรับการจัดอนุกรมวิธานทั้งหมดสำหรับแท็กซ่าที่กำหนดโดยไม่คำนึงถึงอันดับเฉพาะ คุณสามารถใช้ฟังก์ชัน getRawTaxonomy โปรดทราบว่ามักจะมีระดับกลางจำนวนมากที่อยู่นอกระดับการจัดหมวดหมู่ทั่วไป ฟังก์ชันส่งคืนรายการเนื่องจาก ID ที่แตกต่างกันสามารถมีอันดับที่แตกต่างกันได้ มันถูกใช้คล้ายกับ getTaxonomy :

ค้นหาภาคยานุวัติสำหรับ ID การจัดหมวดหมู่ที่กำหนด

หากต้องการค้นหาภาคยานุวัติทั้งหมดสำหรับ ID การจัดหมวดหมู่ที่กำหนด คุณสามารถใช้ฟังก์ชัน getAccessions นี่เป็นกรณีการใช้งานที่ผิดปกติเล็กน้อย เพื่อรักษาพื้นที่ ดัชนีจะไม่ถูกสร้างโดยค่าเริ่มต้นใน read.accession2taxid หากคุณกำลังจะใช้ฟังก์ชันนี้ คุณจะต้องสร้างฐานข้อมูล SQLite ใหม่โดยตั้งค่าอาร์กิวเมนต์ indexTaxa เป็น true โดยมีลักษณะดังนี้:

จากนั้นคุณสามารถรับการภาคยานุวัติสำหรับแท็กซ่า 3702 ด้วยคำสั่งเช่น (โปรดทราบว่ามีการใช้อาร์กิวเมนต์ จำกัด ที่นี่เพื่อรักษาพื้นที่):

แปลงอนุกรมวิธานเป็น Newick tree

นี่อาจมีประโยชน์ในบางกรณีเท่านั้น แต่มีฟังก์ชันอำนวยความสะดวก makeNewick เพื่อแปลงอนุกรมวิธานเป็นทรี Newick รวมอยู่ด้วย ฟังก์ชันใช้เมทริกซ์ที่ให้พร้อมกับคอลัมน์ที่สอดคล้องกับหมวดหมู่อนุกรมวิธานและแถวที่แตกต่างจากการกำหนดอนุกรมวิธาน เช่น เอาต์พุตจาก condenseTaxa หรือ getTaxonomy และย่อให้เป็นทรีที่จัดรูปแบบ Newick ตัวอย่างเช่น:

  • แก้ไขบั๊กเวกเตอร์ที่มีชื่อใน accessionToTaxa
  • เพิ่มฟังก์ชัน makeNewick
  • จัดการกับการหมดเวลาเริ่มต้น 60 วินาทีสำหรับการดาวน์โหลดในR
  • ลบ nucl_est และ nucl_gss ออกจากค่าเริ่มต้นเนื่องจาก NCBI พับเป็น nucl_gb และนำออก
  • สควอช R:devel bug
  • เปลี่ยนจาก data.table เป็น SQLite
  • เพิ่มความสะดวก prepareDatabase() ฟังก์ชั่น
  • ข้อผิดพลาดในการทดสอบ Windows ที่ถูกบีบอัด

การเตรียมฐานข้อมูลด้วยตนเอง (โดยปกติไม่จำเป็น)

บันทึก: เนื่องจากเวอร์ชัน 0.5.0 ปกติไม่จำเป็นต้องเรียกใช้สิ่งต่อไปนี้ด้วยตนเอง ฟังก์ชัน prepareDatabase() ควรทำสิ่งนี้ส่วนใหญ่โดยอัตโนมัติสำหรับคุณ (ดูด้านบน)

เพื่อหลีกเลี่ยงการเข้าถึงอินเทอร์เน็ตอย่างต่อเนื่องและ API ที่ช้า ขั้นตอนแรกในการใช้แพ็คเกจคือการดาวน์โหลดไฟล์ที่จำเป็นทั้งหมดจาก NCBI สิ่งนี้ใช้พื้นที่ดิสก์เพียงเล็กน้อย แต่ทำให้การเข้าถึงในอนาคตมีความน่าเชื่อถือและรวดเร็ว

บันทึก: ไม่จำเป็นต้องตรวจสอบการมีอยู่ของไฟล์เหล่านี้ด้วยตนเอง เนื่องจากฟังก์ชันจะตรวจสอบโดยอัตโนมัติเพื่อดูว่ามีเอาต์พุตหรือไม่ และหากเป็นเช่นนั้น ให้ข้ามการดาวน์โหลด/การประมวลผล ลบไฟล์ในเครื่องหากคุณต้องการดาวน์โหลดซ้ำหรือประมวลผลใหม่

ขั้นแรก ดาวน์โหลดไฟล์ชื่อและโหนดที่จำเป็นจาก NCBI:

ดาวน์โหลดภาคยานุวัติสู่ไฟล์แท็กซ่า

จากนั้นดาวน์โหลดไฟล์การแปลงรหัสแท็กซ่าจาก NCBI บันทึก: นี่ก็น่ารัก ใหญ่ ดาวน์โหลด (หลายกิกะไบต์):

หากคุณต้องการระบุหมายเลขภาคยานุวัติโปรตีน ให้ดาวน์โหลดไฟล์ prot จาก NCBI ด้วย (อีกครั้งคือ ใหญ่ ดาวน์โหลด):

แปลงชื่อ โหนด และภาคยานุวัติให้เป็นฐานข้อมูล

จากนั้นประมวลผลไฟล์ชื่อและโหนดที่ดาวน์โหลดมาในรูปแบบที่เข้าถึงได้ง่ายขึ้น:

ถัดไป ประมวลผลไฟล์ภาคยานุวัติที่ดาวน์โหลดมาไว้ในฐานข้อมูลเดียวกัน (อาจใช้เวลาสักครู่):

ตอนนี้ทุกอย่างควรพร้อมสำหรับการประมวลผล ไฟล์ทั้งหมดถูกแคชไว้ภายใน ดังนั้นการเตรียมการจึงจำเป็นเพียงครั้งเดียว (หรือเมื่อใดก็ตามที่คุณต้องการอัปเดตข้อมูล) ไม่จำเป็นต้องตรวจสอบการมีอยู่ของไฟล์เหล่านี้ด้วยตนเอง เนื่องจากฟังก์ชันจะตรวจสอบโดยอัตโนมัติเพื่อดูว่ามีเอาต์พุตหรือไม่ และหากเป็นเช่นนั้น ให้ข้ามการดาวน์โหลด/การประมวลผล ลบไฟล์ในเครื่องหากคุณต้องการดาวน์โหลดซ้ำหรือประมวลผลใหม่


จะรับรหัสเฉพาะทางอนุกรมวิธานสำหรับอาณาจักร ไฟลัม คลาส ลำดับ ครอบครัว สกุลและสปีชีส์จาก taxid ได้อย่างไร - ชีววิทยา

CCMetagen ประมวลผลการจัดตำแหน่งลำดับที่สร้างด้วย KMA ซึ่งใช้รูปแบบการเรียงลำดับ ConClave เพื่อให้ได้การแมปการอ่านที่แม่นยำสูง ไปป์ไลน์นั้นเร็วพอที่จะใช้คอลเล็กชั่น NCBI nt ทั้งหมดเป็นข้อมูลอ้างอิง ซึ่งอำนวยความสะดวกในการรวมสิ่งมีชีวิตที่ไม่ได้รับการศึกษา เช่น ยูคาริโอตของจุลินทรีย์ในการสำรวจเมตาจีโนม CCMetagen ให้ผลลัพธ์การจัดหมวดหมู่ในรูปแบบที่ใช้งานง่ายซึ่งพร้อมสำหรับการเผยแพร่หรือการวิเคราะห์ทางสถิติปลายน้ำ

หากคุณใช้เครื่องมือนี้ โปรดอ้างอิง CCMetagen และ KMA:

นอกจากหลักเกณฑ์ด้านล่างแล้ว เรายังจัดเตรียมบทแนะนำเพื่อสร้างการวิเคราะห์การจำแนกเมตาจีโนมของเราเกี่ยวกับไมโครไบโอมของนกป่าที่นี่

แนวทางด้านล่างนี้จะแนะนำคุณในการใช้เวอร์ชันบรรทัดคำสั่งของไปป์ไลน์ CCMetagen

CCMetagen ยังมีให้บริการบนเว็บที่ https://cge.cbs.dtu.dk/services/ccmetagen/ โปรดทราบว่าเราแนะนำให้ใช้เวอร์ชันบรรทัดคำสั่งนี้เพื่อวิเคราะห์ข้อมูลที่เกิน 1.5Gb

ข้อกำหนดและการติดตั้ง

ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งการพึ่งพาด้านล่างและสามารถเข้าถึงได้ใน $PATH ของคุณ แนวทางด้านล่างมีไว้สำหรับระบบ Unix

  • หากคุณยังไม่มี ให้ดาวน์โหลดและติดตั้ง Python 3.6 CCMetagen ต้องใช้ Python modules pandas (>0.23) และ ETE3 วิธีที่ง่ายที่สุดในการติดตั้งโมดูลเหล่านี้คือผ่าน conda หรือ pip:

sudo apt-get ติดตั้ง libz-dev

หมายเหตุ - KMA เวอร์ชันใหม่ - v1.3.0 - ได้รับการเผยแพร่แล้ว ซึ่งมีความเร็วและความแม่นยำที่สูงขึ้น เราขอแนะนำให้คุณอัปเดต KMA เป็น v.1.3.0

ติดตั้ง CCMetagen ผ่าน git:

สิ่งนี้จะดาวน์โหลด CCMetagen และไฟล์บทช่วยสอน คุณยังสามารถดาวน์โหลดไฟล์ python จากไดเร็กทอรี github นี้ (CCMetagen.py, CCMetagen_merge.py) และไฟล์ในโฟลเดอร์ ccmetagen หากคุณไม่ต้องการดาวน์โหลดไฟล์อื่นๆ ทั้งหมด

จากนั้นเพิ่มสคริปต์หลาม CCMetagen ให้กับเส้นทางชั่วคราวหรือถาวร ตัวอย่างเช่น: PATH=$PATH<your_folder>/CCMetagen

หากต้องการอัปเดต CCMetagen ให้ไปที่โฟลเดอร์ CCMetagen แล้วพิมพ์: git pull

หรือติดตั้ง CCMetagen ผ่าน pip:

สิ่งนี้จะติดตั้งแพ็คเกจหลามที่จำเป็นโดยอัตโนมัติ (pandas และ ete3) ดังนั้นคุณสามารถข้ามขั้นตอนนั้นได้หากคุณใช้ pip

ตัวเลือกที่ 1 ดาวน์โหลดฐานข้อมูล nt หรือ RefSeq ที่จัดทำดัชนี (พร้อมใช้) ที่นี่หรือที่นี่ ดาวน์โหลดไฟล์ ncbi_nt_kma.zip (ไฟล์ซิป 96GB, ไม่บีบอัด 165GB) หรือ RefSeq_bf.zip (ไฟล์ซิป 90GB) เปิดเครื่องรูดฐานข้อมูล เช่น unzip ncbi_nt_kma ฐานข้อมูล nt มีข้อมูลทั้งหมดในการรวบรวมนิวคลีโอไทด์ของ NCBI (ณ ม.ค. 2018) และดังนั้นจึงเหมาะสมที่จะระบุจุลินทรีย์หลายชนิด รวมทั้งโปรคาริโอตและยูคาริโอต ฐานข้อมูล RefSeq_bf มีจีโนมของแบคทีเรียและเชื้อราอ้างอิงที่สมบูรณ์ เหมาะสำหรับแหล่งที่อยู่อาศัยที่รู้จักกันดี เช่น ลำไส้ของมนุษย์ หรือเมื่อพยายามตรวจหาชนิดพันธุ์ที่เป็นที่รู้จัก

ตัวเลือก 2 เราได้จัดทำดัชนีคอลเล็กชันนิวคลีโอไทด์ ncbi เวอร์ชันล่าสุด (มิถุนายน 2019) ที่ไม่มีลำดับสิ่งแวดล้อมหรือลำดับที่ประดิษฐ์ขึ้น ไฟล์ ncbi_nt_no_env_11jun2019.zip สามารถพบได้ที่นี่และมีรายการ ncbi nt ทั้งหมด ยกเว้นลูกหลานของยูคาริโอตด้านสิ่งแวดล้อม (taxid 61964) โปรคาริโอตสิ่งแวดล้อม (48479) ลำดับที่ไม่จัดประเภท (12908) และลำดับประดิษฐ์ (28384)

ตัวเลือกที่ 3: สร้างฐานข้อมูลอ้างอิงของคุณเอง (แนะนำ!) ทำตามคำแนะนำในเว็บไซต์ KMA เพื่อสร้างดัชนีฐานข้อมูล สิ่งสำคัญคือต้องรวม taxids ในส่วนหัวของลำดับสำหรับการประมวลผลด้วย CCMetagen ส่วนหัวของลำดับควรมีลักษณะดังนี้ >1234|sequence_description โดยที่ 1234 คือการเรียกแท็กซี่ เราจัดเตรียมสคริปต์เพื่อเปลี่ยนชื่อลำดับในฐานข้อมูล nt ที่นี่

หากคุณต้องการใช้ฐานข้อมูล RefSeq รูปแบบจะคล้ายกับรูปแบบที่จำเป็นสำหรับ Kraken บล็อก Opiniomics อธิบายวิธีดาวน์โหลดลำดับในรูปแบบที่เหมาะสม โปรดทราบว่าคุณยังจำเป็นต้องสร้างดัชนีด้วย KMA: kma_index -i refseq.fna -o refseq_indexed -NI -Sparse - หรือ kma_index -i refseq.fna -o refseq_indexed -NI -Sparse TG เพื่อการวิเคราะห์ที่เร็วขึ้น

หากคุณต้องการคำนวณความอุดมสมบูรณ์ในการอ่านต่อล้าน (RPM) หรือจำนวนการอ่าน (ส่วนย่อย) หรือหากคุณต้องการคำนวณสัดส่วนของการอ่านที่แมป ให้เพิ่มแฟล็ก -ef (คุณสมบัติเพิ่มเติม):

$db คือพาธไปยังฐานข้อมูลอ้างอิง $th คือจำนวนเธรด $SAMPLE_R1 เป็นพาธไปยัง mate1 ของตัวอย่าง metagenome/ metatranscriptome ที่จับคู่แล้ว (fastq หรือ fasta) $SAMPLE_R2 คือพาธไปยัง mate2 ของ paired- end metagenome/metatranscriptome sample (fastq หรือ fasta) $SAMPLE คือพาธไปยังไฟล์ metagenome/metatranscriptome แบบปลายด้านเดียว (reads หรือ contigs)

โดยที่ $sample_out_kma.res คือผลลัพธ์การจัดตำแหน่งที่สร้างโดย KMA

โปรดทราบว่าหากคุณเรียกใช้ CCMetagen จากโฟลเดอร์ในเครื่อง (แทนที่จะเพิ่มลงในพาธของคุณ) คุณอาจต้องเพิ่ม 'python' ก่อน CCMetagen: python CCMetagen.py -i $sample_out_kma.res -o results

เสร็จแล้ว! สิ่งนี้จะทำให้ตัวกรองคุณภาพเพิ่มเติมและส่งออกไฟล์ข้อความที่มีการจัดหมวดหมู่การจัดหมวดหมู่อนุกรมวิธานและไฟล์กราฟโครนาสำหรับการแสดงภาพแบบโต้ตอบ

ตัวอย่างของเอาต์พุต CCMetagen สามารถพบได้ที่นี่ (ไฟล์ .csv) และที่นี่ (ไฟล์ .html)

ในไฟล์ .csv คุณจะพบความลึก (มากมาย) ของการแข่งขันแต่ละรายการ

ความลึกสามารถประมาณได้สี่วิธี: โดยการนับจำนวนนิวคลีโอไทด์ที่ตรงกับลำดับการอ้างอิง (ใช้แฟล็ก --depth_unit nc) โดยใช้การแก้ไขเพิ่มเติมสำหรับความยาวของเทมเพลต (ค่าเริ่มต้นใน KMA และ CCMetagen) โดยการคำนวณความลึกในการอ่านต่อล้าน (RPM ใช้แฟล็ก --depth_unit rpm) หรือโดยการนับจำนวนแฟรกเมนต์ (เช่น จำนวนการอ่าน PE ที่ตรงกับลำดับการอ้างอิง ให้ใช้แฟล็ก --depth_unit fr) หากคุณต้องการ RPM หรือหน่วยแฟรกเมนต์ คุณจะต้องเพิ่มไฟล์ .mapstats ที่สร้างด้วย KMA (ซึ่งคุณจะได้รับเมื่อรัน kma ด้วยแฟล็ก '-ef')

ปรับสมดุลความไวและความจำเพาะ

คุณสามารถ ปรับความเข้มงวดของการจัดอนุกรมวิธาน โดยการปรับความครอบคลุมขั้นต่ำ (--การครอบคลุม) ความอุดมสมบูรณ์ขั้นต่ำ (--ความลึก) และระดับความคล้ายคลึงลำดับขั้นต่ำ (--query_identity) ความครอบคลุมคือเปอร์เซ็นต์ของฐานในลำดับการอ้างอิงที่ครอบคลุมโดยลำดับฉันทามติ (ข้อความค้นหาของคุณ) ซึ่งอาจเกิน 100% เมื่อลำดับฉันทามติมีขนาดใหญ่กว่าข้อมูลอ้างอิง (เนื่องจากการแทรก เป็นต้น) คุณยังสามารถปรับการตั้งค่า KMA เพื่ออำนวยความสะดวกในการระบุแท็กซ่าที่เกี่ยวข้องที่อยู่ห่างไกลออกไป (ดูด้านล่าง)

หากคุณเปลี่ยนหน่วยความลึกเริ่มต้น เราแนะนำให้ปรับความอุดมสมบูรณ์ขั้นต่ำ (--ความลึก) เพื่อลบแท็กซ่าที่พบในความอุดมสมบูรณ์ต่ำตามลำดับ ตัวอย่างเช่น คุณสามารถใช้ -d 200 (200 นิวคลีโอไทด์) เมื่อใช้ --deep_unit nc ซึ่งคล้ายกับ -d 0.2 เมื่อใช้ตัวเลือก '--depth_unit kma' ที่เป็นค่าเริ่มต้น หากคุณเลือกที่จะคำนวณความอุดมสมบูรณ์ใน RPM คุณอาจต้องการปรับความอุดมสมบูรณ์ขั้นต่ำตามความลึกของลำดับของคุณ ตัวอย่างเช่น ในการคำนวณความอุดมสมบูรณ์ใน RPM และกรองการจับคู่ทั้งหมดที่มีการอ่านน้อยกว่าหนึ่งครั้งต่อหนึ่งล้าน:

หากคุณต้องการที่จะรู้ว่า สัดส่วนของการอ่านที่แมป สำหรับแต่ละเทมเพลต ให้รัน kma ด้วยแฟล็ก '-ef' สิ่งนี้จะสร้างไฟล์ที่มีนามสกุล '.mapstat' จากนั้นจัดเตรียมไฟล์นี้ให้กับ CCMetagen (-map $sample_out_kma.mapstat) และเพิ่มแฟล็ก '-ef y':

การดำเนินการนี้จะกรองไฟล์ .mapstat โดยลบเทมเพลตที่ไม่ผ่านการควบคุมคุณภาพของ CCMetagen จะเพิ่มเปอร์เซ็นต์ของการอ่านที่แมปสำหรับแต่ละเทมเพลต และจะส่งออกไฟล์ที่มีนามสกุล 'stats_csv' นอกจากนี้ยังจะส่งออกสัดส่วนโดยรวมของการอ่านที่แมปไปยังเทมเพลตเหล่านี้ในเทอร์มินัล สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับคอลัมน์เพิ่มเติมของไฟล์นี้ โปรดตรวจสอบคู่มือของ KMA

เมื่อทำงานกับสภาพแวดล้อมที่มีความซับซ้อนสูงซึ่งฐานข้อมูลอ้างอิงมีน้อยมาก (เช่น เมตาจีโนมของดินและทางทะเลจำนวนมาก) เป็นเรื่องปกติที่จะได้รับการอ่านที่มีสัดส่วนต่ำ โดยเฉพาะอย่างยิ่งหากความลึกของการจัดลำดับต่ำ สำหรับการวิเคราะห์ที่ละเอียดอ่อนยิ่งขึ้น นอกเหนือจากการผ่อนคลายการตั้งค่า CCMetatgen แล้ว คุณสามารถปรับการตั้งค่าเครื่องมือจัดตำแหน่ง KMA ได้ เช่น ลบแฟล็ก -and และ -apm f เพื่อให้คุณจับคู่ได้แม้ลำดับอ้างอิงจะไม่มากนัก เป็นตัวแทนมากเกินไปหรือเมื่อมี PE เพียงคนเดียวที่อ่านแมปไปยังเทมเพลต ตรวจสอบคู่มือ KMA สำหรับรายละเอียดเพิ่มเติม นอกจากนี้ยังอาจเป็นประโยชน์ในการสร้างฐานข้อมูลอ้างอิงที่กำหนดเองด้วยจีโนมของสิ่งมีชีวิตเพิ่มเติมที่เกี่ยวข้องอย่างใกล้ชิดกับสิ่งที่คุณคาดหวังว่าจะพบในตัวอย่างของคุณ

ทำความเข้าใจกับผลลัพธ์การจัดหมวดหมู่ของ CCMetagen:

การจัดประเภทการจัดหมวดหมู่สะท้อนถึงความคล้ายคลึงของลำดับระหว่างลำดับการสืบค้นและการอ้างอิง ตามค่าเริ่มต้นหรือเกณฑ์ความคล้ายคลึงที่ผู้ใช้กำหนด ตัวอย่างเช่น หากการจับคู่คล้ายกับลำดับการอ้างอิง 97% การจับคู่จะไม่ได้รับการจำแนกระดับสปีชีส์ หากการจับคู่มีความคล้ายคลึงกันถึง 85% กับลำดับอ้างอิง สปีชีส์ สกุล และการจัดประเภทระดับครอบครัวจะ 'ไม่มี' โปรดทราบว่าสิ่งนี้แตกต่างจากการระบุตัวตนที่แท็กเป็น unk_x (แท็กซ่าที่ไม่รู้จัก) ข้อมูลที่ไม่ทราบเหล่านี้บ่งชี้กลุ่มแท็กซ่าที่ไม่มีการกำหนดการจำแนกประเภทที่มีอันดับสูงกว่า (ตามฐานข้อมูลอนุกรมวิธานของ NCBI) และไม่เกี่ยวข้องกับความคล้ายคลึงกันของลำดับ

สำหรับรายการตัวเลือกเพื่อปรับแต่งการวิเคราะห์ของคุณ ให้พิมพ์:

  • ในการรับความสมบูรณ์ของอนุกรมวิธานแต่ละรายการ และ/หรือสรุปผลลัพธ์สำหรับตัวอย่างหลายรายการ ให้ใช้ CCMetagen_merge:

โดยที่ $CCMetagen_out เป็นโฟลเดอร์ที่มีการจำแนกประเภท CCMetagen ผลลัพธ์ต้องอยู่ในรูปแบบ .csv (ค่าเริ่มต้นหรือเอาต์พุต '--mode text' ของ CCMetagen) และไฟล์เหล่านี้ ต้องลงท้ายด้วย ".ccm.csv".

แฟล็ก '-t' กำหนดระดับการจัดหมวดหมู่เพื่อรวมผลลัพธ์ ค่าเริ่มต้นคือระดับสปีชีส์

คุณยังสามารถกรองแท็กซ่าเฉพาะที่ระดับการจัดหมวดหมู่ใดก็ได้:

ใช้แฟล็ก -kr เพื่อเก็บ (k) หรือลบ (r) แท็กซ่า ใช้แฟล็ก -l เพื่อตั้งค่าระดับการจัดหมวดหมู่สำหรับการกรอง ใช้แฟล็ก -tlist เพื่อแสดงรายการแท็กซ่าที่จะเก็บหรือเอาออก (คั่นด้วยเครื่องหมายจุลภาค)

EX1: กรองแบคทีเรีย: CCMetagen_merge.py -i $CCMetagen_out -kr r -l Kingdom -tlist Bacteria

EX2: กรองแบคทีเรียและ Metazoa: CCMetagen_merge.py -i $CCMetagen_out -kr r -l Kingdom -tlist Bacteria, Metazoa

EX3: รวมผลลัพธ์ในระดับครอบครัว และลบแท็กซ่า Metazoa และ Viridiplantae ที่ระดับอาณาจักร:

สำหรับการกรองระดับสปีชีส์ (โดยที่มีช่องว่างในชื่อแท็กซ่า) ให้ใช้เครื่องหมายอัญประกาศ ตัวอย่างที่ 4: เก็บเท่านั้น Escherichia coli และ Candida albicans:

หากคุณมีเพียงหนึ่งตัวอย่าง คุณสามารถใช้ CMetagen_merge เพื่อรับหนึ่งบรรทัดต่อแท็กซ่า

ไฟล์นี้ควรมีลักษณะเช่นนี้

สคริปต์นี้จะสร้างไฟล์ fasta ที่มีการอ่านทั้งหมดที่กำหนดให้กับ taxon ที่น่าสนใจ เช่น สร้างไฟล์ fasta ที่มีลำดับทั้งหมดที่แมปกับสกุล Eschericha:

โดยที่ $CCMetagen_out เป็นไฟล์ .csv ที่สร้างด้วย CCMetagen และ $sample_out_kma.frag เป็นไฟล์ .frag ที่สร้างด้วย KMA ไฟล์ Frag ต้องแตกไฟล์: gunzip *.frag.gz

สำหรับการกรองระดับสปีชีส์ (โดยที่มีช่องว่างในชื่ออนุกรมวิธาน) ให้ใช้เครื่องหมายอัญประกาศ ตัวอย่าง: สร้างไฟล์ fasta ที่มีลำดับทั้งหมดที่แมปกับ อี. โคไล:

ดูบทช่วยสอนของเราสำหรับตัวอย่างที่นำไปใช้ของไปป์ไลน์ CCMetagen

  • ไม่พบข้อผิดพลาดแท็กซี่ คุณอาจต้องอัปเดตฐานข้อมูล ETE3 ในพื้นที่ของคุณ ซึ่งมีข้อมูลภาษีและเชื้อสาย:
  • TypeError: concat() มีอาร์กิวเมนต์คำหลักที่ไม่คาดคิด 'sort' หากคุณได้รับข้อผิดพลาดนี้ โปรดอัปเดต python module pandas:

คำเตือน: ไม่พบแท็กซี่ของ NCBI สำหรับการภาคยานุวัติ [บางสิ่ง] การแข่งขันนี้จะไม่ได้รับการจัดอันดับการจัดหมวดหมู่

นี่ไม่ใช่ข้อผิดพลาด นี่เป็นเพียงคำเตือนที่ระบุว่าหนึ่งในลำดับการสืบค้นของคุณตรงกับบันทึก genbank ซึ่งไม่ทราบตัวระบุการจัดหมวดหมู่ (taxid) ของ NCBI ดังนั้น CCMetagen จะไม่สามารถกำหนดอันดับการจัดหมวดหมู่ให้กับการจับคู่นี้ได้ แต่คุณจะยังสามารถเห็นได้ในไฟล์เอาต์พุต

KeyError: "['Superkingdom' 'Kingdom' 'Phylum' 'Class' 'Order' 'Family' ] ไม่อยู่ในดัชนี" ตรวจสอบให้แน่ใจว่าผลลัพธ์ของ CCMetagen ลงท้ายด้วย '.csv'


จะรับรหัสเฉพาะทางอนุกรมวิธานสำหรับอาณาจักร ไฟลัม คลาส ลำดับ ครอบครัว สกุลและสปีชีส์จาก taxid ได้อย่างไร - ชีววิทยา

2 ผู้มีส่วนร่วม

ผู้ใช้ที่มีส่วนร่วมในไฟล์นี้

# '
# ' จำแนกลำดับกับชุดข้อมูลการฝึกอบรมอ้างอิง
# '
# ' assignTaxonomy ใช้อัลกอริทึม RDP Naive Bayesian Classifier ที่อธิบายไว้ใน
# ' วังและคณะ จุลชีววิทยาประยุกต์และสิ่งแวดล้อม พ.ศ. 2550 ด้วยขนาด kmer 8 และ 100 bootstrap
# ' ทำซ้ำ ไฟล์อ้างอิงที่จัดรูปแบบอย่างเหมาะสมสำหรับฐานข้อมูลอนุกรมวิธานยอดนิยมหลายแห่ง
# ' พร้อมใช้งาน url
# '
# ' @param seqs (จำเป็น) เวกเตอร์อักขระของลำดับที่จะกำหนดหรืออ็อบเจกต์
# ' บังคับได้โดย code>.
# '
# ' @param refFast (จำเป็น) เส้นทางไปยังไฟล์ fasta อ้างอิง หรือ an
# ' R การเชื่อมต่อ สามารถบีบอัดได้
# ' ไฟล์ fasta อ้างอิงนี้ควรจัดรูปแบบเพื่อให้บรรทัด id สอดคล้องกับ
# ' อนุกรมวิธาน (หรือการจำแนกประเภท) ของลำดับที่เกี่ยวข้อง และแต่ละระดับอนุกรมวิธานคือ
# ' คั่นด้วยเครื่องหมายอัฒภาค เช่น.
# '
# ' >KingomPhylumClassOrderFamilyGenus
# ' ACGAATGTGAAGTAA.
# '
# ' @param minBoot (ไม่บังคับ) ค่าเริ่มต้น 50
# ' ความมั่นใจในการบูตขั้นต่ำสำหรับการกำหนดระดับการจัดหมวดหมู่
# '
# ' @param tryRC (ไม่บังคับ) ค่าเริ่มต้น FALSE
# ' ถ้าเป็น TRUE การเติมเต็มแบบย้อนกลับของแต่ละลำดับจะถูกใช้สำหรับการจัดประเภทหากตรงกับข้อมูลอ้างอิงมากกว่า
# ' ลำดับมากกว่าลำดับไปข้างหน้า
# '
# ' @param outputBootstraps (ไม่บังคับ) ค่าเริ่มต้น FALSE
# ' หากเป็น TRUE ค่าบูตสแตรปจะถูกเก็บไว้ในเมทริกซ์จำนวนเต็ม รายชื่อที่มีการจัดหมวดหมู่ที่กำหนด (ชื่อ "taxa")
# ' และค่าบูตสแตรป (ชื่อ "boot") จะถูกส่งคืน การกรองความเชื่อมั่นของบูตสแตรปขั้นต่ำยังคงเกิดขึ้น
# ' เพื่อดูอนุกรมวิธานแบบเต็ม minBoot=0
# '
# ' @param taxLevels (ไม่บังคับ) ค่าเริ่มต้นคือ c("Kingdom", "Phylum", "Class", "Order", "Family", "Genus", "Species", "Species")
# ' ระดับอนุกรมวิธานที่ได้รับมอบหมาย ตัดทอนหากไม่มีระดับที่ลึกกว่าใน
# ' ฝึกฝนอย่างรวดเร็ว
# '
# ' @param มัลติเธรด (ไม่บังคับ) ค่าเริ่มต้นคือ FALSE
# ' ถ้า TRUE เปิดใช้งานมัลติเธรดและจำนวนเธรดที่พร้อมใช้งานจะถูกกำหนดโดยอัตโนมัติ
# ' หากระบุจำนวนเต็ม จำนวนเธรดที่จะใช้จะถูกตั้งค่าโดยส่งอาร์กิวเมนต์ไปที่
# ' code>.
# '
# ' @param verbose (ไม่บังคับ) ค่าเริ่มต้น FALSE
# ' ถ้าเป็น TRUE ให้พิมพ์สถานะเป็นเอาต์พุตมาตรฐาน
# '
# ' @return เมทริกซ์อักขระของการจัดหมวดหมู่ที่กำหนดเกินระดับ minBoot ของ
# ' บูทสแตรปความมั่นใจ แถวสอดคล้องกับลำดับที่ให้ไว้ คอลัมน์ไปยัง
# ' ระดับอนุกรมวิธาน NA บ่งชี้ว่าลำดับไม่ถูกจำแนกอย่างสม่ำเสมอที่
# ' ระดับนั้นที่ค่า minBoot threshhold
# '
# ' ถ้า outputBootstraps เป็น TRUE รายการที่มีชื่อที่มีการจัดหมวดหมู่ที่กำหนด (ชื่อ "taxa")
# ' และค่าบูตสแตรป (ชื่อ "boot") จะถูกส่งคืน
# '
# ' @ส่งออก
# '
# ' @importFrom ShortRead readFasta
# ' @importFrom ShortRead sread
# ' @importFrom ShortRead id
# '
# ' @ตัวอย่าง
# ' ลำดับ <- getSequences(system.file("extdata", "example_seqs.fa", package="dada2"))
# ' training_fasta <- system.file("extdata", "example_train_set.fa.gz", package="dada2")
# ' แท็กซ่า <- กำหนดอนุกรมวิธาน(seqs, training_fasta)
# ' taxa80 <- กำหนดอนุกรมวิธาน(seqs, training_fasta, minBoot=80, multithread=2)
# '
ฟังก์ชัน assignTaxonomy <- ( seqs , refFasta , minBoot = 50 , tryRC = FALSE , outputBootstraps = FALSE ,
taxLevels = c( " Kingdom " , " Phylum " , " Class " , " Order " , " Family " , " ประเภท " , " สายพันธุ์ " ),
มัลติเธรด = FALSE , verbose = FALSE ) <
MIN_REF_LEN <- 20 # บังคับความยาวขั้นต่ำของลำดับอ้างอิง ต้องใหญ่กว่าขนาด kmer ที่ใช้ (8)
MIN_TAX_LEN <- 50 # ความยาวขั้นต่ำของลำดับอินพุตเพื่อรับการกำหนดอนุกรมวิธาน
# รับเวกเตอร์อักขระของซีเควนซ์
ลำดับ <- getSequences ( ลำดับ )
if (min(nchar( seqs )) < MIN_TAX_LEN ) <
คำเตือน ( " บางลำดับสั้นกว่า " , MIN_TAX_LEN , " nts และจะไม่ได้รับการจัดหมวดหมู่การจัดหมวดหมู่ " )
>
#อ่านใน Fasta อ้างอิง
refsr <- readFasta( refFasta )
เลนส์ <- ความกว้าง(sread( refsr ))
if (มี( เลนส์ < MIN_REF_LEN )) <
refsr <- refsr [ เลนส์ > = MIN_REF_LEN ]
คำเตือน (paste0( " ลำดับการอ้างอิงบางรายการสั้นเกินไป (< " , MIN_REF_LEN , " nts) และได้รับการยกเว้น " ))
>
อ้างอิง <- as.character(sread( refsr ))
ภาษี <- as.character(id( refsr ))
tax <- sapply( ภาษี , ฟังก์ชั่น ( x ) gsub( " ^ s+| s+$ " , " " , x )) # ลบช่องว่างนำหน้า/ต่อท้าย
# สูดอากาศและแยกวิเคราะห์รูปแบบ UNITE fasta
รวม <- FALSE
if (ทั้งหมด(grepl( " FU |re[pf]s " ภาษี [ 1 : 10 ]))) <
UNITE <- ทรู
cat( " ตรวจพบการอ้างอิงอนุกรมวิธานของเชื้อรา UNITE " )
ภาษี <- sapply(strsplit( ภาษี , " | " ), `[` , 5 )
ภาษี <- gsub( " [pcofg]__unidentified " , " _DADA2_UNSPECIFIED " , ภาษี )
ภาษี <- gsub( " s__( w+)_ " , " s__ " , ภาษี )
ภาษี <- gsub( " s__sp$ " , " _DADA2_UNSPECIFIED " , ภาษี )
>
# การตรวจสอบรูปแบบหยาบ
if ( ! grepl( " " , ภาษี [[ 1 ]])) <
if (length(unlist(strsplit( tax [[ 1 ]], " s " ))) == 3 ) <
หยุด ( " รูปแบบไฟล์อ้างอิงไม่ถูกต้องสำหรับ assignTaxonomy (ดูเหมือนไฟล์ที่จัดรูปแบบสำหรับ assignSpecies) " )
> อื่นๆ <
หยุด( " รูปแบบไฟล์อ้างอิงไม่ถูกต้องสำหรับ assignTaxonomy " )
>
>
# แยกวิเคราะห์อนุกรมวิธานจากสตริงรหัส
tax.deep <- sapply(strsplit( ภาษี , " " ) ความยาว )
td <- max( ภาษี.ความลึก )
สำหรับ ( i in seq(length( tax ))) <
if ( tax.depth [[ i ]] < td ) <
สำหรับ ( j ใน seq( td - tax.depth [[ i ]])) <
ภาษี [[ i ]] <- paste0( ภาษี [[ i ]], " _DADA2_UNSPECIFIED " )
>
>
>
# สร้างแผนที่จำนวนเต็มจากการอ้างอิงถึงประเภท ("genus") และสำหรับแต่ละระดับภาษี
genus.unq <- ไม่ซ้ำกัน( ภาษี )
ref.to.genus <- ตรงกัน ( tax , genus.unq )
tax.mat <- เมทริกซ์ (unlist(strsplit( genus.unq , " " )), ncol = td , byrow = TRUE )
tax.df <- as.data.frame ( tax.mat )
สำหรับ ( ฉันอยู่ใน seq(ncol( tax.df ))) <
tax.df [, i ] <- แฟกเตอร์ ( tax.df [, i ])
tax.df [, i ] <- as.integer( tax.df [, ผม ])
>
tax.mat.int <- as.matrix( tax.df )
# ## มอบหมาย
# แยกอาร์กิวเมนต์มัลติเธรด
if (is.logical( multithread )) <
ถ้า ( มัลติเธรด == TRUE )
อื่น
> else if (is.numeric( multithread )) <
RcppParallel :: setThreadOptions ( numThreads = มัลติเธรด )
> อื่นๆ <
คำเตือน ( " พารามิเตอร์มัลติเธรดไม่ถูกต้อง ทำงานเป็นเธรดเดียว " )
RcppParallel :: setThreadOptions( numThreads = 1 )
>
# เรียกใช้รหัสการมอบหมาย C
การมอบหมาย <- C_assign_taxonomy2( seqs , rc( seqs ), refs , ref.to.genus , tax.mat.int , tryRC , verbose )
# แยกวิเคราะห์ผลลัพธ์และคืนภาษีที่สอดคล้องกับ minBoot
bestHit <- genus.unq [ มอบหมายภาษี $ ]
รองเท้า <- การมอบหมาย $ boot
ภาษี <- strsplit( bestHit , " " )
ภาษี <- lapply(seq_along( ภาษี ) ฟังก์ชัน ( ผม ) ภาษี [[ ผม ]][ รองเท้า [ ผม ,] > = minBoot ])
# แปลงเป็นเมทริกซ์อักขระ
tax.out <- เมทริกซ์ ( NA_character_ , nrow = length( seqs ), ncol = td )
สำหรับ ( i in seq(length( seqs ))) <
if (length( ภาษี [[ i ]]) > 0 ) <
tax.out [ ผม , 1 : ความยาว( ภาษี [[ ผม ]])] <- ภาษี [[ ผม ]]
>
>
ชื่อแถว( tax.out ) <- seqs
colnames( tax.out ) <- taxLevels [ 1 : ncol( tax.out )]
tax.out [ tax.out == " _DADA2_UNSPECIFIED " ] <- NA_character_
ถ้า ( outputBootstraps ) <
# แปลงรองเท้าเป็นเมทริกซ์จำนวนเต็ม
boots.out <- เมทริกซ์ ( boots , nrow = length( seqs ), ncol = td )
ชื่อแถว( boots.out ) <- seqs
colnames( boots.out ) <- taxLevels [1 : ncol( boots.out )]
รายการ ( ภาษี = tax.out , boot = boots.out )
> อื่นๆ <
tax.out
>
>
# ฟังก์ชั่น Helper สำหรับ assignSpecies
mapHits <- function ( x , refs , keep , sep = " / " ) <
ฮิต <- อ้างอิง [ x ]
hits [grepl( " Escherichia " , hits , fixed = TRUE ) | grepl( " Shigella " , hits , fixed = TRUE )] <- " Escherichia/Shigella "
if (length(unique( hits )) < = keep ) <
rval <- do.call( paste , c(as.list(sort(unique( hits ))), sep = sep ))
> อื่นๆ
ถ้า (ความยาว( rval ) == 0 ) rval <- NA_character_
rval
>
# จับคู่ชื่อสกุลที่ดูแลกับชื่อสกุลทวินาม
# จัดการกลุ่ม Clostridium และแยกชื่อสกุล
ฟังก์ชั่น MatchGenera <- ( gen.tax , gen.binom , split.glyph = " / " ) <
ถ้า (is.na( gen.tax ) || is.na( gen.binom ))
if (( gen.tax == gen.binom ) ||
grepl(paste0( " ^ " , gen.binom , " [ _ " , split.glyph , " ] " ), gen.tax ) ||
grepl(paste0( split.glyph , gen.binom , " $ " ), gen.tax )) <
กลับ ( TRUE )
> อื่นๆ <
ส่งคืน ( FALSE )
>
>
# '
# ' Taxonomic assignment to the species level by exact matching.
# '
# ' code uses exact matching against a reference fasta to identify the
# ' genus-species binomial classification of the input sequences.
# '
# ' @param seqs (Required). A character vector of the sequences to be assigned, or an object
# ' coercible by code>.
# '
# ' @param refFasta (Required). The path to the reference fasta file, or an
# ' R connection. Can be compressed.
# ' This reference fasta file should be formatted so that the id lines correspond to the
# ' genus-species of the associated sequence:
# '
# ' >SeqID genus species
# ' ACGAATGTGAAGTAA.
# '
# ' @param allowMultiple (Optional). Default FALSE.
# ' Defines the behavior when multiple exact matches against different species are returned.
# ' By default only unambiguous identifications are return. If TRUE, a concatenated string
# ' of all exactly matched species is returned. If an integer is provided, multiple
# ' identifications up to that many are returned as a concatenated string.
# '
# ' @param tryRC (Optional). Default FALSE.
# ' If TRUE, the reverse-complement of each sequences will also be tested for exact matching
# ' to the reference sequences.
# '
# ' @param n (Optional). Default code<2000>.
# ' The number of sequences to perform assignment on at one time.
# ' This controls the peak memory requirement so that large numbers of sequences are supported.
# '
# ' @param verbose (Optional). Default FALSE.
# ' If TRUE, print status to standard output.
# '
# ' @return A two-column character matrix. Rows correspond to the provided sequences,
# ' columns to the genus and species taxonomic levels. NA indicates that the sequence
# ' was not classified at that level.
# '
# ' @export
# '
# ' @importFrom Biostrings vcountPDict
# ' @importFrom Biostrings PDict
# ' @importFrom ShortRead readFasta
# ' @importFrom ShortRead sread
# ' @importFrom ShortRead reverseComplement
# ' @importFrom ShortRead id
# ' @importFrom methods as
# '
# ' @examples
# ' seqs <- getSequences(system.file("extdata", "example_seqs.fa", package="dada2"))
# ' species_fasta <- system.file("extdata", "example_species_assignment.fa.gz", package="dada2")
# ' spec <- assignSpecies(seqs, species_fasta)
# '
assignSpecies <- function ( seqs , refFasta , allowMultiple = FALSE , tryRC = FALSE , n = 2000 , verbose = FALSE ) <
# Define number of multiple species to return
if (is.logical( allowMultiple )) <
if ( allowMultiple ) keep <- Inf
else keep <- 1
> else <
keep <- as.integer( allowMultiple )
>
# Get character vector of sequences
seqs <- getSequences( seqs )
# Read in the reference fasta
refsr <- readFasta( refFasta )
ids <- as(id( refsr ), " character " )
# Crude format check
if ( ! length(unlist(strsplit( ids [[ 1 ]], " s " ))) > = 3 ) <
if (length(unlist(gregexpr( " " , ids [[ 1 ]]))) > = 3 ) <
stop( " Incorrect reference file format for assignSpecies (this looks like a file formatted for assignTaxonomy). " )
> else <
stop( " Incorrect reference file format for assignSpecies. " )
>
>
genus <- sapply(strsplit( ids , " s " ), `[` , 2 )
species <- sapply(strsplit( ids , " s " ), `[` , 3 )
# Identify the exact hits
hits <- vector( " list " , length( seqs ))
lens <- nchar( seqs )
for ( len in unique( lens )) < # Requires all same length sequences
i.len <- which( lens == len ) n.len <- length( i.len )
j.lo <- 1 j.hi <- min( n , n.len )
while ( j.lo < = n.len ) <
i.loop <- i.len [ j.lo : j.hi ]
seqdict <- PDict( seqs [ i.loop ])
vhit <- (vcountPDict( seqdict , sread( refsr )) > 0 )
if ( tryRC ) vhit <- vhit | (vcountPDict( seqdict , reverseComplement(sread( refsr ))) > 0 )
hits [ i.loop ] <- lapply(seq(nrow( vhit )), function ( x ) vhit [ x ,])
j.lo <- j.lo + n j.hi <- min( j.hi + n , n.len )
rm( seqdict )
gc()
>
>
# Get genus species return strings
rval <- cbind(unlist(sapply( hits , mapHits , refs = genus , keep = 1 )),
unlist(sapply( hits , mapHits , refs = species , keep = keep )))
colnames( rval ) <- c( " Genus " , " Species " )
rownames( rval ) <- seqs
gc()
if ( verbose ) cat(sum( ! is.na( rval [, " Species " ])), " out of " , length( seqs ), " were assigned to the species level. " )
rval
>
# '
# ' Add species-level annotation to a taxonomic table.
# '
# ' code wraps the code> function to assign genus-species
# ' binomials to the input sequences by exact matching against a reference fasta. Those binomials
# ' are then merged with the input taxonomic table with species annotations appended as an
# ' additional column to the input table.
# ' Only species identifications where the genera in the input table and the binomial
# ' classification are consistent are included in the return table.
# '
# ' @param taxtab (Required). A taxonomic table, the output of code>.
# '
# ' @param refFasta (Required). The path to the reference fasta file, or an
# ' R connection. Can be compressed.
# ' This reference fasta file should be formatted so that the id lines correspond to the
# ' genus-species binomial of the associated sequence:
# '
# ' >SeqID genus species
# ' ACGAATGTGAAGTAA.
# '
# ' @param allowMultiple (Optional). Default FALSE.
# ' Defines the behavior when multiple exact matches against different species are returned.
# ' By default only unambiguous identifications are return. If TRUE, a concatenated string
# ' of all exactly matched species is returned. If an integer is provided, multiple
# ' identifications up to that many are returned as a concatenated string.
# '
# ' @param tryRC (Optional). Default FALSE.
# ' If TRUE, the reverse-complement of each sequences will be used for classification if it is a better match to the reference
# ' sequences than the forward sequence.
# '
# ' @param n (Optional). Default code<1e5>.
# ' The number of records (reads) to read in and filter at any one time.
# ' This controls the peak memory requirement so that very large fastq files are supported.
# ' See code> for details.
# '
# ' @param verbose (Optional). Default FALSE.
# ' If TRUE, print status to standard output.
# '
# ' @return A character matrix one column larger than input. Rows correspond to
# ' sequences, and columns to the taxonomic levels. NA indicates that the sequence
# ' was not classified at that level.
# '
# ' @seealso
# ' code>, code>
# '
# ' @export
# '
# ' @examples
# '
# ' seqs <- getSequences(system.file("extdata", "example_seqs.fa", package="dada2"))
# ' training_fasta <- system.file("extdata", "example_train_set.fa.gz", package="dada2")
# ' taxa <- assignTaxonomy(seqs, training_fasta)
# ' species_fasta <- system.file("extdata", "example_species_assignment.fa.gz", package="dada2")
# ' taxa.spec <- addSpecies(taxa, species_fasta)
# ' taxa.spec.multi <- addSpecies(taxa, species_fasta, allowMultiple=TRUE)
# '
addSpecies <- function ( taxtab , refFasta , allowMultiple = FALSE , tryRC = FALSE , n = 2000 , verbose = FALSE ) <
seqs <- rownames( taxtab )
binom <- assignSpecies( seqs , refFasta = refFasta , allowMultiple = allowMultiple , tryRC = tryRC , n = n , verbose = verbose )
# Merge tables
if ( " Genus " %in% colnames( taxtab )) gcol <- which(colnames( taxtab ) == " Genus " )
else gcol <- ncol( taxtab )
# Match genera
gen.match <- mapply( matchGenera , taxtab [, gcol ], binom [, 1 ])
taxtab <- cbind( taxtab , binom [, 2 ])
colnames( taxtab )[ncol( taxtab )] <- " Species "
taxtab [ ! gen.match , " Species " ] <- NA_character_
if ( verbose ) cat( " Of which " , sum( ! is.na( taxtab [, " Species " ])), " had genera consistent with the input table. " )
taxtab
>
# ' This function creates the dada2 assignTaxonomy training fasta for the RDP trainset .fa file
# ' The RDP trainset data was downloaded from: https://sourceforge.net/projects/rdp-classifier/files/RDP_Classifier_TrainingData/
# '
# ' ## RDP Trainset 18
# ' path <- "

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.


Requirements and Installation

Make sure you have the dependencies below installed and accessible in your $PATH. The guidelines below are for Unix systems.

  • If you do not have it already, download and install Python 3.6 CCMetagen requires the Python modules pandas (>0.23) and ETE3. The easiest way to install these modules is via conda or pip:

sudo apt-get install libz-dev

Note - a new version of KMA - v1.3.0 – has been released, featuring higher speed and precision. We recommend that you update KMA to v.1.3.0

    is required for graphs. To install Krona it in the local folder:
  • Then download CCMetagen and add it to your path. คุณมีสองตัวเลือก:

Install CCMetagen via git:

This will download CCMetagen and the tutorial files. You can also just download the python files from this github directory (CCMetagen.py, CCMetagen_merge.py) and the ones in the ccmetagen folder if you rather avoid downloading all other files.

Then add the CCMetagen python scripts to the path, temporarily or permanently. For example: PATH=$PATH<your_folder>/CCMetagen

To update CCMetagen, go to the CCMetagen folder and type: git pull

Or install CCMetagen via pip:

This will automatically install the necessary python packages (pandas and ete3), so you can skip that step if you use pip.


Taxonomy Rules – Naming And Grouping Animals Scientifically

I was quite surprised to hear when many of our teachers and tutors gave feedback regarding the rules of taxonomic nomenclature (i.e. how to write the names of animal goups) apparently, a significant few have difficulties with those norms. I recall having written a text going through the essential principles and the framework for how you write these formal names for my old website, which I shut down in favour of this blog. So, I thought I could post that text here as well, hoping it can clarify some confusion.

The taxonomic system for the hierarchical (ranked) การจัดหมวดหมู่ of living organisms (and initially also of rocks, but that failed) is very simple. Organisms are assigned into different กลุ่ม based on their characteristics, and these groups are hierarchical. The figure below shows the seven main types of groups. Kingdom is higher than phylum, while class is lower , and so on.

For some, but not all groups there are subdivisions of these group types, such as subclass (subdivision within a class), infraorder (subdivision within a suborder i.e. infra- is below sub-), and grouping of groups e.g. superorder (group of orders).

Since the system is hierarchical, organisms belonging to the same class also belong to the same phylum and kingdom. For instance, all animals belonging to the class Reptilia (reptiles, then) also belong to the phylum Chordata (animals with a notochord, or backbone) and the kingdom Animalia (animals).

Now, the order Primates (primates), although belonging to the class Mammalia instead of Reptilia, also belongs to the phylum Chordata and kingdom Animalia. This might complicate things, but it is simply due to that the two classes Reptilia and Mammalia both belong to the same phylum and (therefore) kingdom. Notice that the name of the class is written with a capital first letter when you refer to the actual group. If you instead write carnivorans (belonging to the mammalian order Carnivora not equal to carnivore , which refers to a feeding strategy not a taxonomic group), you are really referring to the members of the group, and you do not use capital letters. This rule is useful for distinguishing between, for example, Primates and primates.

While on the subject of formal rules, the genus and species are special. First, both are always written in italics. Always. Second, the genus name is written with capital first letter, but the species never has a capital. Third, you may refer to the genus alone, e.g. ไทแรนโนซอรัส, but never ever write only the species name. Never. This is because there may be several different species with the same name, (for instance, they may be named after the same discoverer) but they never belong to the same genus (if they do, they are simply not allowed to have the same species name). In this way, we get an endless variety of specific names for an endless variety of species. Finally, you may shorten the genus name to only the first letter (capital) followed by a dot and the species name (if you do not include the species name, you may not shorten the genus name it would be silly to write something like NS. had remarkably short arms ). For example, we take the genus ไทแรนโนซอรัส (species name is excluded, since I refer to the genus), which has one species: ไทแรนโนซอรัสเร็กซ์ although some researchers argue that Tarbosaurus bataar really belongs to ไทแรนโนซอรัส in that case, we would also have Tyrannosaurus bataar (the species name is the same, but is assigned to a different genus). Notice that I should not shorten the genus name here, since it may be unclear what I mean by T. bataar.

Names can be discarded หรือ invalidated, usually by showing that two very similar species actually are the same, in which case the name given first is the one that remains valid. Rejected names are written within quotation marks, and never italicised. A classical example is that "Brontosaurus exelsus" and Apatosaurus ajax were shown to be the same species (and therefore also belonged to one and the same genus) อะพาโทซอรัส, being the first to have been described and named, was kept (both genus and species name).

Another notable convention is that families tend to end with -idae, superfamilies with -oidea and subfamilies with -inae (their members would then be -ids, -oids, and -ines, respectively). For example, we have the Hadrosauroidea (superfamily), Hadrosauridae (family) and Hadrosaurinae (subfamily).

Nowadays, the taxonomic system has been overshadowed by phylogenetic systematics, or cladistics. Cladistics is favoured because it systematically investigates evolutionary relationships, rather than just putting the organisms into different groups cladistics tries to work out how they evolved, and how closely related different organisms are. Taxonomy, on the other hand, merely groups similar-looking organisms together in order to make some sense of the overwhelming chaos of life we have out there.


Role in biology

Many DUFs are highly conserved, indicating an important role in biology. However, many such DUFs are not essential, hence their biological role often remains unknown. For instance, DUF143 is present in most bacteria and eukaryotic genomes. Ζ] However, when it was deleted in Escherichia coli no obvious phenotype was detected. Later it was shown that the proteins that contain DUF143, are ribosomal silencing factors that block the assembly of the two ribosomal subunits. Ζ] While this function is not essential, it helps the cells to adapt to low nutrient conditions by shutting down protein biosynthesis. As a result, these proteins and the DUF only become relevant when the cells starve. Ζ] It is thus believed that many DUFs (or proteins of unknown function, PUFs) are only required under certain conditions.


View options

We make a range of alignments for each Pfam-A family. You can see a description of each above . You can view these alignments in various ways but please note that some types of alignment are never generated while others may not be available for all families, most commonly because the alignments are too large to handle.

เมล็ดพันธุ์
(8)
เต็ม
(551)
Representative proteomes UniProt
(857)
RP15
(22)
RP35
(129)
RP55
(391)
RP75
(574)
Jalview ดู ดู ดู ดู ดู ดู ดู
HTML ดู ดู
PP/heatmap 1 ดู

1 Cannot generate PP/Heatmap alignments for seeds no PP data available

กุญแจ: available, not generated, &mdash ไม่สามารถใช้ได้


Major Animalia phylums

ไฟลัมพอริเฟอรา

  • ฟองน้ำ
  • Very primitive, considered barely animals.
  • Don’t have true organs or nerve or muscle cells

ไฟลัมแอนเนลิดา

  • Segmented Worms (earthworms, leeches)
  • Segmented Worms
  • Earthworms, leeches, and other segmented worms live in water or damp soil
  • Leeches were once used to suck out people’s “excess” blood and reduce harmful high blood pressure.
  • Leeches are uses today to produce anti-blood-clotting medicines, to suck blood from bruises, and to stimulate blood circulation in severed limbs that have been surgically reattached.
  • Each segment is separated from its neighbors by a membrane and has its own excretory system and branches of the main nerves and blood vessels that run the length of the animal.
  • Both segmented and unsegmented worms have definite anterior and posterior ends.
  • Food travels through the digestive system in one direction from anterior to posterior.
  • A cluster of nerve cells at the anterior end serves as a simple brain.
  • Reproduction occurs by splitting or by mutual fertilization

Mollusks (Mollusca)

  • Includes snails, clams, slugs, squid, and their relatives.
  • Mollusks have soft bodies with 3 parts
  • A mass that contains most of the organs
  • A muscular “foot” that is used in movement
  • A thick flap called a mantle, which covers the body and in most species produces a heavy shell of calcium compounds.
  • Mollusks pump water through gills
  • This is how food is also ingested for clams and oysters. Squid and octopuses use the pump for jet propulsion through the water in search of prey.

Arthropods (Arthropoda)

  • The largest animal phylum, and have jointed external skeletons.
  • 1 million species, crabs, shrimp, spiders, scorpions and insects make up this phylum
  • Arthropods molt, have heads with many sensory organs.
  • Simple and complex eyes that detect only light intensity and form images
  • Antennae that smell chemical substances in the environment, arthropods also respond to water vapor, like biting mosquitoes.
  • They reproduce sexually, where sperm is released inside the female’s body, not in water.
  • Larvae of many species develop into very different adults, a process called metamorphosis.
  • Arthropods development of resistance to insecticides demonstrates how quickly they adapt to a changing environment.
  • Short generations and many offspring increase the chance that random mutations will produce a few resistant individuals

Echinoderms (Echinodermata)

  • Sea stars and sea urchins.
  • Reproduce sexually. Sperm and eggs are released in water, where they meet and join.
  • Movement by seawater into and out of a system of internal tubes.

Chordates (Chordata)

  • Vertebrates-fish, amphibians, reptiles, birds, and mammals.
  • Four characteristics
  • Stiff dorsal rod helps to organize the embryo’s development.
  • The central nervous system (brain and spinal cord) is tubular
  • Their sides have slits just behind the head. These pharyngeal slits (pharynx means “throat”) becomes gill slits of adult fish. In air-breathing chordates, they develop into various organs such as internal parts of the ears
  • They have a tail in humans it’s the tailbone, or coccyx, which curls internally.

ช่วยเราแก้ไขรอยยิ้มของเขาด้วยบทความเก่าของคุณ ใช้เวลาไม่กี่วินาที!

- เรากำลังมองหาบทความ แล็บ และงานที่ได้รับมอบหมายก่อนหน้านี้ที่คุณสอบผ่าน!

กระทู้ที่เกี่ยวข้อง

The oldest pig on the farm, Old Major, gathered all the farm animals into the&hellip

Organisms in Archaea live in extreme conditions, such as: Very hot (hot springs, volcanoes, sea&hellip

Most directly one would say that Animal Farm is an allegory of Stalinism, growing out&hellip

Mycology Myco- = fungus-ology= study of General Characteristics of Fungi: EukaryoticDecomposers – the best recyclers&hellip

of Protists: Eukaryotic Most unicellular, some multicellular Some have a cell wall, some do not&hellip

ผู้แต่ง: William Anderson (ทีมบรรณาธิการของ Schoolworkhelper)

ติวเตอร์และนักเขียนอิสระ ครูวิทยาศาสตร์และคนรักของเรียงความ บทความตรวจสอบล่าสุด: 2020 | สถาบันเซนต์โรสแมรี่ © 2010-2021 | ครีเอทีฟคอมมอนส์ 4.0


ดูวิดีโอ: ตอนท 1 บทนำอาณาจกรสตว (สิงหาคม 2022).