حاسبة عدد ثراء الأنواع
ثراء الأنواع هو عدد الأنواع المختلفة المرصودة داخل عينة محددة. ألصقوا اسماً واحداً في كل سطر، أو افصلوا الأسماء بفواصل أو فواصل منقوطة أو علامات جدولة، وستزيل الحاسبة المشاهدات المكررة قبل إعادة العدد.
شغّل الأداة مجانًا
كما تعرض العدد الكلي للمشاهدات والتسميات المختلفة التي تعرفت إليها، حتى تتمكنوا من مراجعة النتيجة. الحساب حتمي ولا يجري استعلامات خارجية، ويمكن استخدامه في المتصفح أو تكراره عبر API بالقواعد نفسها.
جهزوا عينة تمثل وحدة بيئية واحدة
ابدؤوا بمشاهدات من عينة محددة بوضوح، مثل مربع مسح واحد أو زيارة لمسار خطي أو فترة تشغيل مصيدة أو مكتبة تسلسل بعد إسناد التصنيف. أدخلوا تسمية النوع لكل مشاهدة، بما في ذلك التكرارات. فإذا ظهر البلوط خمس مرات، أدخلوا البلوط خمس مرات؛ إذ يحتفظ total_observations بهذه المعلومة، بينما يحسب species_richness البلوط نوعاً واحداً فقط. افصلوا التسميات بفواصل الأسطر أو الفواصل أو الفواصل المنقوطة أو علامات الجدولة. تُهمل المدخلات الفارغة والمسافات المحيطة، وتُختصر سلاسل المسافات الداخلية كي لا ينشأ نوع زائف بسبب تنسيق عارض. حافظوا على المرتبة التصنيفية نفسها في العينة كلها. فمزج أسماء الأنواع بأسماء الأجناس أو المجموعات غير الرسمية أو الفئات غير المحددة قد يشوه النتيجة، لأن الحاسبة لا تستنتج التكافؤ البيولوجي. وحدوا المترادفات والتهجئات والتحديثات التصنيفية مسبقاً عندما تشير إلى الكائن نفسه. لا تنشئ الفروق بين الحروف الكبيرة والصغيرة نوعاً جديداً افتراضياً. فعّلوا التمييز فقط إذا كان لحالة الحروف معنى حقيقي في نظام التسمية لديكم. ولا تجمعوا مواقع أو تواريخ غير مترابطة إلا إذا كان الهدف صراحة قياس الثراء المجمع.
افهموا بدقة كيفية إنتاج عدد الأنواع
تقسم الخوارزمية النص أولاً عند كل فاصل مدعوم. ثم تزيل المسافات من طرفي كل تسمية، وتوحد سلاسل المسافات، وتتجاهل المدخلات الفارغة. بعد ذلك تنشئ مفتاح مقارنة لكل مشاهدة. في الإعداد الافتراضي الذي لا يميز حالة الحروف، يكون المفتاح صورة التسمية بأحرف صغيرة؛ وعند تفعيل التمييز تصبح التسمية المنظفة نفسها هي المفتاح. تُحفظ أول مرة يظهر فيها كل مفتاح داخل distinct_species. أما مرات الظهور اللاحقة فتزيد total_observations ولا تزيد species_richness. ومن ثم يساوي الثراء حجم مجموعة المفاتيح المنظفة الفريدة. تحافظ القائمة المعادة على ترتيب أول ظهور، مما يتيح مقارنتها مباشرة بالبيانات الأصلية من دون ترتيب أبجدي غير متوقع. لا تطبق الخوارزمية ترجيح الوفرة أو مؤشرات التنوع أو التخلخل أو البحث في قاعدة تصنيفية أو التقدير الإحصائي. فالنوع المرصود مرة واحدة يسهم في الثراء بقدر النوع المرصود مرات كثيرة. لذلك تمثل النتيجة عدداً أساسياً مرصوداً، لا تقديراً للأنواع التي لم تُكتشف. وتضمن القواعد الحتمية النتيجة نفسها للمدخلات والإعدادات نفسها. إذا بدا العدد مفاجئاً، فراجعوا distinct_species؛ فكثيراً ما تكشف الأسماء المتشابهة جداً عن تهجئة غير متسقة أو تصنيف غير موحد.
فسروا الثراء ضمن الحدود التي تسمح بها العينة
يسهل عرض ثراء الأنواع المرصود، لكنه يتأثر بشدة بجهد المعاينة واحتمال الكشف والموسم وتغطية الموائل وجودة التعرف. غالباً ما تضم العينة الأكبر أنواعاً أكثر لأنها تمنح الأنواع النادرة فرصاً إضافية للظهور. لا تقارنوا القيم إلا عندما تكون طرائق الجمع والجهود متوافقة إلى حد معقول، أو أرفقوا المقارنة بالتخلخل أو بطريقة أخرى تعالج اختلاف المعاينة. ولا يصف الثراء تكافؤ الوفرة. فقد يضم مجتمعان ستة أنواع لكل منهما، مع سيادة نوع واحد في الأول وتوازن الوفرة في الثاني. استخدموا مقياساً حساساً للوفرة عندما يكون هذا الفرق مهماً. احتفظوا بقيمة total_observations وبيانات المعاينة الأصلية إلى جانب species_richness حتى يستطيع القارئ تقييم السياق. تتعامل الحاسبة مع التسميات بوصفها معرفات لا أصنافاً جرى التحقق منها؛ فيبقى المترادفان منفصلين ما لم توحدوهما، وتبقى الكائنات المختلفة مجمعة إذا وُضعت تحت تسمية واسعة جداً. حافظوا على قواعد تسمية مستقرة بين جولات الرصد، وسجلوا أي دمج أو فصل تصنيفي. تبلغ كلفة طلب API مبلغ $0.002، بينما يتاح الحساب الحتمي نفسه مجاناً في المتصفح. وعند إعداد التقارير، صفوا القيمة بأنها الثراء المرصود في العينة المحددة، لا العدد الكامل للأنواع الموجودة في النظام البيئي الأوسع.
حالات الاستخدام
تلخيص مسح ميداني
احسبوا التسميات الفريدة من المربعات أو المسارات أو القوائم المتكررة مع الاحتفاظ بعدد المشاهدات الكلي.
مقارنة عينات الرصد
أنتجوا قيماً متسقة للثراء المرصود في مواقع أو تواريخ دُرست بالبروتوكول نفسه.
تدقيق مسار للتنوع الحيوي
راجعوا قائمة التسميات المختلفة لاكتشاف مشكلات التهجئة أو حالة الحروف أو توحيد التصنيف.
الأسئلة الشائعة
ما المقصود بثراء الأنواع؟
هو عدد الأنواع المختلفة المرصودة في عينة محددة، ولا تدخل وفرتها النسبية في الحساب.
هل تزيد المشاهدات المكررة ثراء الأنواع؟
لا. فهي تزيد total_observations، لكن كل تسمية منظفة مختلفة تضيف واحداً فقط إلى species_richness.
هل تميز المقارنة بين حالة الحروف؟
لا تفعل ذلك افتراضياً. فعّلوا case_sensitive عندما يلزم أن تميز حالة الحروف بين التسميات.
هل تحل الحاسبة المترادفات أو تتحقق من التصنيف؟
لا. تقارن الحاسبة تسميات نصية منظفة من دون الرجوع إلى قاعدة تصنيفية. وحدوا المترادفات والتهجئات مسبقاً.
هل يمكن مقارنة عينات مختلفة الحجم مباشرة؟
يلزم الحذر. تميل العينات الأكبر إلى كشف أنواع أكثر؛ فكروا في توحيد الجهد أو التخلخل أو طريقة مناسبة أخرى.
ما تكلفة طلب API؟
يكلف كل طلب $0.002. ويتاح الحساب الحتمي نفسه مجاناً في المتصفح.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/bio/species-richness \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Oak\nPine\nOak\nBirch\nPine\nWillow"}'const res = await fetch("https://api.kit.forhosting.com/bio/species-richness", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Oak\nPine\nOak\nBirch\nPine\nWillow"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/bio/species-richness",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Oak\nPine\nOak\nBirch\nPine\nWillow"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/bio/species-richness", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Oak\\nPine\\nOak\\nBirch\\nPine\\nWillow"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Oak\nPine\nOak\nBirch\nPine\nWillow"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/bio/species-richness", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "Oak\nPine\nOak\nBirch\nPine\nWillow"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "bio.species_richness",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_chars | 200000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |