ysn-rfd/text-dataset-tiny-code-script-py-format
USED of tahamajs/medicine_ds_persian for .parquet file USED of Alijafarixcs2/persian-it-llama2-2k for .parquet file USED of Abirate/english_quotes for .jsonl file NEW FILES (05/12/2025) NEW FILES (12/26/2025) NEW FILES (02/15/2026)
31.7k
1{2 "cells": [3 {4 "cell_type": "code",5 "execution_count": null,6 "id": "79c435c0-31ba-4c2f-81b3-90d8e670eb76",7 "metadata": {},8 "outputs": [],9 "source": [10 "import numpy as np\n",11 "import matplotlib.pyplot as plt\n",12 "from matplotlib.animation import FuncAnimation\n",13 "from mpl_toolkits.mplot3d import Axes3D, art3d\n",14 "import random\n",15 "\n",16 "# Parameters\n",17 "WORLD_SIZE = 100000\n",18 "AIRCRAFT_COUNT = 100\n",19 "RADAR_RANGE = 70000\n",20 "RADAR_ALTITUDE_LIMIT = 20000 # max altitude radar covers in meters\n",21 "SCAN_SPEED = 2.0 # degrees per frame\n",22 "BEAM_WIDTH = 5.0 # degrees width of radar beam\n",23 "TRACK_LENGTH = 20 # length of tail/track for aircrafts\n",24 "MAX_ACCELERATION = 5 # m/s^2 max change in velocity per frame\n",25 "\n",26 "# Aircraft types with properties\n",27 "AIRCRAFT_TYPES = {\n",28 " 'commercial': {'rcs_range': (10, 20), 'color': 'cyan', 'size': 30},\n",29 " 'military': {'rcs_range': (5, 12), 'color': 'red', 'size': 40},\n",30 " 'drone': {'rcs_range': (1, 4), 'color': 'yellow', 'size': 20},\n",31 " 'unknown': {'rcs_range': (0.5, 2), 'color': 'magenta', 'size': 25}\n",32 "}\n",33 "\n",34 "# Event Class with motion\n",35 "class MovingEvent3D:\n",36 " def __init__(self, evt_type, center, radius, altitude, velocity):\n",37 " self.type = evt_type\n",38 " self.center = np.array(center, dtype=float)\n",39 " self.radius = radius\n",40 " self.altitude = altitude\n",41 " self.velocity = np.array(velocity, dtype=float)\n",42 " self.active = True\n",43 " \n",44 " def update(self):\n",45 " self.center += self.velocity\n",46 " # Bounce inside world bounds for x,y\n",47 " for i in [0, 1]:\n",48 " if self.center[i] < 0 or self.center[i] > WORLD_SIZE:\n",49 " self.velocity[i] = -self.velocity[i]\n",50 " self.center[i] = np.clip(self.center[i], 0, WORLD_SIZE)\n",51 " # Bounce altitude inside radar altitude limit\n",52 " if self.altitude < 0 or self.altitude > RADAR_ALTITUDE_LIMIT:\n",53 " self.velocity[2] = -self.velocity[2]\n",54 " self.altitude = np.clip(self.altitude, 0, RADAR_ALTITUDE_LIMIT)\n",55 " # Random on/off toggle for event activity\n",56 " if random.random() < 0.001:\n",57 " self.active = not self.active\n",58 "\n",59 "def generate_moving_events_3d():\n",60 " events = []\n",61 " for _ in range(4):\n",62 " evt_type = random.choice(['storm', 'no-fly-zone', 'jamming', 'interference'])\n",63 " center = np.random.uniform(0, WORLD_SIZE, 2)\n",64 " altitude = np.random.uniform(0, RADAR_ALTITUDE_LIMIT)\n",65 " radius = {'storm': 15000, 'no-fly-zone': 10000, 'jamming': 8000, 'interference':12000}[evt_type]\n",66 " velocity = np.random.uniform(-50, 50, 3)\n",67 " events.append(MovingEvent3D(evt_type, center, radius, altitude, velocity))\n",68 " return events\n",69 "\n",70 "world_events = generate_moving_events_3d()\n",71 "\n",72 "# Generate aircrafts with altitude, track history, type and variable velocity\n",73 "def generate_aircraft_3d():\n",74 " aircrafts = []\n",75 " for i in range(AIRCRAFT_COUNT):\n",76 " ac_type = random.choices(list(AIRCRAFT_TYPES.keys()), weights=[0.5,0.3,0.15,0.05])[0]\n",77 " rcs_min, rcs_max = AIRCRAFT_TYPES[ac_type]['rcs_range']\n",78 " ac = {\n",79 " 'id': i,\n",80 " 'type': ac_type,\n",81 " 'position': np.array([*np.random.uniform(0, WORLD_SIZE, 2), np.random.uniform(0, RADAR_ALTITUDE_LIMIT)]),\n",82 " 'velocity': np.random.uniform(-50, 50, 3),\n",83 " 'rcs': random.uniform(rcs_min, rcs_max),\n",84 " 'callsign': f\"{ac_type[:2].upper()}{i:03}\",\n",85 " 'emergency': random.random() < 0.03,\n",86 " 'track': [],\n",87 " 'acceleration': np.zeros(3),\n",88 " }\n",89 " aircrafts.append(ac)\n",90 " return aircrafts\n",91 "\n",92 "aircrafts = generate_aircraft_3d()\n",93 "radar_angle = [0]\n",94 "radar_pos = np.array([WORLD_SIZE/2, WORLD_SIZE/2, 0])\n",95 "paused = [False]\n",96 "\n",97 "def is_event_active_3d(pos):\n",98 " for evt in world_events:\n",99 " if evt.active:\n",100 " d_xy = np.linalg.norm(pos[:2] - evt.center)\n",101 " dz = abs(pos[2] - evt.altitude)\n",102 " if d_xy < evt.radius and dz < evt.radius / 2:\n",103 " return evt.type\n",104 " return None\n",105 "\n",106 "def detect_3d(ac, radar_pos):\n",107 " delta = ac['position'] - radar_pos\n",108 " rng = np.linalg.norm(delta)\n",109 " if rng > RADAR_RANGE or ac['position'][2] > RADAR_ALTITUDE_LIMIT:\n",110 " return False\n",111 " bearing = (np.degrees(np.arctan2(delta[1], delta[0])) + 360) % 360\n",112 " diff = abs((bearing - radar_angle[0] + 180) % 360 - 180)\n",113 " if diff > BEAM_WIDTH / 2:\n",114 " return False\n",115 " evt = is_event_active_3d(ac['position'])\n",116 " snr_val = 20 - 20*np.log10(rng + 1) + ac['rcs']\n",117 " if evt == 'jamming':\n",118 " snr_val -= 50\n",119 " elif evt == 'storm':\n",120 " snr_val -= 15\n",121 " elif evt == 'interference':\n",122 " snr_val -= 25\n",123 " prob = 1 / (1 + np.exp(-(snr_val - 10)))\n",124 " # Introduce random detection noise\n",125 " noise = np.random.normal(0, 0.1)\n",126 " return np.random.rand() < (prob + noise)\n",127 "\n",128 "# Setup plot\n",129 "fig = plt.figure(figsize=(14, 10))\n",130 "ax = fig.add_subplot(111, projection='3d')\n",131 "ax.set_xlim(0, WORLD_SIZE)\n",132 "ax.set_ylim(0, WORLD_SIZE)\n",133 "ax.set_zlim(0, RADAR_ALTITUDE_LIMIT)\n",134 "ax.set_facecolor('black')\n",135 "\n",136 "# Scatter for different types of aircrafts (dynamic update)\n",137 "all_scatter = ax.scatter([], [], [], c=[], s=[], label='Aircraft')\n",138 "detected_scatter = ax.scatter([], [], [], c='lime', s=60, label='Detected')\n",139 "emergency_scatter = ax.scatter([], [], [], c='orange', s=80, marker='^', label='Emergency')\n",140 "radar_sweep_line, = ax.plot([], [], [], c='cyan', linewidth=3, label='Radar Sweep')\n",141 "\n",142 "# Track lines for aircrafts\n",143 "track_lines = [ax.plot([], [], [], c='white', alpha=0.3, linewidth=1)[0] for _ in range(AIRCRAFT_COUNT)]\n",144 "\n",145 "event_spheres = []\n",146 "event_colors = {'storm':'blue', 'no-fly-zone':'yellow', 'jamming':'magenta', 'interference':'purple'}\n",147 "\n",148 "def plot_sphere(center, radius, color):\n",149 " u = np.linspace(0, 2*np.pi, 20)\n",150 " v = np.linspace(0, np.pi, 20)\n",151 " x = center[0] + radius * np.outer(np.cos(u), np.sin(v))\n",152 " y = center[1] + radius * np.outer(np.sin(u), np.sin(v))\n",153 " z = center[2] + radius * np.outer(np.ones(np.size(u)), np.cos(v))\n",154 " return ax.plot_surface(x, y, z, color=color, alpha=0.15)\n",155 "\n",156 "for evt in world_events:\n",157 " sphere = plot_sphere(np.array([*evt.center, evt.altitude]), evt.radius, event_colors[evt.type])\n",158 " event_spheres.append(sphere)\n",159 "\n",160 "# Radar range circle on ground\n",161 "radar_circle = plt.Circle((radar_pos[0], radar_pos[1]), RADAR_RANGE, color='cyan', alpha=0.1)\n",162 "ax.add_patch(radar_circle)\n",163 "art3d.pathpatch_2d_to_3d(radar_circle, z=0, zdir=\"z\")\n",164 "\n",165 "def update(frame):\n",166 " if paused[0]:\n",167 " return\n",168 " \n",169 " # بهروزرسانی زاویه رادار\n",170 " radar_angle[0] = (radar_angle[0] + 1) % 360\n",171 "\n",172 " all_pos = []\n",173 " all_colors = []\n",174 " all_sizes = []\n",175 "\n",176 " detected_pos = []\n",177 " emergency_pos = []\n",178 "\n",179 " for ac in aircrafts:\n",180 " # محدود کردن سرعت\n",181 " v_mag = np.linalg.norm(ac['velocity'])\n",182 " max_speed = 250 # m/s\n",183 " if v_mag > max_speed:\n",184 " ac['velocity'] = (ac['velocity'] / v_mag) * max_speed\n",185 " \n",186 " # بهروزرسانی موقعیت\n",187 " ac['position'] += ac['velocity']\n",188 " \n",189 " # برخورد به دیوارههای جهان\n",190 " for i in [0, 1]:\n",191 " if ac['position'][i] < 0 or ac['position'][i] > WORLD_SIZE:\n",192 " ac['velocity'][i] = -ac['velocity'][i]\n",193 " ac['position'][i] = np.clip(ac['position'][i], 0, WORLD_SIZE)\n",194 " if ac['position'][2] < 0 or ac['position'][2] > RADAR_ALTITUDE_LIMIT:\n",195 " ac['velocity'][2] = -ac['velocity'][2]\n",196 " ac['position'][2] = np.clip(ac['position'][2], 0, RADAR_ALTITUDE_LIMIT)\n",197 " \n",198 " # ثبت رد حرکت\n",199 " ac['track'].append(ac['position'].copy())\n",200 " if len(ac['track']) > TRACK_LENGTH:\n",201 " ac['track'].pop(0)\n",202 " \n",203 " all_pos.append(ac['position'])\n",204 " all_colors.append(AIRCRAFT_TYPES[ac['type']]['color'])\n",205 " all_sizes.append(AIRCRAFT_TYPES[ac['type']]['size'])\n",206 " \n",207 " if detect_3d(ac, radar_pos):\n",208 " detected_pos.append(ac['position'])\n",209 " if ac['emergency']:\n",210 " emergency_pos.append(ac['position'])\n",211 "\n",212 " # تبدیل به np.array\n",213 " all_pos = np.array(all_pos)\n",214 " detected_pos = np.array(detected_pos)\n",215 " emergency_pos = np.array(emergency_pos)\n",216 "\n",217 " # آپدیت scatter کل هواپیماها\n",218 " if len(all_pos) > 0:\n",219 " all_scatter._offsets3d = (all_pos[:,0], all_pos[:,1], all_pos[:,2])\n",220 " all_scatter.set_color(all_colors)\n",221 " all_scatter.set_sizes(all_sizes)\n",222 " else:\n",223 " all_scatter._offsets3d = ([], [], [])\n",224 " all_scatter.set_color([])\n",225 " all_scatter.set_sizes([])\n",226 "\n",227 " # آپدیت scatter هواپیماهای تشخیص داده شده\n",228 " if len(detected_pos) > 0:\n",229 " detected_scatter._offsets3d = (detected_pos[:,0], detected_pos[:,1], detected_pos[:,2])\n",230 " detected_scatter.set_sizes([60]*len(detected_pos))\n",231 " else:\n",232 " detected_scatter._offsets3d = ([], [], [])\n",233 " detected_scatter.set_sizes([])\n",234 "\n",235 " # آپدیت scatter هواپیماهای اضطراری\n",236 " if len(emergency_pos) > 0:\n",237 " emergency_scatter._offsets3d = (emergency_pos[:,0], emergency_pos[:,1], emergency_pos[:,2])\n",238 " emergency_scatter.set_sizes([80]*len(emergency_pos))\n",239 " else:\n",240 " emergency_scatter._offsets3d = ([], [], [])\n",241 " emergency_scatter.set_sizes([])\n",242 "\n",243 " # بهروزرسانی خطوط رد حرکت\n",244 " for i, ac in enumerate(aircrafts):\n",245 " if len(ac['track']) >= 2:\n",246 " track_arr = np.array(ac['track'])\n",247 " track_lines[i].set_data(track_arr[:,0], track_arr[:,1])\n",248 " track_lines[i].set_3d_properties(track_arr[:,2])\n",249 " else:\n",250 " track_lines[i].set_data([], [])\n",251 " track_lines[i].set_3d_properties([])\n",252 "\n",253 " # بهروزرسانی خط اسکن رادار\n",254 " angle_rad = np.radians(radar_angle[0])\n",255 " x = [radar_pos[0], radar_pos[0] + RADAR_RANGE * np.cos(angle_rad)]\n",256 " y = [radar_pos[1], radar_pos[1] + RADAR_RANGE * np.sin(angle_rad)]\n",257 " z = [0, 0]\n",258 " radar_sweep_line.set_data(x, y)\n",259 " radar_sweep_line.set_3d_properties(z)\n",260 "\n",261 " ax.set_title(f\"3D Radar Simulation - Scan Angle: {radar_angle[0]:.1f}°\")\n",262 "\n",263 " \n",264 "def on_key(event):\n",265 " if event.key == ' ':\n",266 " paused[0] = not paused[0]\n",267 "\n",268 "fig.canvas.mpl_connect('key_press_event', on_key)\n",269 "\n",270 "ani = FuncAnimation(fig, update, interval=50)\n",271 "plt.legend(loc='upper right')\n",272 "plt.show()\n"273 ]274 }275 ],276 "metadata": {277 "kernelspec": {278 "display_name": "Python [conda env:base] *",279 "language": "python",280 "name": "conda-base-py"281 },282 "language_info": {283 "codemirror_mode": {284 "name": "ipython",285 "version": 3286 },287 "file_extension": ".py",288 "mimetype": "text/x-python",289 "name": "python",290 "nbconvert_exporter": "python",291 "pygments_lexer": "ipython3",292 "version": "3.12.7"293 }294 },295 "nbformat": 4,296 "nbformat_minor": 5297}298 