জৈব যৌগ উপস্থাপনের জন্য আপনি কোন ডেটা স্ট্রাকচার ব্যবহার করবেন?


11

অণু প্রতিনিধিত্ব করতে ব্যবহার করা যেতে পারে এমন কোনও ভাল ডেটা কাঠামো আছে?

আমি ভাবছিলাম যে আমি প্রতিটি পরমাণুকে একটি শীর্ষবিন্দু তৈরি করে একটি গ্রাফ হিসাবে উপস্থাপন করব তবে জৈব যৌগগুলির পক্ষে প্রচুর কার্বন এবং হাইড্রোজেন থাকা সাধারণ বিষয়। আপনি কিভাবে এটি সংখ্যা হবে? অণুগুলি উপস্থাপন করার জন্য কি কোনও ভাল উপায় আছে তবে একই সাথে একটি কার্যকর .contains()পদ্ধতি আছে?

এর সর্বাধিক প্রাথমিক ব্যবহারগুলির মধ্যে একটি হ'ল কোনও যৌগে কার্বনিল গ্রুপ, বা বেনজাইলিক হাইড্রোজেন, এমনকি বেনজিনের রিং রয়েছে কিনা তা পরীক্ষা করা উচিত।



8
আমার মনে হয় আপনার একজন রসায়নবিদকে জিজ্ঞাসা করা উচিত। তারা এটি কীভাবে প্রোগ্রাম করবেন তা জানেন না, তবে তারা নিশ্চিতভাবে জানেন যে কীভাবে যৌগগুলি উপস্থাপন করতে হবে এবং বেশিরভাগ সম্ভাবনা সম্পর্কে রয়েছে (উদাহরণস্বরূপ, তারা ঠিক একটি ষড়্ভুজের সাহায্যে বেঞ্চিনকে উপস্থাপন করে)। এছাড়াও, কিছু বিমূর্ত স্তর রয়েছে (একটি প্রোটিনকে অ্যামিনোসিডগুলির অনুক্রম হিসাবে বর্ণনা করা হয়, পরমাণুর একটি দল হিসাবে নয়)। একবার আপনি কাগজে কীভাবে এটি উপস্থাপন করবেন তা বুঝতে পারলে প্রোগ্রামিং অংশটি বেশ সোজা হওয়া উচিত
এসজেয়ান 7676

এটি একটি চমৎকার প্রশ্ন। আশা করি আমি কিছুক্ষণ পরে কিছু চিন্তা যুক্ত করার সুযোগ পাব।
স্টিফেন

2
দুটি জিনিস মনে রাখতে হবে: মনে রাখবেন যে পরমাণুগুলির বিভিন্ন আইসোটোপ থাকতে পারে এবং মনে রাখবেন যে কয়েকটি যৌগের একই উপাদান রয়েছে তবে বন্ধনের অবস্থানের কারণে এটি পৃথক
টেলাস্টিন

উত্তর:


7

(30 বছরের সফটওয়্যার বিকাশের অভিজ্ঞতা সহ বায়োকেমিস্ট্রি স্নাতক)

অ-জৈব অণু "তুলনামূলকভাবে" সহজ। মজার বিষয়গুলি হ'ল এটি নিজের সাথে বন্ড করতে পারে যেমন সি, এন, ও, সি কারণ আপনি কিছু সত্যই মজাদার সংমিশ্রণ পেতে পারেন। বেনজিনের রিংটি খুব সাধারণ উদাহরণ। কিছু প্রকারভেদ কার্বনের একটির জন্য একটি নাইট্রোজেনকে প্রতিস্থাপন করে এবং এটি অদ্ভুত দ্রুত পায় gets

আমি "পরমাণু" অবজেক্টটি দিয়ে বিভিন্ন ধরণের পরমাণু উত্তরাধিকার সূত্রে শুরু করব

প্রতিটি "পরমাণু" অবজেক্টে বিভিন্ন বন্ডকে উপস্থাপন করার জন্য অ্যাটম অবজেক্টের একটি তালিকা থাকায় নাইট্রোজেনের নির্দিষ্ট আকারের তালিকা থাকত It এটি তখন অন্য তিনটি পরমাণুর লিঙ্ক সংরক্ষণ করতে পারে। একটি ডাবল বন্ড একটি সদৃশ এন্ট্রি হিসাবে উপস্থাপন করা যেতে পারে।

প্রতিটি পরমাণুতে এটি আইনত কীভাবে কীভাবে বন্ড হতে পারে এবং কীভাবে বিধিগুলিকে এম্বেড করা থাকবে।

সুতরাং আপনি নির্বিঘ্নে যুক্তিসঙ্গতভাবে জটিল অণুগুলি তৈরি করতে পারেন - কারণ কার্বন # 1 এর বন্ড 3 হাইড্রোজেন 2 ইত্যাদির বন্ড 1 এর সাথে যুক্ত রয়েছে because

আশা করি তা বোধগম্য ...


4

মডেলিংয়ের সাথে প্রথম প্রলোভনটি হল কোয়াড-ট্রি স্টাইলের ডেটা স্ট্রাকচার ব্যবহার করা। প্রতিটি কার্বন পরমাণুর চারটি সংযোগ থাকে, প্রতিটি অক্সিজেন দুটি এবং প্রতিটি হাইড্রোজেন একটি করে। যদিও এটি সঠিক সমাধান বলে আমি মনে করি না।

আমি মনে করি যে ইতিমধ্যে সঠিক সমাধান উদ্ভাবিত হয়েছে। ব্যবহারের জন্য ডেটা স্ট্রাকচার একটি স্ট্রিং।

এই সম্পর্কে চিন্তা. রসায়নবিদরা দীর্ঘকাল ধরে জৈব যৌগগুলির মডেলিং করে আসছেন। আপনি যদি কোনও রসায়নবিদ সিএইচ 4 দেখান, তারা তাৎক্ষণিকভাবে তাকে মিথেন হিসাবে স্বীকৃতি দেবে। তাদের CH3CH2OH দেখান এবং তারা এটিকে ইথানল হিসাবে স্বীকৃতি জানায়। তারা এটিকে স্বীকৃতি দেয় কারণ তারা CH3CH2 সংমিশ্রণটিকে "এথ" যৌগিক (যার অর্থ দুটি কার্বন পরমাণু) এবং ওএইচটিকে "অ্যানোল" বা অ্যালকোহল গ্রুপ হিসাবে সনাক্ত করে।

সাবস্ট্রিংগুলি অনুসন্ধান এবং সনাক্তকরণের জন্য আমাদের কাছে একটি পূর্ব বিদ্যমান পদ্ধতি রয়েছে - নিয়মিত প্রকাশ।

সুতরাং প্রোগ্রামক্রমে একটি জৈব যৌগ উপস্থাপন করার জন্য, আমি একটি যৌগকে একটি স্ট্রিং যুক্ত হিসাবে সংজ্ঞায়িত করব যা তার রাসায়নিক সূত্রকে প্রতিনিধিত্ব করে এবং একটি স্ট্রিং তার রাসায়নিক নাম সংজ্ঞায়িত করে। এটির এমন পদ্ধতি থাকতে পারে যা চিহ্নিত করেছিল কোন যৌগের "বিশেষ" বৈশিষ্ট্য রয়েছে।

সি # তে একটি উদাহরণ শ্রেণি:

public class OrganicCompound
{
    private Regex benzineRingRegex;

    public OrganicCompound(string formula, NameCalculator nameCalculator, Regex benzineRingRegex)
    {
        this.Formula = formula;
        this.Name = nameCalculator.CalculateName(formula);
        this.benzineRingRegex = benzineRingRegex
    }

    public string Formula { get; private set; }

    public string Name { get; private set; }

    public bool HasBenzeneRing() 
    { 
        return Regex.IsMatch(this.Formula, benzineRingRegex);
    }
}

স্পষ্টতই আপনাকে নামক্যালকুলেটর শ্রেণি লিখতে হবে যা সূত্রের ভিত্তিতে নাম গণনা করে। আপনার রেজেক্স তৈরি করতে হবে যা একটি বেঞ্জাইন রিং সংজ্ঞায়িত করে। আপনি যে গোষ্ঠীগুলির সন্ধান করতে চান তাদের প্রত্যেকের জন্য অতিরিক্ত রেজিেক্সগুলি সংজ্ঞায়িত করুন।

এইভাবে যৌগিক মডেলিংয়ের সুবিধাটি হ'ল এটি এমন ভাষায় যা শেষ ব্যবহারকারীর ব্যবসায় ডোমেনে থাকে। বিকাশকারী হিসাবে আপনার যা যা জানা দরকার তা হ'ল অনুসন্ধানের স্ট্রিংগুলি যা সহজেই কোনও পাঠ্য বই বা রসায়নবিদ দ্বারা সরবরাহ করা যেতে পারে।

যদি এই রাসায়নিকগুলির কাঠামোগত উপস্থাপনা প্রয়োজন হয় তবে আমি সূত্রের স্মাইল প্রতিনিধিত্বগুলি বজায় রাখার পরামর্শ দিচ্ছি।

স্মাইলস রাসায়নিক সূত্র উপস্থাপনা


2
আপনি কীভাবে এইভাবে isomers পরিচালনা করবেন ?

এটি একটি দুর্দান্ত প্রশ্ন। দেখা যাচ্ছে যে এটি সম্পর্কে ইতিমধ্যে চিন্তা করা হয়েছিল। আমি উত্তরে স্মাইলসের রাসায়নিক সূত্র উপস্থাপনের তথ্য যুক্ত করেছি।
স্টিফেন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.