Özet¶
Yapay zeka destekli çeviri - daha fazla bilgi ve iyileştirme önerileri
Plugin Geliştirme eğitimini tamamladınız. Bu sayfa, her bölümde neler geliştirdiğinizi özetlemekte, dağıtım konusunu ele almakta ve bundan sonra nereye gideceğinize dair rehberlik sunmaktadır.
Öğrendikleriniz¶
Bölüm 1: Plugin'leri kullanmak¶
Nextflow plugin'lerinin kullanıcı perspektifinden nasıl çalıştığını keşfettiniz.
nf-schema ve nf-co2footprint'i yüklediniz, bunları nextflow.config aracılığıyla yapılandırdınız ve plugin'lerin girdileri nasıl doğrulayabileceğini, fonksiyon ekleyebileceğini ve pipeline yaşam döngüsü olaylarına nasıl bağlanabileceğini gördünüz.
Bölüm 2: Kurulum¶
Java 21+ ile bir plugin geliştirme ortamı kurdunuz, nextflow plugin create komutunu kullanarak yeni bir plugin projesi oluşturdunuz ve Nextflow'un beklediği proje yapısını öğrendiniz: kaynak dosyalar, derleme yapılandırması ve Makefile iş akışı.
Bölüm 3: Özel fonksiyonlar¶
Bir PluginExtensionPoint sınıfında @Function anotasyonlu metotlar oluşturarak ilk genişletme noktanızı uyguladınız.
reverseGreeting ve decorateGreeting fonksiyonlarını geliştirdiniz, ardından bunları bir pipeline betiğinden içe aktarıp çağırdınız.
Bölüm 4: Test etme¶
Groovy test çerçevesini kullanarak özel fonksiyonlarınız için birim testleri yazdınız.
Testleri make test ile nasıl çalıştıracağınızı ve plugin'inizi yüklemeden önce doğru çalıştığını nasıl doğrulayacağınızı öğrendiniz.
Bölüm 5: Observer'lar¶
Pipeline yaşam döngüsü olaylarına bağlanmak için TraceObserver arayüzünü uyguladınız.
GreetingObserver (pipeline başlangıcına ve tamamlanmasına tepki veren) ve TaskCounterObserver (tamamlanan görevleri sayan) bileşenlerini geliştirdiniz, ardından bunları bir TraceObserverFactory aracılığıyla kaydettiniz.
Bölüm 6: Yapılandırma¶
Çalışma zamanında değerleri okumak için session.config.navigate() kullanarak plugin'inizi nextflow.config üzerinden yapılandırılabilir hale getirdiniz.
"Tanınmayan yapılandırma seçeneği" uyarılarını ortadan kaldırmak ve IDE desteğini etkinleştirmek amacıyla plugin'inizin seçeneklerini resmi olarak bildiren bir @ConfigScope sınıfı eklediniz.
Dağıtım¶
Plugin'iniz yerel ortamda çalışır hale geldikten sonra Nextflow plugin kayıt defteri aracılığıyla başkalarıyla paylaşabilirsiniz.
Sürüm yönetimi¶
Sürümleriniz için anlamsal sürümlemeyi takip edin:
| Sürüm değişikliği | Ne zaman kullanılır | Örnek |
|---|---|---|
| MAJOR (1.0.0 → 2.0.0) | Geriye dönük uyumsuz değişiklikler | Bir fonksiyonu kaldırmak, dönüş türlerini değiştirmek |
| MINOR (1.0.0 → 1.1.0) | Yeni özellikler, geriye dönük uyumlu | Yeni bir fonksiyon eklemek |
| PATCH (1.0.0 → 1.0.1) | Hata düzeltmeleri, geriye dönük uyumlu | Mevcut bir fonksiyondaki hatayı düzeltmek |
Her sürümden önce build.gradle dosyasındaki sürümü güncelleyin:
Kayıt defterine yayımlamak¶
Nextflow plugin kayıt defteri, plugin'leri toplulukla paylaşmanın resmi yoludur.
Yayımlama iş akışı:
- Kayıt defterinde plugin adınızı talep edin (GitHub hesabınızla giriş yapın)
- API kimlik bilgilerinizi
~/.gradle/gradle.propertiesdosyasında yapılandırın - Her şeyin çalıştığını doğrulamak için testleri çalıştırın:
make test make releasekomutuyla yayımlayın
Adım adım talimatlar için resmi yayımlama belgelerine bakın.
Yayımlandıktan sonra kullanıcılar plugin'inizi herhangi bir yerel kurulum gerektirmeden yükleyebilir:
Nextflow, ilk kullanımda plugin'i kayıt defterinden otomatik olarak indirir.
Plugin geliştirme kontrol listesi¶
- Java 21+ yüklü
-
nextflow plugin create <name> <org>ile proje oluşturuldu -
@Functionmetotlarıyla genişletme sınıfı uygulandı - Birim testleri yazıldı ve
make testile çalıştırıldı -
make installile derlendi ve yüklendi - İsteğe bağlı olarak iş akışı olayları için
TraceObserveruygulamaları eklendi - İsteğe bağlı olarak plugin yapılandırması için
ConfigScopeeklendi -
nextflow.configdosyasındaplugins { id 'plugin-id' }ile etkinleştirildi - Fonksiyonlar
include { fn } from 'plugin/plugin-id'ile içe aktarıldı - Sürümlendi ve kayıt defterine yayımlandı
Temel kod kalıpları¶
Fonksiyon tanımı:
Plugin yapılandırması:
nextflowPlugin {
provider = 'my-org'
className = 'my.org.MyPlugin'
extensionPoints = ['my.org.MyExtension']
}
İş akışlarında kullanım:
include { myFunction } from 'plugin/my-plugin'
workflow {
channel.of('a', 'b', 'c')
.map { item -> myFunction(item) }
.view()
}
Genişletme noktası özeti¶
| Tür | Sınıf/Anotasyon | Amaç |
|---|---|---|
| Fonksiyon | @Function |
İş akışlarından çağrılabilir |
| Trace Observer | TraceObserver |
İş akışı yaşam döngüsü olaylarına bağlanır |
| Yapılandırma kapsamı | @ScopeName |
nextflow.config dosyasında plugin yapılandırmasını tanımlar |
Bundan sonra ne yapmalısınız?¶
Plugin geliştirme yolculuğunuza devam etmek için bazı pratik adımlar aşağıda verilmiştir.
Gerçek bir şey geliştirin. Kendi çalışmanızdan bir kullanım senaryosu seçin: ekibinizin tekrar tekrar kullandığı özel bir fonksiyon, pipeline tamamlandığında Slack bildirimi gönderen bir observer ya da kuruluşunuzun pipeline'larında seçenekleri standartlaştıran bir yapılandırma kapsamı. Gerçek bir sorundan başlamak, anlayışınızı derinleştirmenin en hızlı yoludur.
nf-hello'yu referans olarak kullanın. nf-hello deposu, resmi minimal plugin örneğidir. Yeni projeler için iyi bir başlangıç noktasıdır; bir şeyin nasıl yapılandırıldığını kontrol etmeniz gerektiğinde de kullanışlı bir referanstır.
Resmi belgeleri okuyun. Nextflow belgeleri, bu eğitimin ötesindeki konuları kapsamaktadır: kanal fabrikaları, operatör aşırı yükleme ve gelişmiş observer kalıpları bunların arasında sayılabilir. Plugin geliştirme kılavuzu en kapsamlı referans kaynağıdır.
Mevcut plugin'leri inceleyin. Nextflow plugins deposu, nf-schema, nf-wave ve nf-tower gibi resmi plugin'lerin kaynak kodunu içermektedir. Üretim ortamındaki plugin kodunu okumak, giriş düzeyindeki örneklerin ötesine geçen kalıpları ve kuralları öğrenmenin en iyi yollarından biridir.
Ek kaynaklar¶
Resmi belgeler:
- Plugin'leri kullanmak: plugin'leri yükleme ve yapılandırmaya yönelik kapsamlı kılavuz
- Plugin geliştirmek: ayrıntılı plugin geliştirme referansı
- Yapılandırma kapsamları: plugin'ler için yapılandırma kapsamları oluşturma
Plugin keşfi:
- Nextflow Plugin Kayıt Defteri: mevcut plugin'lere göz atın ve keşfedin
- Plugin kayıt defteri belgeleri: kayıt defteri belgeleri
Örnekler ve referanslar:
- nf-hello: basit örnek plugin (başlangıç için idealdir)
- Nextflow plugins deposu: referans için resmi plugin koleksiyonu