নিদর্শন বিশ্লেষণের জন্য ডেটা ভিজ্যুয়ালাইজেশন (ভাষা-স্বতন্ত্র, তবে আর পছন্দসই)


11

আমি কোনও ডিস্ক চিত্র থেকে বাইটগুলি প্লট করতে চাই যাতে সেগুলির কোনও প্যাটার্ন বুঝতে পারি। এটি মূলত একটি একাডেমিক কাজ, যেহেতু আমি প্রায় নিশ্চিত যে এই প্যাটার্নটি একটি ডিস্ক পরীক্ষার প্রোগ্রাম দ্বারা তৈরি করা হয়েছিল, তবে আমি যাইহোক এটির বিপরীত প্রকৌশলী করতে চাই।

আমি ইতিমধ্যে জানি যে প্যাটার্নটি সামঞ্জস্য করা হয়েছে, 256 অক্ষরের পর্যায়ক্রমিক সাথে।

আমি এই তথ্যটি দেখার জন্য দুটি উপায় কল্পনা করতে পারি: হয় কোনও 16x16 বিমান সময় (3 মাত্রা) এর মাধ্যমে দেখা হয়, যেখানে প্রতিটি পিক্সেলের রঙ চরিত্রের জন্য ASCII কোড হয়, বা প্রতিটি সময়কালের জন্য 256 পিক্সেল লাইন হয় (2 মাত্রা)।

এটি xxd(32x16) মাধ্যমে দেখা প্যাটার্নের একটি স্ন্যাপশট (আপনি একাধিক দেখতে পারেন ):

বিশ্লেষণের নিদর্শন

যে কোনও উপায়ে, আমি এই তথ্যটি দেখার জন্য একটি উপায় অনুসন্ধান করার চেষ্টা করছি। সিগন্যাল বিশ্লেষণে এটি কারও পক্ষে সম্ভবত শক্ত নয় তবে আমি ওপেন সোর্স সফ্টওয়্যার ব্যবহার করে কোনও উপায় খুঁজে পাচ্ছি না বলে মনে হয়।

আমি মতলব বা ম্যাথমেটিকাকে এড়াতে চাই এবং আমি আর-তে একটি উত্তর পছন্দ করব, যেহেতু আমি সম্প্রতি এটি শিখছি, তবে যাইহোক, যে কোনও ভাষা স্বাগত।


আপডেট, 2014-07-25: নীচে এমিরের উত্তর দেওয়াতে, প্যাটার্নটির প্রথম 30MB দেওয়া 256 এর পরিবর্তে 512 এ সারিবদ্ধভাবে দেখানো হয়েছে (এই প্রান্তিককরণটি আরও ভাল দেখাচ্ছে):

গ্রাফিকাল প্যাটার্ন

আরও কোনও ধারণা স্বাগত!


উপাত্তের উদাহরণ / অংশ (সম্ভবত কয়েকটি এমবি হতে পারে) আকর্ষণীয় হতে পারে।
মার্কো 13

আপনি যদি ডেটা পর্যায়ক্রমিক প্রকৃতির সাথে আগ্রহী হন তবে ডেটাটির ডিএফটি একবার দেখবেন তা প্রকাশ পাবে।
mrmcgreg

@ এমআরএমসিগ্রিগ: ডিএফটি কীভাবে কাজ করে তা আমাকে আবারও শিখতে হবে। আমার সিগন্যাল এবং সিস্টেমের ক্লাসগুলিতে আরও মনোযোগ দেওয়া উচিত ছিল :)
ভাল্মিকি আর্কুইসানডাস

উত্তর:


5

আমি একটি চাক্ষুষ বিশ্লেষণ ব্যবহার করব। যেহেতু আপনি জানেন যে প্রতি 256 বাইটের একটি পুনরাবৃত্তি রয়েছে, তাই 256 পিক্সেল প্রশস্ত অনেকগুলি গভীর করে একটি চিত্র তৈরি করুন এবং উজ্জ্বলতা ব্যবহার করে ডেটা এনকোড করুন। (I) অজগরটিতে এটি দেখতে এই রকম হবে:

import os, numpy, matplotlib.pyplot as plt

%matplotlib inline

def read_in_chunks(infile, chunk_size=256):
    while True:
        chunk = infile.read(chunk_size)
        if chunk:
            yield chunk
        else:
            # The chunk was empty, which means we're at the end
            # of the file
            return

fname = 'enter something here'
srcfile = open(fname, 'rb')
height = 1 + os.path.getsize(fname)/256
data = numpy.zeros((height, 256), dtype=numpy.uint8)    

for i, line in enumerate(read_in_chunks(srcfile)):
    vals = list(map(int, line))
    data[i,:len(vals)] = vals

plt.imshow(data, aspect=1e-2);

পিডিএফ দেখতে এমন দেখাচ্ছে:

একটি পিডিএফ ফাইল ভিজ্যুয়ালাইজড

একটি 256 বাইট পর্যায়ক্রমিক প্যাটার্নটি নিজেকে উল্লম্ব রেখা হিসাবে প্রকাশ করতে পারে। শিরোনাম এবং লেজ বাদে এটি বেশ গোলমাল দেখাচ্ছে looks


এটি আমি যা খুঁজছি তার মতো দেখতে বেশ ভালো লাগে। আমি এখন ফাইনালের জন্য পড়াশোনা করছি এবং এ নিয়ে আবার ভাবতে সময় নিতে পারছি না, তবে যত তাড়াতাড়ি আমি আপনাকে জানাতে পারি। "একটি 256 বাইট পর্যায়ক্রমিক প্যাটার্নটি উল্লম্ব রেখা হিসাবে প্রকাশিত হত" " - আমি ঠিক কী ভাবছিলাম আমি এমন একটি চিত্রও দেখাতে পারি যেখানে আমি একই লাইনে সমস্ত 256 বাইট রেখেছি এবং এটি পাঠ্যে ইতিমধ্যে সুস্পষ্ট। এর থেকে কী বেরিয়ে আসবে সে সম্পর্কে আমি বেশ কৌতূহলী :)
ভাল্মিকি আর্কুইসান্দাস

আমি এটি ডেবিয়ান লিনাক্সে চালাচ্ছি বলে মনে হচ্ছে না। আমি প্যাকেজ ইনস্টল python-scitoolsএবং ipython। ত্রুটি বার্তাটি হ'ল ValueError: invalid literal for int() with base 10: '#'। আমি এটি যেভাবেই এটি কাজ করতে পারি কিনা তা আমি দেখতে পাচ্ছি ...
ভাল্মিকি আর্কুইসান্দাস

আমি সফল হয়েছি (সরাসরি কোডটি অভ্যন্তরে চালিয়ে , এবং ipythonmap(int, line)map(ord, line)
এটিকে

আমাকে এক বছর সময় নিয়েছে তবে আমি এই উত্তরটি গ্রহণ করার সিদ্ধান্ত নিয়েছি। আমি এখনও জানি না যে বিটস্ট্রিমটি কী, তবে আমি সম্ভবত এটি খুঁজে পাব না। এটি একটি দুর্দান্ত প্যাটার্ন আছে, যদিও!
ভালমিকি আরকিউসানডাস

1

আমি সিগন্যাল বিশ্লেষণ সম্পর্কে প্রায় কিছুই জানি না, তবে ত্রি-মাত্রিক ভিজ্যুয়ালাইজেশন খুব সহজেই আর ব্যবহার করে করা যেতে পারে বিশেষত আপনার প্রয়োজন হবে reshape2এবং ggplot2প্যাকেজগুলি। ধরে নিই আপনার ডেটা প্রশস্ত (যেমন [এন এক্স 256] আকার), প্রথমে আপনাকে প্যাকেজ থেকে ফাংশন ব্যবহার করে এটিকে দীর্ঘ বিন্যাসে রূপান্তর করতে হবে । তারপরে জ্যামিতি ব্যবহার করুন । এখানে একটি সুন্দর রেসিপি সঙ্গে সারকথাmelt()reshape2geom_tileggplot2


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

এটিকে লোড করবেন না এবং এটি কোনও ডেটাফ্রেমের মতো আচরণ করবেন না এটি কোনও ডেটাফ্রেম নয়, এটি বাইটের প্রবাহ।
স্পেসডম্যান

1

আমি এর rasterজন্য প্যাকেজটি দেখব , যা কাঁচা বাইনারি ডেটা পড়তে পারে এবং এটি এনএক্সএম গ্রিড হিসাবে উপস্থাপন করতে পারে। এমনকি এটি পুরো ফাইলটিতে না পড়ে বড় বাইনারি গ্রিডের সাবসেটগুলিও বের করতে পারে (আর রাস্টার বস্তু নিজেই কেবলমাত্র ডেটা নয়, কেবলমাত্র ডেটার একটি প্রক্সি)।

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